Tampermonkey vs Violentmonkey: Which to Use

Tampermonkey and Violentmonkey are the two most widely used userscript managers. Both let you run scripts from a page like the HatScripts /userscripts hub, but they differ in licensing, browser support and a few API details that matter once you start writing or maintaining scripts.
Licensing and openness
Violentmonkey is fully open source, published under an MIT-style license, with its source available for review and modification. Tampermonkey is closed source. The core extension is free on most browsers, but the Safari version and some advanced features require a paid license.
For developers who care about auditing exactly what code runs in their browser, Violentmonkey removes any doubt because the entire codebase is public. Tampermonkey has a long track record and a large user base, but you are trusting the vendor rather than reading the source yourself.
Openness also affects how quickly bugs get fixed. With Violentmonkey, anyone can file a pull request against a specific behavior, and the change history is visible to anyone who wants to check it. With Tampermonkey, you rely on the maintainer’s own release notes and changelog, which are generally thorough but not independently verifiable in the same way.
Browser support, including Chrome MV3
Both extensions run on Chrome, Firefox, Edge and Opera. The bigger question in 2026 is Manifest V3. Chrome has phased out Manifest V2, and both Tampermonkey and Violentmonkey have shipped MV3-compatible builds that rely on the userScripts API and declarativeNetRequest where needed.
Firefox has been slower to force MV3 adoption and still supports the older APIs that userscript managers depend on, so both tools behave more predictably there. On Safari, Tampermonkey offers a paid App Store extension, while Violentmonkey has no official Safari build, which pushes Safari users toward alternatives such as the Userscripts app.
On Chromium-based Edge and Opera, both managers install straight from their respective store listings and behave the same as on Chrome, since these browsers share the same extension platform. Brave also works the same way, though its aggressive shield settings can occasionally interfere with a script’s own network requests, which is worth checking separately from the manager’s own settings.
Sync and backup
Tampermonkey supports sync to Google Drive, Dropbox, OneDrive, a WebDAV server or a local file, configured from its dashboard. Violentmonkey supports sync to Google Drive, OneDrive, WebDAV and a generic REST-based sync server, and both can export your scripts as a zip file for manual backup.
Neither tool syncs values stored by GM_setValue automatically unless you explicitly include settings in the export, so always check what a sync profile covers before relying on it as your only backup.
Editor and dashboard differences
Tampermonkey ships a dashboard with a built-in code editor, syntax highlighting, a diff view for updates and a searchable script list. Violentmonkey keeps its interface leaner and often opens your system default editor or a simpler in-browser editor instead of a full IDE-style experience.
If you install scripts from the HatScripts /userscripts hub and rarely edit them yourself, this difference will not matter much. If you actively write and debug userscripts, Tampermonkey’s editor tends to be more comfortable for longer sessions.
Both dashboards let you enable or disable individual scripts, view per-script storage, and inspect the exact metadata block that was parsed at install time. This last detail matters when a script behaves differently than expected, since it lets you confirm whether the manager actually read the @match or @grant lines you think it did.
GM_ versus GM. promise APIs
Both managers support the older synchronous-style GM_ functions such as GM_setValue and GM_xmlhttpRequest, and the newer promise-based GM. functions such as GM.setValue and GM.xmlHttpRequest. The promise versions are part of a community specification aimed at standardizing behavior across managers.
Violentmonkey has generally been quicker to adopt new GM. APIs as they are proposed, while Tampermonkey supports the same set but sometimes lags slightly on the newest additions. For portability across managers, prefer the GM. promise APIs when writing new scripts.
Performance and resource use
Both extensions are lightweight in normal use. Differences in memory and CPU use are more tied to the number and complexity of scripts you have enabled than to the manager itself. Disabling scripts you do not need on a given site reduces injection overhead regardless of which manager you choose.
A useful habit is to periodically open your browser’s built-in task manager and check how much memory the extension process is using after a normal browsing session. If it grows noticeably over time, look for a specific script that runs a polling loop or interval timer that never clears, since that is a far more common cause of creeping memory use than the manager itself.
Security review habits worth adopting either way
Regardless of which manager you pick, the manager itself is only half the security picture. The scripts you install run with whatever permissions their @grant lines request, so a habit of reading the metadata block before installing, and again after any update, matters more than the choice between Tampermonkey and Violentmonkey.
- Read the @match pattern and confirm it is not broader than the script actually needs
- Check @grant for GM_xmlhttpRequest or GM_cookie access, which indicate the script can read or send data beyond the current page
- Look at @connect entries to see which external domains the script is allowed to talk to
- Re-read the diff shown on update prompts, since an update can quietly add new permissions
- Prefer scripts with a visible source you can read over minified or obfuscated code
Recommendation by use case
If you want an open source tool you can inspect line by line, or you use Firefox as your primary browser, Violentmonkey is a solid default. If you want the most polished editor, the widest documentation and you are fine with closed source software, Tampermonkey is the more common choice.
- Safari users: Tampermonkey (paid) or the Userscripts app, since Violentmonkey has no Safari build
- Firefox users who want open source: Violentmonkey
- Chrome users who want the richest editor: Tampermonkey
- Teams needing REST-based self-hosted sync: Violentmonkey
- Anyone unsure: install both once, compare on your own machine, then remove the one you do not keep
Version numbering and update behaviour
Both managers compare the installed @version string against the value found at the script’s @updateURL to decide whether an update is available. Neither manager enforces semantic versioning, so a script author can use any scheme they like, but a version string that does not sort in the expected order can confuse the comparison and cause a manager to think an older file is newer, or vice versa.
Tampermonkey shows a side by side diff of the old and new source before you accept an update, which makes it straightforward to spot a change in @grant or @connect lines at a glance. Violentmonkey also shows the new metadata block and source, though the presentation is simpler and puts more weight on you actually reading the changed lines rather than a highlighted diff.
- Both managers check for updates on a timer, usually once a day by default, and both let you trigger a manual check from the dashboard
- A script with no @updateURL cannot be auto-updated by either manager and needs to be reinstalled manually when a new version is published
- Downgrading to an older version is not directly supported by either dashboard, so keep a copy of any version you might want to revert to
- If a script’s @namespace changes between versions, both managers can treat it as a new, separate installation rather than an update
- A failed update fetch, for example because @updateURL is unreachable, silently leaves the old version running rather than breaking the script
Mobile browser support compared
Neither Tampermonkey nor Violentmonkey runs on the default mobile browser on iOS or Android, since neither platform’s stock browser supports general purpose extensions. On Android, both managers work through Kiwi Browser and other Chromium-based browsers that have added Chrome extension support, installed the same way as on desktop Chrome.
Firefox for Android also supports a limited set of extensions through its own add-on collection, and Violentmonkey is one of the userscript managers available there. Tampermonkey’s mobile presence is more limited, and on iOS specifically it depends on the Safari extension model rather than a Chrome-style install, covered separately for Safari users.
- Kiwi Browser on Android: both managers install from the Chrome Web Store the same way as on desktop Chrome
- Firefox for Android: Violentmonkey is available through Firefox’s add-on collection for Android
- Default Chrome on Android: neither manager works, since Google does not allow general extensions in mobile Chrome
- iOS: only Tampermonkey’s Safari build applies, through the Safari Extensions settings screen, not through a Chrome-style store install
Frequently asked questions
Can I run both extensions at the same time? Yes, but it is not recommended, since both will try to intercept the same .user.js links and you will get duplicate install prompts. Pick one as your active manager and disable the other.
Does switching managers require reinstalling every script? Generally yes. Export your scripts from the old manager as a zip or individual .user.js files, then import them into the new manager. Values stored with GM_setValue do not transfer automatically between managers.
Is one manager meaningfully faster than the other? Not in any way that shows up in normal use. Any perceived difference is far more likely caused by the number of active scripts and what they do on page load.
Questions about the tools in this guide
Short answers about the hubs this article touches, each linking straight to the tool.