Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TabHush logo

TabHush

Hush your tabs.

A Chrome extension that masks tab titles, favicons, and audio while you're screen sharing, recording, presenting, or focusing — with zero data ever leaving your machine.


Manifest V3 Tests License: MIT No tracking Chrome 102+


✨ Why TabHush?

When you screen share, your browser tab strip leaks everything — that YouTube video, your personal Gmail, the Discord channel, the Netflix tab you forgot was open. Tab audio leaks too: the little speaker icon broadcasts exactly what you're doing.

TabHush rewrites tab titles and favicons to neutral, professional-looking ones in real time, and auto-mutes audible tabs while privacy is on. One toggle. One shortcut. Zero data leaves your machine.


🚀 Features

🔒 One-click privacy toggle — popup button or global keyboard shortcut
🎭 Tab title & favicon masking that survives SPA navigation and page reloads
🔇 Auto-mute audible tabs while privacy is on (hides the speaker icon)
🖥️ Screen Share Mode — aggressive re-apply + optional global page blur
🚨 Panic Mode — instantly switch to a safe-looking workspace
🌫️ Page blur — hide page content with a single click
🙈 Smart per-site content hiding for YouTube, Gmail, WhatsApp Web, Discord, X/Twitter, Reddit
👤 Profiles — Neutral, Work, Study + fully custom
🎯 Per-site rules engine with priority + conflict detection
💾 Import / export your settings as JSON
🤝 Auto-enable on meetings — Meet, Zoom, Teams, Slack, Discord
🛡️ 100% local — no telemetry, no network calls, no analytics

⌨️ Keyboard shortcuts

Action Linux / Windows macOS
Toggle privacy ON/OFF Ctrl + Shift + X ⌘ Shift X
Toggle Screen Share Mode Ctrl + Shift + S ⌘ Shift S
Panic Mode Ctrl + Shift + P ⌘ Shift P

Shortcuts can be rebound at chrome://extensions/shortcuts.


📦 Install

From the Chrome Web Store

Coming soon.

From source

git clone https://github.com/<your-username>/tabhush.git
cd tabhush
  1. Open chrome://extensions in Chrome, Brave, Edge, or any Chromium browser.
  2. Enable Developer mode (toggle in the top-right corner).
  3. Click Load unpacked and select the project folder.
  4. Pin the TabHush icon to your toolbar.

Requirements

  • Chromium-based browser version 102 or newer (Chrome, Edge, Brave, Opera, Arc, Vivaldi).

🧭 Quick start

  1. Click the TabHush icon in your toolbar — privacy is ON by default.
  2. Visit any site in the default rules list (YouTube, Gmail, Discord, etc.) — title and favicon are now masked.
  3. Press Ctrl+Shift+S before screen sharing to activate Screen Share Mode (faster re-apply + optional blur).
  4. Open Settings to add custom rules, create profiles, or configure Panic Mode.

🧱 Project layout

tabhush/
├── manifest.json
├── src/
│   ├── background/index.js   # service worker · commands · message router · mute sync
│   ├── content/content.js    # title + favicon masking · blur · observers
│   ├── lib/
│   │   ├── defaults.js       # default profiles, rules, and settings
│   │   ├── rules.js          # URL match · rule resolver · conflict detection
│   │   └── storage.js        # chrome.storage.local wrapper + migrations
│   ├── popup/                # toolbar popup UI
│   ├── options/              # full settings page
│   ├── fake-workspace/       # neutral local pages for Panic Mode
│   └── assets/
│       ├── icons/            # extension action icons (16 · 48 · 128 px)
│       └── favicons/         # neutral replacement favicons
├── tests/                    # Node --test unit tests
├── PRIVACY.md
├── STORE_LISTING.md
├── CHANGELOG.md
└── LICENSE

🛠️ How it works

Layer Responsibility
Service worker background/index.js Owns state, routes messages, handles keyboard commands, syncs tab mute state, broadcasts re-apply on every state change.
Content script content/content.js Runs at document_start. Captures the real title/favicon, traps document.title setter, watches <head> with a MutationObserver, re-applies the mask on a fallback interval.
Rules engine lib/rules.js Chrome match-pattern URL matcher with subdomain wildcard semantics, priority + specificity tie-breaking, and conflict detection.
Storage lib/storage.js Versioned wrapper around chrome.storage.local. Deep-backfills nested defaults on upgrade and transparently migrates legacy storage keys.

🧪 Tests

npm test

Runs the built-in Node --test suite covering URL matching, rule resolution, effective-mask computation, and conflict detection.

✔ 11 tests passed
✘ 0 failed

🔐 Privacy

TabHush runs entirely on your device. It does not collect, transmit, sell, or share any personal data, browsing history, or telemetry of any kind. It makes zero network requests.

→ Full policy: PRIVACY.md


🤝 Contributing

Bug reports, feature requests, and pull requests are welcome.

  1. Fork the repo and create a feature branch: git checkout -b feat/my-feature
  2. Run npm test — make sure everything still passes.
  3. Open a pull request with a clear description of the change.

For larger changes, please open an issue first to discuss the design.


⚠️ Disclaimer

TabHush is intended for legitimate privacy during screen sharing, recordings, presentations, and focus sessions. It is not a tool to deceive employers, teachers, or supervisors, or to bypass authorized monitoring or compliance policies. Use responsibly.


📝 Changelog

See CHANGELOG.md.

📄 License

MIT © 2026 TabHush contributors.


Made with care for everyone who's ever panicked when their boss said "share your screen."

About

Hush your tabs. A Chrome extension that masks tab titles, favicons, and audio in real time during screen sharing, meetings, recordings, and presentations. Features Panic Mode, Screen Share Mode, per-site rules, profiles, smart content hiding, and auto-mute. MV3. 100% local — zero telemetry.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages