Profile
Back to NewsBack
GitHub Trending 4 min
Reader Mode
crittermike/shortkeys: A browser extension for custom keyboard shortcuts

crittermike/shortkeys: A browser extension for custom keyboard shortcuts

7 hours ago

Shortkeys logo

Shortkeys

Custom keyboard shortcuts for your browser
A browser extension for Chrome, Edge, and Opera with 200,000+ Chrome users. Firefox distribution is currently blocked.

Chrome Web Store · Firefox status · Website · Issues


Shortkeys options page

Features

  • ⚡ 125+ built-in actions across 11 categories: scrolling, tabs, navigation, video controls, search, bookmarks, windows, zooming, page tools, page scripts, and more
  • 🔍 Command palette - search saved shortcuts and run unassigned, zero-config actions without creating shortcuts. Quick-add opens settings when an action needs parameters.
  • 📦 9 curated shortcut packs - one-click install for Vim, Emacs, YouTube, Productivity, Developer, Reading, Tab Manager, Keyboard Power, and Media Control
  • ☁️ Cloud sync with automatic local fallback when data exceeds sync quota
  • 📁 Groups - organize shortcuts into collapsible, renamable sections with bulk enable/disable
  • 🔗 Macro chaining - chain multiple actions into a single shortcut, with separate URLs, text, and other settings for each step
  • 🌐 Site filtering - all sites, blocklist, or allowlist per shortcut
  • 🎬 Live reload - shortcuts update in all tabs instantly, no page refresh needed
  • 🔗 Shareable links - generate a URL to share shortcuts or groups with anyone
  • ⌨️ Shortcut recorder with multi-key sequence support (e.g. g i, g h)
  • ⚠️ Conflict detection - platform-aware warnings for browser default clashes
  • 🌙 Dark mode following system preference
  • 📜 Userscript import from Greasyfork and OpenUserJS
  • 🧙 Guided onboarding wizard for new users
  • ↩️ Undo/redo in the settings page
More screenshots

Custom JavaScript editor

Custom JavaScript editor

Macro chaining

Macro chaining

Dark mode

Dark mode

Install

Chrome
Chrome
Firefox
Firefox status
Edge
Edge
Opera
Opera

Firefox v5.0.1 was rejected by Mozilla for remote code execution and missing data-transmission consent. The AMO API currently lists only v2.0.20 (2017), and users report installation failures (#864, #982). A successful source build is not a signed, approved Firefox release.

The Firefox source build targets desktop Firefox 153+ using Manifest V3. Custom JavaScript, JavaScript macros, and bookmarklets use Firefox's native user-script API: enable the optional permission, review and install each script, and reinstall after editing its code or website scope. Removing a script disables execution without deleting its editable code. Remote userscript URL loading is unavailable in Firefox. Optional data transmission requires Firefox's built-in consent and stops when that consent is revoked.

Or build from source for development:

npm install
npm run build          # Chrome → .output/chrome-mv3/
npm run build:firefox  # Firefox 153+ → .output/firefox-mv3/

Development

npm run dev            # Chrome dev mode with hot reload
npm run dev:firefox    # Firefox dev mode
npm run typecheck      # TypeScript and Vue checks
npm test               # Run all tests (722 tests across 25 files)
npm run test:watch     # Watch mode
npm run test:coverage  # With coverage report

Project structure

src/
├── entrypoints/
│   ├── background.ts        # Service worker: messaging, action dispatch, storage sync
│   ├── content.ts           # Content script: Mousetrap key bindings, cheat sheet, dark mode
│   ├── options/             # Options page (Vue 3 SPA)
│   └── popup/               # Command palette popup
├── actions/                 # Action handlers and helpers
├── components/              # Vue components (CodeEditor, SearchSelect, ShortcutRecorder)
├── composables/             # Vue composables (useShortcuts)
├── packs/                   # 9 curated shortcut pack collections
└── utils/                   # Storage, URL matching, conflict detection, JS snippets

site/ # shortkeys.app (Astro SSG, deployed to Netlify) tests/ # 722 tests across 25 files marketing/ # Store listing copy, screenshot plans, promo assets

Tech stack

  • WXT - Vite-based browser extension framework
  • Vue 3 - Composition API with Chat with me