Browser extension that normalizes video/audio element volume on selected high-noise websites.
- Automatic volume normalization on supported websites
- Adjustable global target volume (0-100)
- Per-site enable/disable toggles
- Persistent settings using browser sync storage
- Works with dynamic page updates via MutationObserver
- X / Twitter
- TikTok
- YouTube
- Twitch
- Dailymotion
- Vimeo
- Snapchat
- Tumblr
background.js: Persists settings outside the popup lifecyclecontent.js: Applies and re-applies normalized volume on media elementspopup.html: Extension popup UIpopup.js: Popup behavior and settings persistencemanifest.json: Cross-browser MV3 source manifestscripts/build.js: Produces Chrome and Firefox build outputs indist/package.json: Build and validation scripts
- Run
npm install. - Run
npm run build. - Use
dist/chrome/for Chromium browsers anddist/firefox/for Firefox.
- Run
npm install. - Run
npm run build. - Open
chrome://extensions(orbrave://extensions). - Enable Developer Mode.
- Click
Load unpacked. - Select
dist/chrome/.
- Run
npm install. - Run
npm run build. - Open
about:debugging#/runtime/this-firefox. - Click
Load Temporary Add-on. - Select
dist/firefox/manifest.json.
npm run check: Builds the extension and runs script syntax checks plus Firefox linting.
- Settings are stored in
chrome.storage.sync. - Content script uses exact domain/subdomain matching (no loose substring matching).
- Popup writes are proxied through the background script so final saves survive popup teardown.
- Build output strips BOMs and generates browser-specific manifests from the root source manifest.
MIT