A powerful, open-source userscript manager built on Chrome Manifest V3
Chrome Web Store β’ Features β’ Installation β’ Quick Start β’ Security β’ Contributing
Full Greasemonkey/Tampermonkey API compatibility with promise-based GM.* async variants.
| Storage | Network | UI | Utilities |
|---|---|---|---|
GM_getValue |
GM_xmlhttpRequest |
GM_addStyle |
GM_info |
GM_setValue |
GM_download |
GM_notification |
GM_log |
GM_deleteValue |
GM_webRequest |
GM_registerMenuCommand |
GM_setClipboard |
GM_listValues |
GM_unregisterMenuCommand |
GM_openInTab |
|
GM_getValues |
GM_getMenuCommands |
GM_getResourceText |
|
GM_setValues |
GM_addElement |
GM_getResourceURL |
|
GM_deleteValues |
GM_head |
GM_loadScript |
GM_cookie |
GM_addValueChangeListener |
GM_audio |
GM_focusTab |
|
GM_removeValueChangeListener |
GM_closeTab |
Plus GM_getTab, GM_saveTab, GM_getTabs for cross-tab state, window.close, window.focus, window.onurlchange grants, @top-level-await, @delay, and @nodownload support.
- Auto-detect installation β Navigate to any
.user.jsURL - One-click toggle β Enable/disable scripts individually or globally
- Auto-updates β Configurable update intervals with notifications
- Per-script update check β Check and apply updates for individual scripts inline
- Version tracking β Installed vs. available version comparison
- Tags & search β Organize and filter scripts by name, description, or metadata
- Popup quick-edit β Click any script in the toolbar popup to jump straight into the editor
- Find Scripts β Search and install userscripts from Greasy Fork and other sources directly in the dashboard
- Bulk operations β Select multiple scripts to enable, disable, update, reset, or delete with progress tracking
- Per-script export β Export individual scripts as
.user.jsfiles - Script templates β 6 starter templates (blank, page modifier, CSS injector, API interceptor, SPA script, cross-site request)
- Version rollback β Auto-saves last 3 versions on update; one-click rollback from info panel
- Storage quota monitor β Visual quota bar with warning when approaching Chrome's 10MB limit
- Tag filtering β Filter scripts by
@tagmetadata in the dashboard dropdown - Drag-and-drop install β Drop
.user.jsor.zipfiles onto the dashboard to install - Shift+click multi-select β Select ranges of scripts with Shift+click
- Library browser β Search and add CDN libraries (
@require) from cdnjs directly in the editor - Advanced filters β Filter scripts by grant type, error status, update URL, scope breadth, or tags
- Code snippets β Insert GM API templates directly from the editor toolbar
- Keyboard shortcuts β Ctrl+N new, Alt+1-5 switch tabs, Ctrl+W close tab, Ctrl+Tab cycle tabs
- Script pinning β Pin favorite scripts to the top of the list
- Pattern tester β Test any URL to see which scripts would run on it
- Activity log β Timestamped log of all installs, updates, and errors
- Script health β Visual indicators for scripts with errors or stale updates
- Tampermonkey import β Import from Tampermonkey's
.txtbackup format - Batch URL install β Paste multiple
.user.jsURLs to install at once - Script notes β Personal notes per script, saved with settings
- Version diff view β Compare any previous version against current code
- Script folders β Organize scripts into color-coded folders with drag-and-drop
- Workspaces β Named snapshots of enabled/disabled script states for quick context switching
- Command palette β Ctrl+K to fuzzy-search actions, scripts, and settings
- Execution profiling β Per-script timing stats with color-coded performance badges
- Performance budgets β Configurable time budget per script with visual over-budget indicators
- Column visibility β Toggle which columns appear in the script table
- Full-text search β Prefix with
code:to search inside script source code - Copy install URL β One-click clipboard copy of script download/update URL
- Full
@match,@include,@exclude,@exclude-matchsupport - User overrides β Add custom match patterns without editing script code
- Per-pattern toggles β Disable individual original patterns per-script
- Glob and regex pattern support
Sync scripts across devices with 5 providers:
| Provider | Method |
|---|---|
| WebDAV | Self-hosted or any WebDAV server |
| Google Drive | OAuth2 integration |
| Dropbox | App folder sync |
| OneDrive | Microsoft account integration |
| Browser Sync | Chrome's built-in sync |
- Monaco Editor β Same editor that powers VS Code, loaded in a sandboxed iframe
- Tabbed editing β Open multiple scripts simultaneously with browser-style tabs (middle-click to close)
- Unsaved indicators β Visual dot on tabs with pending changes
- 4 editor themes β Dark, Light, Catppuccin Mocha, OLED
- Status bar β Line count and cursor position display
- IntelliSense β Autocomplete for GM API functions and
@metadatadirectives - Code folding, bracket matching, bracket pair colorization, auto-close
- Search & replace (
Ctrl+F/Ctrl+H) - Real-time userscript metadata linting
- Code beautifier β One-click indentation normalization
- Snippet insert β 7 GM API code templates from the toolbar
- Open in vscode.dev for external editing
- Network inspector β View all GM_xmlhttpRequest + fetch/XHR/WebSocket/sendBeacon calls from userscripts
- Execution profiler β See run count, avg/total time, and errors per script
- HAR export β Export network log in standard HAR format
- Auto-refreshes every 3 seconds
- Persistent companion panel β Always visible alongside the active page (Chrome 114+)
- Shows scripts running on the current page with toggles, timing badges, and error dots
- Live updates on tab navigation
- Quick access to dashboard and script creation
- Cryptographic signing β Sign scripts with your Ed25519 keypair
- Signature verification β Verify integrity of installed scripts
- Trust store β Manage trusted author public keys
@signaturemetadata tag embedded in script header
- AST-based analyzer β 31 risk pattern detectors using Acorn parser
- Zero false positives β AST walk ignores comments and strings
- Risk scoring β Color-coded risk level (minimal/low/medium/high)
- Categories: execution, data access, network, fingerprinting, obfuscation, mining, DOM hijacking
- Shown on install page before script installation
- Script isolation β
USER_SCRIPTworld viachrome.userScriptsAPI, per-script worldId (Chrome 133+) - Static analysis β AST-based risk scoring with 31 pattern detectors on every install
- Script signing β Ed25519 cryptographic signatures with trust store
- Blacklist system β Remote + manual blacklists
- Permission analysis β Visual
@grantpermission breakdown on install @connectvalidation β Restrict XHR domains- SRI verification β
@requireURLs with#sha256=hash are verified after fetch - CSP handling β Works on sites with strict Content Security Policies
- Zero telemetry β No phone home, all data stays local
- ZIP β Full backup with scripts + settings
- JSON β Text-based backup
- File import β Drag and drop
.user.jsor.zipfiles anywhere on the dashboard - URL import β Install directly from any URL
- Clipboard import β Paste script code directly
Available in 8 languages:
English β’ German β’ Spanish β’ French β’ Japanese β’ Portuguese β’ Russian β’ Chinese
Click to expand all v2.0 features (58 major features)
- Built-in Script Store β Search, browse, and install scripts from Greasy Fork directly in the dashboard
- OpenUserJS Integration β Additional script source alongside Greasy Fork
- Script Collections β Group scripts into installable bundles with 4 built-in packs
- Smart Recommendations β AI-powered script suggestions based on browsing patterns
- Script Sharing β QR code generation, data URL encoding, standalone HTML export
- AI Assistant β Generate scripts from natural language, explain code, security reviews, auto-fix errors
- Supports OpenAI, Anthropic, Ollama (local), and custom endpoints
- Encrypted API key storage (AES-256-GCM with PBKDF2)
- Advanced Linter β 21 rules with one-click auto-fix, hardcoded secret detection
- Script Diff Tool β Side-by-side and unified diff with merge support
- Performance Dashboard β Impact scores, sparkline trends, auto-disable recommendations
- Script Analytics β 90-day execution stats with canvas charts (line/bar/donut)
- Activity Heatmap β 365-day GitHub-style contribution grid
- Error Log β 500-entry structured log with JSON/CSV/text export
- CSP Compatibility Reporter β Track which sites block scripts with workaround suggestions
- Script Debugger β Per-script console capture, live reload, variable inspector, error timeline
- DevTools Waterfall β Canvas-based network timeline with request body inspector
- Visual Pattern Builder β Construct @match patterns by decomposing URLs
- 30+ Code Snippets β Searchable library across 8 categories with editor integration
- Custom Templates β Save/share script templates with variable substitution wizard
- Card View β Grid layout alternative with site favicons and status indicators
- 10 Theme Presets β Dark, Light, Catppuccin, OLED, Nord, Dracula, Solarized, Monokai, Gruvbox
- Custom Theme Editor β 21 CSS variable pickers with live preview and import/export
- Keyboard Navigation β Full keyboard-first nav with optional Vim keybindings
- Onboarding Wizard β 5-step welcome flow with Tampermonkey import
- What's New Modal β Changelog shown once per version update
- Gamification β 31 achievements, streaks, user levels, shareable profile cards
- Zero-Config Cloud Sync β One-click Google Drive sync via chrome.identity
- GitHub Gist Integration β Import/export/sync scripts with GitHub Gists
- Automated Backups β Scheduled daily/weekly backups with configurable retention
- Multi-Profile Support β Different script configurations for different contexts
- Violentmonkey/Greasemonkey Import β Import from VM JSON and GM4 backup formats
- UserStyles/CSS Support β
.user.cssfiles with variable editor, Stylus import - Script Chaining β Visual pipeline builder for sequential script execution
- npm Package Resolution β
@require npm:lodashwith CDN fallback chain - Script Scheduling β Time/day/date-based execution with visual picker
- Public Extension API β External message API with rate limiting and webhooks
- Firefox Compatibility Layer β Polyfills for cross-browser v2.0 module support
- Lazy Module Loading β Dashboard loads 7 eager scripts, defers 30+ until needed
- Automatic Migration β Seamless v1.x β v2.0 data migration
- Storage Quota Manager β Auto-cleanup when approaching Chrome's 10MB limit
- 600+ Vitest Tests β Coverage for parser, utilities, storage, update flows, UI modules, accessibility, and security boundaries
- JSDoc Type Annotations β @ts-check compatible on critical functions
- esbuild Build System β Modern bundler with minification and source maps
- Accessibility (WCAG 2.1 AA) β ARIA labels, focus trapping, high contrast, reduced motion
-
Clone or download this repository:
git clone https://github.com/SysAdminDoc/ScriptVault.git cd ScriptVault -
Open Chrome and navigate to
chrome://extensions -
Enable Developer mode (toggle in top right)
-
Click Load unpacked and select the repository folder
-
Chrome 138+: Click the extension's "Details" and enable Allow User Scripts
Install ScriptVault from the Chrome Web Store
| Method | Steps |
|---|---|
| Direct URL | Navigate to any .user.js URL β ScriptVault auto-detects it |
| Find Scripts | Dashboard β click Find Scripts β search β one-click install |
| File drop | Drag and drop a .user.js file onto the dashboard |
| Dashboard import | Dashboard β Utilities β paste URL or code β Import |
| Create new | Dashboard β click + β write script β Ctrl+S |
| Action | How |
|---|---|
| Toggle | Click the switch next to any script |
| Edit | Click the script name β opens in a tab (multiple scripts at once) |
| Update | Click the refresh icon on any script to check for updates |
| Export | Click the download icon to export a single script |
| Delete | Click the trash icon |
| View storage | Click the database icon to inspect GM_getValue data |
| Bulk actions | Select multiple scripts via checkboxes β choose action from dropdown |
| Shortcut | Action |
|---|---|
Alt+Shift+S |
Open ScriptVault popup |
Alt+Shift+D |
Open Dashboard |
Alt+Shift+E |
Toggle all scripts on/off |
Ctrl+S |
Save script (in editor) |
Ctrl+F |
Find in editor |
Ctrl+H |
Find and replace |
Ctrl+G |
Go to line |
// ==UserScript==
// @name Script Name
// @namespace https://example.com
// @version 1.0.0
// @description What the script does
// @author Your Name
// @match https://example.com/*
// @include http://example.org/*
// @exclude *://example.com/private/*
// @exclude-match *://admin.example.com/*
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @resource myCSS https://example.com/style.css
// @icon https://example.com/icon.png
// @run-at document-end
// @connect api.example.com
// @downloadURL https://example.com/script.user.js
// @updateURL https://example.com/script.meta.js
// @supportURL https://github.com/user/repo/issues
// @homepageURL https://github.com/user/repo
// @license MIT
// @antifeature tracking
// @tag productivity
// @priority 10
// @inject-into auto
// @compatible chrome
// @incompatible firefox Needs polyfill
// @contributionURL https://example.com/donate
// @webRequest {"selector":"*ad*","action":"cancel"}
// @top-level-await
// ==/UserScript==| Value | Timing |
|---|---|
document-start |
Before DOM loads |
document-body |
When <body> exists |
document-end |
When DOM is complete (default) |
document-idle |
When page is fully loaded |
context-menu |
On right-click context menu |
| Layer | Protection |
|---|---|
| Script isolation | Scripts run in isolated USER_SCRIPT world via chrome.userScripts API |
| Permission transparency | Installation page shows all requested @grant permissions |
| Network restrictions | @connect domains are validated before XHR requests |
| Blacklist protection | Remote + manual blacklists block known malicious scripts |
| Zero telemetry | No data collection, no phone home β everything stays local |
| Feature | ScriptVault | Tampermonkey | ViolentMonkey |
|---|---|---|---|
| Manifest V3 | Yes | Yes | Yes |
| Full GM API (35+) | Yes | Yes | Yes |
| Monaco Editor (VS Code) | Yes | No | No |
| DevTools Panel | Yes | No | No |
| Side Panel | Yes | No | No |
| Script Signing (Ed25519) | Yes | No | No |
| AST Static Analysis (31 detectors) | Yes | No | No |
| Cloud Sync (4 providers) | Yes | Yes | Yes |
| 3-Way Sync Merge | Yes | No | No |
| Tabbed Multi-Script Editor | Yes | No | No |
| Built-in Script Search | Yes | No | No |
| Script Templates | 6 | No | No |
| Version Rollback | Yes (3) | No | No |
| CDN Library Browser | Yes | No | No |
| Workspaces | Yes | No | No |
| Script Folders | Yes | No | No |
| Command Palette (Ctrl+K) | Yes | No | No |
| Drag-and-Drop Install | Yes | Yes | No |
| Tag Filtering | Yes | No | No |
| Script Pinning | Yes | No | No |
| Pattern Tester | Yes | No | No |
| Version Diff View | Yes | No | No |
| Network Request Log + HAR | Yes | No | No |
| Execution Profiling | Yes | No | No |
| Performance Budgets | Yes | No | No |
| Storage Quota Monitor | Yes | No | No |
| Bulk Operations w/ Progress | Yes | Yes | No |
| 4 UI Themes | Yes | No | Yes |
| Open Source | MIT | No | Yes |
| Free | Yes | Freemium | Yes |
ScriptVault/
βββ manifest.json # Chrome MV3 manifest
βββ manifest-firefox.json # Firefox MV3 manifest
βββ esbuild.config.mjs # Cross-platform build pipeline
βββ .env.example # Safe template for Chrome Web Store publishing credentials
βββ background.js # Service worker (built from source modules)
βββ background.core.js # Main service worker logic (~5500 lines)
βββ content.js # Content script bridge (USER_SCRIPT <-> background)
βββ offscreen.html/js # Offscreen document (AST analysis, 3-way merge)
βββ build-background.sh # Concatenates modules into background.js
βββ build.sh # Packages CWS-ready ZIP
βββ bg/
β βββ analyzer.js # AST-based static analysis engine
β βββ netlog.js # Network request logger
β βββ signing.js # Ed25519 script signing
β βββ workspaces.js # Workspace state manager
βββ modules/
β βββ storage.js # Settings, scripts, values, folders
β βββ sync-providers.js # WebDAV, Google Drive, Dropbox, OneDrive
β βββ resources.js # @resource/@require cache
β βββ xhr.js # XHR abort tracking
β βββ i18n.js # Inline translations (8 languages)
βββ shared/
β βββ utils.js # escapeHtml, generateId, sanitizeUrl, formatBytes
βββ pages/
β βββ dashboard.html/js # Main dashboard + Monaco editor (~5000 lines)
β βββ popup.html/js # Toolbar popup
β βββ install.html/js # Script installation page
β βββ sidepanel.html/js # Persistent side panel (Chrome 114+)
β βββ devtools.html # DevTools registration
β βββ devtools-panel.html/js # DevTools network + profiling UI
β βββ editor-sandbox.html # Sandboxed Monaco editor iframe
β βββ monaco-adapter.js # CodeMirror-to-Monaco API bridge
βββ lib/
β βββ codemirror/ # CodeMirror (lint only)
β βββ acorn.min.js # Acorn JS parser for AST analysis
β βββ diff.min.js # diff.js for 3-way merge
β βββ fflate.js # ZIP compression
βββ images/ # Extension icons
βββ _locales/ # 8 language translations
Contributions are welcome. Feel free to open a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
MIT License β see LICENSE for details.
- Tampermonkey β Setting the standard in userscript management
- ViolentMonkey β Manifest V3 inspiration
- Monaco Editor β The VS Code editor powering the script editor
- Acorn β JavaScript parser for AST-based static analysis
- jsdiff β Text diffing for 3-way sync merge
- fflate β Fast ZIP compression
ScriptVault v3.10.1
Your scripts, your rules β locked down and loaded
