Documentation
Learn how to install, configure, and master the Shortkeys browser extension to navigate the web at the speed of thought.
1. Getting Started
First, install the Shortkeys extension for your preferred browser:
Opening the Settings Page
Right-click the Shortkeys icon in your browser toolbar and select Options, or open the extension manager and click Shortkeys. On Chrome, you can navigate directly to:
chrome-extension://logpjaacgmcbpdkdchjiaagddngobkck/options.html
Creating your first shortcut
- Click the Add Shortcut button.
- Choose an action from the dropdown menu (e.g., "Scroll down").
- Click the Record button in the shortcut field.
- Press the physical keys on your keyboard you want to use (e.g., G). You can record multi-key sequences like G then G by simply pressing them in order.
- Click Save. Your shortcut is instantly active across all your open tabs!
Important: Refresh your tabs after installing
Shortkeys can only run on tabs that were opened (or refreshed) after the extension was installed. If your shortcuts aren't working, refresh the page first. This applies after initial install and after extension updates. Chrome doesn't allow extensions to inject into pages that were already loaded before installation.
2. Actions Reference
Shortkeys includes 12 categories of built-in actions you can assign to any key combo. The value shown is what appears in the action dropdown.
Scrolling
Note: You can enable "Smooth scrolling" in the global settings for a more fluid experience with these actions.
| Action | Description |
|---|---|
| top | Scroll to the top of the page |
| bottom | Scroll to the bottom of the page |
| scrolldown | Scroll down slightly |
| scrolldownmore | Scroll down a large amount |
| pagedown | Scroll down one full page |
| scrollup | Scroll up slightly |
| scrollupmore | Scroll up a large amount |
| pageup | Scroll up one full page |
| scrollright | Scroll right slightly |
| scrollrightmore | Scroll right a large amount |
| scrollleft | Scroll left slightly |
| scrollleftmore | Scroll left a large amount |
Location/Navigation
| Action | Description |
|---|---|
| back | Go back in history |
| forward | Go forward in history |
| reload | Reload the page |
| hardreload | Hard reload (bypasses cache) |
| copyurl | Copy URL to clipboard |
| copypagetitle | Copy page title to clipboard |
| copytitleurl | Copy title and URL to clipboard |
| copytitleurlmarkdown | Copy as markdown link [title](url) |
| openclipboardurl | Open URL from clipboard in current tab |
| openclipboardurlnewtab | Open URL from clipboard in new tab |
| openurl | Navigate to a specific URL |
| opensettings | Open Shortkeys settings page |
| openextensions | Open browser extensions page |
| openshortcuts | Open Chrome keyboard shortcuts page |
| urlup | Go up one directory in URL path |
| urlroot | Go to root URL |
| urlinc | Increment URL path or hash |
| urldec | Decrement URL path or hash |
| editurl | Edit current URL in a dialog |
| nextpage | Go to next page (pagination) |
| prevpage | Go to previous page (pagination) |
Bookmarks
| Action | Description |
|---|---|
| openbookmark | Open bookmark (current tab) |
| openbookmarknewtab | Open bookmark in new tab |
| openbookmarkbackgroundtab | Open bookmark in background tab |
| openbookmarkbackgroundtabandclose | Open in background tab and close current tab |
Note: Use the "togglebookmark" action (in Miscellaneous) to add/remove the current page from bookmarks.
Tabs
Windows
| Action | Description |
|---|---|
| gototab | Jump to a tab by URL |
| gototabbytitle | Jump to a tab by title |
| gototabbyindex | Jump to a tab by index (1-based) |
| newtab | Open a new tab |
| newtabright | Open a new tab to the right of current |
| closetab | Close current tab |
| onlytab | Close all other tabs |
| closelefttabs | Close all tabs to the left |
| closerighttabs | Close all tabs to the right |
| closeduplicatetabs | Close duplicate tabs |
| clonetab | Duplicate current tab |
| movetabtonewwindow | Move tab to a new window |
| reopentab | Reopen last closed tab |
| nexttab | Navigate to next tab |
| prevtab | Navigate to previous tab |
| firsttab | Navigate to first tab |
| lasttab | Navigate to last tab |
| lastusedtab | Switch to last used tab |
| audibletab | Jump to the tab playing audio/video |
| togglepin | Pin or unpin current tab |
| togglemute | Mute or unmute current tab |
| movetableft | Move tab one position to the left |
| movetabright | Move tab one position to the right |
| movetabtofirst | Move tab to first position |
| movetabtolast | Move tab to last position |
| sorttabs | Sort all tabs alphabetically by title |
| discardtab | Suspend tab to free memory |
| grouptab | Add tab to a new group (Chrome only) |
| ungrouptab | Remove tab from its group (Chrome only) |
| Action | Description |
|---|---|
| newwindow | Open new window |
| newprivatewindow | Open new incognito/private window |
| closewindow | Close current window |
| fullscreen | Toggle browser fullscreen |
Zooming
| Action | Description |
|---|---|
| zoomin | Zoom in |
| zoomout | Zoom out |
| zoomreset | Reset zoom to 100% |
Miscellaneous
| Action | Description |
|---|---|
| javascript | Run custom JavaScript |
| macro | Run a macro (chain of actions) |
| showlatestdownload | Show latest download in folder |
| cleardownloads | Clear download history |
| viewsource | View page source |
| disable | Do nothing (useful to block website/browser defaults) |
| trigger | Trigger another Shortkeys shortcut |
| inserttext | Insert predefined text into focused input field |
| Print the page | |
| buttonnexttab | Click a button and switch to the next tab |
| openapp | Open a progressive web app |
| togglebookmark | Add or remove current page from bookmarks |
| openincognito | Open current URL in incognito window |
| capturescreenshot | Take screenshot of visible area |
| capturefullsizescreenshot | Take full-page screenshot (max 16,384px) |
| forcecapturefullsizescreenshot | Force capture full-page screenshot (no size limit) |
| focusinput | Focus first text input on page |
Video Controls
Controls the largest playing HTML5 video on the current page.
| Action | Description |
|---|---|
| videoplaypause | Toggle video playback (play/pause) |
| videomute | Toggle video audio (mute/unmute) |
| videofullscreen | Toggle video fullscreen mode |
| videospeedup | Speed up video by 0.25x |
| videospeeddown | Slow down video by 0.25x |
| videospeedreset | Reset video speed to 1x |
| videoskipforward | Skip forward 10 seconds |
| videoskipback | Skip back 10 seconds |
Search Providers
Searches the currently highlighted text on the page using the specified provider.
| Action | Description |
|---|---|
| searchgoogle | Search selected text on Google |
| searchyoutube | Search selected text on YouTube |
| searchwikipedia | Search selected text on Wikipedia |
| searchgithub | Search selected text on GitHub |
Page Tools
| Action | Description |
|---|---|
| showcheatsheet | Show an overlay of all active shortcuts |
| toggledarkmode | Toggle an inverted color dark mode on the current site |
Link Hints
| Action | Description |
|---|---|
| linkhints | Display letter hints over all links. Type the letters to click. |
| linkhintsnew | Display letter hints over links. Clicked links open in new tab. |
Page Scripts
These are 24 pre-built JavaScript snippets you can assign to any shortcut.
Dark mode
Reader mode
Hide sticky headers & banners
Increase text size
Highlight all links
Make page editable
Copy all links on page
Word count
Extract email addresses
Export table to CSV
Show QR code for this page
Remove all images
Show image sizes
Show page outline
Reading progress bar
Show layout grid
Clear site storage
Show performance metrics
Log all events
Pretty print JSON
Picture-in-Picture
Set video speed (2x)
List all image URLs
Show audio volume
3. Shortcut Packs
Shortcut packs are curated collections of shortcuts you can install with a single click. They let you adopt popular keyboard navigation styles without configuring them manually.
- Available packs: Vim, Emacs, YouTube, Productivity, Developer, Reading, Tab Manager, Keyboard Power, and Media Control.
- How to install: Open Shortkeys Settings, click Browse Packs, or visit shortkeys.app/packs directly.
- Packs are imported as Groups. Once installed, you can freely edit, reassign keys, or delete shortcuts you don't need.
4. Groups
Organize your shortcuts into folders. Ungrouped shortcuts live in the My Shortcuts default group.
- Creating: Click the icon next to "Add Group" in the header.
- Renaming: Click directly on the group name to edit it.
- Collapse/Expand: Click the chevron on the group header to hide shortcuts.
- Enable/Disable: Use the toggle switch on the group header to disable all shortcuts inside it at once.
- Moving: Drag and drop the handle icon on a shortcut to move it between groups.
- Delete: Click the trash icon on the group header. Warning: This deletes all shortcuts inside the group.
- Sharing: Click the share icon on the group header to export just that group.
5. Macros
Macros allow you to chain multiple actions into a single keyboard shortcut.
- How to create: Add a new shortcut, and choose the Run a macro action.
- Click "Add Step" to add actions to the chain.
- You can optionally add Delays (in milliseconds) between steps for precise timing, which is useful when waiting for a page navigation to complete.
- Example use cases:
- Open a specific tab and immediately run a JavaScript snippet.
- Scroll down, wait 500ms, and take a screenshot.
- Duplicate current tab and move it to a new window.
6. Site Filtering
Control exactly where your shortcuts are active. Open the advanced settings for a shortcut to configure filtering. There are three modes:
- All sites: The shortcut works everywhere.
- All sites except... (Blocklist): Works everywhere EXCEPT the listed sites. Useful if a shortcut conflicts with a specific website's native hotkeys (e.g., block Gmail or GitHub).
- Only on specific sites (Allowlist): Shortcut ONLY works on the listed sites.
URL Patterns: Enter one pattern per line. Supports wildcards (*). Examples:
*.google.com/*
github.com/*/pulls
7. Custom JavaScript
Run your own code via keyboard shortcuts for infinite possibilities.
- Choose Run JavaScript as the action.
- Write code in the built-in CodeMirror editor (features syntax highlighting and One Dark theme).
- Code runs directly in the page context (MAIN world), meaning it has full access to the page's DOM and
windowobject. - Example:
document.body.style.background = 'red'; - If you need inspiration, check out the built-in "Page Scripts" and modify them.
Content Security Policy (CSP) Note
On sites with strict CSP (like Twitter or GitHub), inline script execution may be blocked by the browser. If your script fails silently, try testing it with the "Test" button which bypasses CSP using the debugger API.
8. Command Palette
Don't want to memorize all your shortcuts? The command palette lets you search and trigger them.
- Click the Shortkeys extension icon in your browser toolbar to open the palette.
- Tip: Assign a global hotkey to open the extension popup via
chrome://extensions/shortcutsfor instant access. - It shows a searchable list of all your active shortcuts, their labels, and keys.
- Use the arrow keys to navigate and press Enter to execute.
- Use the Quick-add button to create a new shortcut directly from the palette.
9. Cloud Sync
Your shortcuts stay with you, automatically.
- Shortkeys utilizes
chrome.storage.syncto sync your configuration to your Google Account. - No extra account or setup is needed. It works across all Chrome instances where you are signed in.
- Fallback: Chrome limits sync storage to 100KB. If your data (like large custom JavaScript actions) exceeds this limit, Shortkeys automatically and transparently falls back to local storage so you never lose data.
- On Firefox, it utilizes Firefox Sync.
11. Browser Shortcuts (Global)
By design, Chrome does not allow extensions to inject scripts into restricted pages like chrome:// pages, the New Tab page, or the Chrome Web Store. Standard shortcuts will not work there.
The Solution: Shortkeys registers 85 named commands with the browser. Each one appears as an item on Chrome's built-in keyboard shortcuts page, where you can assign a key combo directly.
- Navigate to chrome://extensions/shortcuts in your URL bar.
- Find the Shortkeys section.
- You'll see named commands like "TABS: New tab", "TABS: Close tab", "SCROLLING: Scroll down", "VIDEO: Play/pause", etc.
- Click any command's shortcut field and press your desired key combo. Chrome assigns it immediately.
- These shortcuts are handled natively by Chrome and work on any page, including
chrome://pages and the Chrome Web Store.
Limitations: Browser shortcuts require at least one modifier key (Ctrl, Alt, or Cmd), so single-key or vim-style shortcuts (like j/k) are not supported. You also can't use advanced Shortkeys features like site filtering, macros, or custom JavaScript with browser shortcuts.
12. Conflict Detection
Shortkeys prevents you from accidentally breaking your workflow.
- Platform-aware: It knows if you are on Mac (using Cmd) or Windows/Linux (using Ctrl).
- If you assign a combo like Ctrl + T, Shortkeys will warn you that it conflicts with the browser's default "New Tab" action.
- Duplicate shortcuts (the same key combo assigned twice) are flagged.
- Warnings appear in the stats bar at the top of the settings page and inline on the shortcut card.
- Note: You can still save and use conflicting shortcuts; the warning is purely informational.
13. Userscript Import
Bring powerful scripts directly into Shortkeys without needing a separate manager like Tampermonkey.
- Choose Import Userscript in the Add menu.
- Paste a URL from Greasyfork or OpenUserJS.
- Shortkeys will fetch the script, parse its metadata, and bind it to your chosen keyboard shortcut.
- Unlike standard userscripts that run automatically on page load, Shortkeys runs them only when you press the shortcut.
14. FAQ / Troubleshooting
Shortcuts don't work on chrome:// pages or the New Tab page
Chrome strictly prevents extensions from running on its internal pages and the Chrome Web Store. To use actions like "Close tab" on these pages, use Browser Shortcuts instead.
Shortcuts stopped working after an update
When the extension updates in the background, existing tabs might lose the connection to the content script. Simply refresh the open tabs to restore functionality.
Custom JavaScript doesn't work on some sites
Sites with strict Content Security Policies (CSP) block injected scripts. Try using the debugger-based "Test" button in the editor, or map a built-in action via Browser Shortcuts which bypasses page-level CSP.
My shortcuts conflict with website shortcuts (e.g. Gmail/GitHub)
Use the Site Filtering feature to add the domain to your Blocklist, so Shortkeys won't override the site's native hotkeys.
Shortcuts don't trigger when I'm typing in text inputs
By default, Shortkeys disabled shortcuts while you are focused in an <input>, <textarea>, or contenteditable element to avoid typing interference. You can check the "Active in text fields" box on any individual shortcut to override this.
How do I use multi-key sequences like vim?
Click the Record button, press the first key (e.g., G), release it, and press the second key (e.g., I). The recorder captures the sequence perfectly as g i.
How do I back up my shortcuts?
Use the Export tab in settings to copy your JSON config. Cloud Sync also automatically backs them up to your Google account.
15. Browser Compatibility
Shortkeys is built to run on modern web browsers.
- Chrome: Full support (Manifest V3). All features available.
- Firefox: Full support (Manifest V2). Built natively for Firefox. Note that some Chrome-specific APIs are unavailable (tab grouping, debugger API testing, showing specific downloads).
- Edge: Full support. Install directly from the Chrome Web Store.
- Opera: Full support. Install directly from Opera Add-ons.