crittermike/shortkeys

A browser extension for custom keyboard shortcuts

TypeScript

1,255

864 commits

updated Oct 10, 2026

See the code

README

Shortkeys logo

Shortkeys

Custom keyboard shortcuts for your browser
A cross-browser extension for Chrome, Firefox, Edge, and Opera with 200,000+ Chrome users.

Chrome Web Store · Firefox Add-ons · 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 - click the icon or set a shortcut to search and trigger any action
  • 📦 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
  • 🌐 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

Or build from source:

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

Development

npm run dev            # Chrome dev mode with hot reload
npm run dev:firefox    # Firefox dev mode
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 <script setup>
  • TypeScript throughout
  • Vitest - 722 tests across 25 files
  • Mousetrap - keyboard shortcut detection
  • CodeMirror 6 - JavaScript editor with syntax highlighting
  • Astro - community website (shortkeys.app)

Contributing

Pull requests are welcome. Please ensure all tests pass (npm test) before submitting. For bugs and feature requests, open a GitHub issue.

Support

Shortkeys is free and open source. If you find it useful, consider supporting development:

Credits and license

Icon by Freepik from Flaticon.

Licensed under the MIT License.

chrome
javascript
webextension

crittermike/shortkeys

A browser extension for custom keyboard shortcuts

TypeScript

1,255

864 commits

updated Oct 10, 2026

See the code

README

Shortkeys logo

Shortkeys

Custom keyboard shortcuts for your browser
A cross-browser extension for Chrome, Firefox, Edge, and Opera with 200,000+ Chrome users.

Chrome Web Store · Firefox Add-ons · 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 - click the icon or set a shortcut to search and trigger any action
  • 📦 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
  • 🌐 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

Or build from source:

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

Development

npm run dev            # Chrome dev mode with hot reload
npm run dev:firefox    # Firefox dev mode
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 <script setup>
  • TypeScript throughout
  • Vitest - 722 tests across 25 files
  • Mousetrap - keyboard shortcut detection
  • CodeMirror 6 - JavaScript editor with syntax highlighting
  • Astro - community website (shortkeys.app)

Contributing

Pull requests are welcome. Please ensure all tests pass (npm test) before submitting. For bugs and feature requests, open a GitHub issue.

Support

Shortkeys is free and open source. If you find it useful, consider supporting development:

Credits and license

Icon by Freepik from Flaticon.

Licensed under the MIT License.

chrome
javascript
webextension

Significant stargazers

Thibault Duplessis

6,510 followers · starred Dec 2017

Eric J. Wang

528 followers · starred Mar 2020

wouter bolsterlee

132 followers · starred Mar 2023

Yuxuan Shui

295 followers · starred Apr 2020