jackwalkerlabs/tabhop

Customizable keyboard shortcuts for navigating tabs in Chrome and Edge. Local-only, no tracking.

JavaScript

0

2 commits

updated Sep 12, 2026

See the code

README

TabHop for Chrome and Edge

Validate TabHop

Open-source tab navigation with customizable keyboard shortcuts.

Website · Privacy policy

A small Manifest V3 extension with these defaults:

ActionmacOSWindows / Linux
Previous tabCommand + Shift + UpCtrl + Shift + Up
Next tabCommand + Shift + DownCtrl + Shift + Down

Tab navigation wraps around and stays within the current window, including pinned tabs. First-tab and last-tab commands are also available; assign their keys in browser settings.

Install

  1. In Chrome open chrome://extensions; in Edge open edge://extensions.
  2. Turn on Developer mode.
  3. Click Load unpacked and select the TabHop folder next to this README (the folder containing manifest.json).
  4. Open a few tabs and try Command + Shift + Down, then Command + Shift + Up.
  5. Open the extension’s toolbar popup to check registered shortcuts or click Customize shortcuts.

Install separately in each browser. Keep the folder on disk. After editing its files, click Reload on the extension card.

Customize and troubleshoot

Open chrome://extensions/shortcuts or edge://extensions/shortcuts. Find TabHop, then edit a command’s keys. Keep its scope In Chrome / In Microsoft Edge, where available.

If a default is unassigned, another extension may already own it. Remove that conflicting assignment and assign it to TabHop. If the shortcut editor will not accept the arrow combination, clear the other extension’s conflict and reinstall this extension to reapply its manifest defaults.

This adds alternate tab-navigation shortcuts; existing browser shortcuts still work. An extension cannot freely rewrite all built-in browser bindings. Some browser and operating-system shortcuts have priority, and assigned keys still require a real keyboard check on your machine. These combinations can replace their usual text-selection behavior while the browser is focused.

The extension uses browser commands instead of injecting page key listeners. No website access, browsing-history permission, external libraries, analytics, or network requests are used. Private windows require enabling the extension’s incognito / InPrivate access separately.

Validation

Run node --test tests/background.test.cjs from this directory. Tests exercise navigation and command-queue behavior with a mocked browser API; they do not validate macOS keyboard dispatch or installation in Chrome / Edge.

API references

Store submission kit

See store/SUBMISSION.md for upload files and remaining publisher steps. The installable ZIP is dist/TabHop-1.0.0.zip. Privacy and support contact: jackwalkerlabs@gmail.com.

Rebuild the ZIP with python3 scripts/package.py. No external packages are needed for packaging or unit tests. To regenerate visual assets, install the development-only sharp and playwright packages, then run node scripts/icons.cjs and node scripts/render-and-check.cjs (macOS with Edge installed by default). BROWSER_EXECUTABLE can select a compatible Chromium executable. These dependencies are not shipped in the extension. Browser validation creates an isolated temporary profile.

Testing limits

Navigation unit tests and an isolated Edge popup/command-registration check pass. The automated Chrome loading attempt was inconclusive, and synthetic headless key presses do not verify physical keyboard routing. Windows/Linux have not been tested. See validation details.

Contributing and license

See CONTRIBUTING.md for development and pull-request guidance. Licensed under the MIT License. Security reports: SECURITY.md.

Privacy policy: https://tabhop.jackwalkerlabs.workers.dev/privacy

Privacy page deployment

The privacy page is served as static assets on Cloudflare Workers. To redeploy, authenticate with wrangler login and run wrangler deploy from the repository root. Only store/site is uploaded as website content. Credentials are never committed.

Contributors

jackwalkerlabs/tabhop

Customizable keyboard shortcuts for navigating tabs in Chrome and Edge. Local-only, no tracking.

JavaScript

0

2 commits

updated Sep 12, 2026

See the code

README

TabHop for Chrome and Edge

Validate TabHop

Open-source tab navigation with customizable keyboard shortcuts.

Website · Privacy policy

A small Manifest V3 extension with these defaults:

ActionmacOSWindows / Linux
Previous tabCommand + Shift + UpCtrl + Shift + Up
Next tabCommand + Shift + DownCtrl + Shift + Down

Tab navigation wraps around and stays within the current window, including pinned tabs. First-tab and last-tab commands are also available; assign their keys in browser settings.

Install

  1. In Chrome open chrome://extensions; in Edge open edge://extensions.
  2. Turn on Developer mode.
  3. Click Load unpacked and select the TabHop folder next to this README (the folder containing manifest.json).
  4. Open a few tabs and try Command + Shift + Down, then Command + Shift + Up.
  5. Open the extension’s toolbar popup to check registered shortcuts or click Customize shortcuts.

Install separately in each browser. Keep the folder on disk. After editing its files, click Reload on the extension card.

Customize and troubleshoot

Open chrome://extensions/shortcuts or edge://extensions/shortcuts. Find TabHop, then edit a command’s keys. Keep its scope In Chrome / In Microsoft Edge, where available.

If a default is unassigned, another extension may already own it. Remove that conflicting assignment and assign it to TabHop. If the shortcut editor will not accept the arrow combination, clear the other extension’s conflict and reinstall this extension to reapply its manifest defaults.

This adds alternate tab-navigation shortcuts; existing browser shortcuts still work. An extension cannot freely rewrite all built-in browser bindings. Some browser and operating-system shortcuts have priority, and assigned keys still require a real keyboard check on your machine. These combinations can replace their usual text-selection behavior while the browser is focused.

The extension uses browser commands instead of injecting page key listeners. No website access, browsing-history permission, external libraries, analytics, or network requests are used. Private windows require enabling the extension’s incognito / InPrivate access separately.

Validation

Run node --test tests/background.test.cjs from this directory. Tests exercise navigation and command-queue behavior with a mocked browser API; they do not validate macOS keyboard dispatch or installation in Chrome / Edge.

API references

Store submission kit

See store/SUBMISSION.md for upload files and remaining publisher steps. The installable ZIP is dist/TabHop-1.0.0.zip. Privacy and support contact: jackwalkerlabs@gmail.com.

Rebuild the ZIP with python3 scripts/package.py. No external packages are needed for packaging or unit tests. To regenerate visual assets, install the development-only sharp and playwright packages, then run node scripts/icons.cjs and node scripts/render-and-check.cjs (macOS with Edge installed by default). BROWSER_EXECUTABLE can select a compatible Chromium executable. These dependencies are not shipped in the extension. Browser validation creates an isolated temporary profile.

Testing limits

Navigation unit tests and an isolated Edge popup/command-registration check pass. The automated Chrome loading attempt was inconclusive, and synthetic headless key presses do not verify physical keyboard routing. Windows/Linux have not been tested. See validation details.

Contributing and license

See CONTRIBUTING.md for development and pull-request guidance. Licensed under the MIT License. Security reports: SECURITY.md.

Privacy policy: https://tabhop.jackwalkerlabs.workers.dev/privacy

Privacy page deployment

The privacy page is served as static assets on Cloudflare Workers. To redeploy, authenticate with wrangler login and run wrangler deploy from the repository root. Only store/site is uploaded as website content. Credentials are never committed.

Contributors

Languages

JavaScript

51.5%

HTML

35.5%

Python

8.1%

CSS

4.9%