A tiny, privacy-friendly browser extension for Firefox and Chrome.
Hold Ctrl + Shift (or Cmd + Shift on a Mac) and click any link to open it
in the same tab — even when the link is coded to open in a new tab or window
(for example target="_blank", rel="noopener", or JavaScript that calls
window.open).
Some sites force links to open in a new tab. When you'd rather stay in the current tab, OpenHere gives you a consistent shortcut to override that behavior on demand, without changing any other browsing.
OpenHere injects a small content script that listens for clicks in the capture phase. When you click a link with the activating modifiers held, it:
- Prevents the default navigation and the browser's own "open in new tab" shortcut.
- Stops the page's own click handlers from running (so site scripts can't override it).
- Navigates the current tab to the link's URL.
Links without a real destination (empty, #, pure fragments, or javascript:)
are left untouched.
- No special permissions beyond the content script needed to run on pages.
- No background script, no network requests, no analytics, no data collection.
- Everything runs locally in your browser.
- Open
chrome://extensions. - Enable Developer mode (top-right).
- Click Load unpacked and select this project folder.
- Open
about:debugging#/runtime/this-firefox. - Click Load Temporary Add-on….
- Select the
manifest.jsonfile in this project folder.
Temporary add-ons are removed when Firefox restarts. For a permanent install, use a signed build from addons.mozilla.org.
Install the dev tooling once:
npm installLint the extension:
npm run lintCreate a Firefox/AMO package (.zip in web-ext-artifacts/):
npm run build:firefoxCreate a Chrome Web Store package (.zip in web-ext-artifacts/):
npm run build:chrome- addons.mozilla.org: Upload the
web-ext-artifacts/openhere-*.zipbuild. The Firefox add-on ID and minimum version live inbrowser_specific_settings.geckoinmanifest.json. - Chrome Web Store: Upload the
web-ext-artifacts/openhere-chrome-*.zipbuild via the Developer Dashboard.
manifest.json # Manifest V3 config (Chrome + Firefox)
src/content.js # The click interceptor
icons/ # Extension icons (16/32/48/128) + SVG source
scripts/build-chrome.js# Chrome packaging helper