Skip to content

Latest commit

Β 

History

59 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Modulate β€” Per-Tab Volume Mixer for Chrome



Manifest V3 License: MIT Chrome Extension No Data Collected Stars

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


✨ Overview

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.


πŸ“Έ Screenshots

Modulate UI β€” side by side comparison


Modulate on YouTube β€” single tab Modulate on YouTube β€” multiple tabs
Multiple tabs β€” independent sliders Single tab β€” full control

πŸš€ Features

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

πŸ“¦ Installation

Chrome Web Store listing coming soon. For now, install it manually in under 30 seconds.

Step 1 β€” Download

git clone https://github.com/chinhfey-wayne/modulate.git

Or Download ZIP β†’ and unzip it.

Step 2 β€” Enable Developer Mode

  1. Open Chrome and go to chrome://extensions
  2. Toggle Developer mode ON (top right corner)
  3. Click Load unpacked

chrome://extensions β€” Enable Developer Mode and click Load unpacked

Step 3 β€” Load the Extension

  1. Select the chrome-extension-volume-mixer folder
  2. The Modulate icon appears in your toolbar

Step 4 β€” Use It

  1. Open any tab playing audio (YouTube, Spotify, Twitch…)
  2. Click the Modulate icon in the Chrome toolbar
  3. Use the sliders to mix your audio

πŸ›  How It Works

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.


πŸ”’ Privacy & Security

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.


🧱 Tech Stack

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.


πŸ“ Project Structure

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

πŸ—ΊοΈ Roadmap

  • 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)

🀝 Contributing

Contributions are welcome! This is a solo open-source project and any help is appreciated.

  1. Fork the repo
  2. Create a branch: git checkout -b feat/your-feature
  3. Make your changes
  4. Open a pull request

Please keep PRs focused β€” one feature or fix per PR.


⭐ Support

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

πŸ“„ License

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

About

🎚️ Per-tab volume mixer for Chrome β€” control, mute, boost or pause audio on any tab independently. Beautiful liquid glass UI. No tracking, no account, 100% open source.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages