Every tab, its own volume β control every tab's audio independently with a beautiful liquid glass UI.
Install Guide Β· Features Β· How It Works Β· Privacy Β· Contributing
Modulate is a free, open-source Chrome Extension that gives you a dedicated volume mixer for every browser tab β just like Windows Volume Mixer, but built natively into Chrome.
Adjust, mute, boost, or pause audio on any tab β YouTube, Spotify Web, Twitch, podcasts, video calls β all from one elegant glassmorphism popup. No account. No tracking. No remote code. 100% local.
Perfect for: streamers, music lovers, multitaskers, students, remote workers, and anyone who hates having tabs blast audio unexpectedly.
![]() |
![]() |
| Multiple tabs β independent sliders | Single tab β full control |
| Feature | Description |
|---|---|
| ποΈ Per-Tab Volume Sliders | Control each tab's volume from 0% to 150% independently |
| π Global Output Master | One slider to rule all tabs simultaneously |
| π Mute / Unmute | Instantly silence any tab without losing its volume setting |
| βΈοΈ Pause / Resume Media | Pause all media on a tab directly from the popup |
| β‘ Auto-Boost | Boost all tabs to 150% with one click |
| π Reset All | Return all tabs to 100% in one click |
| π Mute All | Silence every tab at once |
| π Audible Tabs First | Tabs currently playing audio always float to the top |
| β Restore Removed Tabs | Add tabs back after removing them from the list |
| π Live Waveform | Animated audio bars next to playing tabs |
| πΎ Persistent Settings | Volume levels survive page reloads and tab navigations |
| π¨ Liquid Glass UI | Premium frosted glass aesthetic, smooth spring animations |
Chrome Web Store listing coming soon. For now, install it manually in under 30 seconds.
git clone https://github.com/chinhfey-wayne/modulate.gitOr Download ZIP β and unzip it.
- Open Chrome and go to
chrome://extensions - Toggle Developer mode ON (top right corner)
- Click Load unpacked
- Select the
chrome-extension-volume-mixerfolder - The Modulate icon appears in your toolbar
- Open any tab playing audio (YouTube, Spotify, Twitchβ¦)
- Click the Modulate icon in the Chrome toolbar
- Use the sliders to mix your audio
Modulate uses the Web Audio API to intercept and control audio at the browser tab level β without modifying websites or requiring any server.
[Chrome Tab Audio]
β
βΌ
[injected.js β MAIN world]
AudioContext intercepted at document_start
GainNode inserted before audio destination
HTMLMediaElement.volume overridden
β
βΌ
[background.js β Service Worker]
Owns per-tab { volume, muted } state
Volume β content.js β injected.js gain
Mute β native chrome.tabs.update({ muted })
Persists per tab in chrome.storage.local (cleared when the tab closes)
Global hotkeys via chrome.commands
β
βΌ
[popup.js β UI Layer]
Per-tab sliders β sendMessage β background
Mute button reflects real native mute state
Stable row ordering + in-place card updates
Live tab detection via chrome.tabs events
Volume vs. mute β two independent facts. Volume is scaled inside the page by
injected.js (works on every tab at once, including background tabs and Google
Meet). Mute is Chrome's native tab mute, decoupled from volume β a tab can be at
50% and muted, and unmuting returns it to 50%. Settings are remembered per tab
for the tab's lifetime and cleared when it closes.
Why world: MAIN?
Chrome MV3 content scripts run in an isolated world by default. To control actual AudioContext gain nodes created by the page (YouTube's player, Spotify's engine, etc.), the script must run in the MAIN JavaScript context. This is why injected.js uses world: "MAIN" β it's the only reliable way to hook into real audio pipelines.
Modulate is built with zero-trust privacy principles:
| Claim | Details |
|---|---|
| β No data collected | We collect absolutely nothing. No analytics, no telemetry, no crash reports |
| β No remote code | All code runs locally. No CDN scripts, no external fetches |
| β No account required | No sign-up, no login, no email |
| β No network requests | The extension never makes any outbound HTTP calls |
| β Open source | Every line of code is public and auditable right here |
| β Manifest V3 | Built on Chrome's latest, most secure extension platform |
| β Minimal permissions | Only tabs, storage, scripting |
| β Per-tab local storage | Settings stored in chrome.storage.local, keyed by tab, and cleared when the tab closes β never leaves your machine |
You can audit the full source code in minutes. There are no minified bundles, no obfuscated code, and no build step β what you see is what runs.
| Layer | Technology |
|---|---|
| Platform | Chrome Extension β Manifest V3 |
| Audio Engine | Web Audio API (AudioContext, GainNode) |
| UI | Vanilla HTML + CSS (glassmorphism / liquid glass) |
| Logic | Vanilla JavaScript (ES2020+) |
| Fonts | Manrope, Inter, JetBrains Mono (Google Fonts) |
| Icons | Material Symbols Outlined |
| Storage | chrome.storage.local + localStorage |
| Scripting | chrome.scripting.executeScript (MAIN world) |
No frameworks. No bundlers. No dependencies. Pure browser APIs.
chrome-extension-volume-mixer/
βββ manifest.json # Extension manifest (MV3)
βββ background.js # Service worker β volume logic, tab events
βββ injected.js # MAIN world script β AudioContext hook
βββ content.js # Isolated world bridge
βββ popup.html # Extension popup UI
βββ popup.css # Glassmorphism styles + animations
βββ popup.js # Popup interactivity
βββ icons/
β βββ logo.png # Extension icon
βββ assets/ # README screenshots
- Chrome Web Store release
- Keyboard shortcuts for quick mute/boost
- Per-tab volume memory across sessions
- Dark mode support
- Firefox / Edge port
- Mini mode (compact popup)
Contributions are welcome! This is a solo open-source project and any help is appreciated.
- Fork the repo
- Create a branch:
git checkout -b feat/your-feature - Make your changes
- Open a pull request
Please keep PRs focused β one feature or fix per PR.
If Modulate saved your sanity during a late-night YouTube session, consider:
- β Starring this repo β it helps others discover it
- π Reporting bugs via Issues
- π‘ Suggesting features via Discussions
- π’ Sharing it with anyone who needs per-tab volume control
MIT License β free to use, modify, and distribute.
Copyright (c) 2026 ChinhFey
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Built with β€οΈ by ChinhFey
Modulate β the last volume extension you'll ever need.
Keywords: chrome extension volume control, per tab volume mixer, chrome tab audio control, browser volume mixer, tab volume controller, chrome audio mixer, youtube volume control extension, web audio api chrome extension, volume booster chrome, mute tab chrome, chrome sound mixer, audio control chrome extension, tab audio manager, chrome volume per tab, browser audio mixer



