YTM Enhancer supercharges YouTube Music to make it the best browser-based media player.
It upgrades YouTube Music in your browser with smarter controls, automation, and visual enhancements, without forcing you into a replacement app or wrapper.
If you love the ubiquity of YouTube Music's service but want a more fully-featured listening experience, this extension is for you.
- Adds missing quality-of-life features from other media players
- Improves daily listening flow with fewer clicks and better controls
- Keeps YouTube Music in your browser without replacing the native app
- Manage multiple YouTube Music tabs, effortlessly switching and controlling playback
- Private by design: no analytics, no tracking, and no external backend services.
- Supports all major browsers: Chrome, Edge, and Firefox
Install YTM Enhancer from your browser's extension store:
| Browser | Store |
|---|---|
| Chrome | Chrome Web Store |
| Edge | Microsoft Edge Add-ons |
| Firefox | Firefox Add-ons |
Mini Player's extension PiP window depends on the experimental Document Picture-in-Picture API. When that API is unavailable, YTM Enhancer disables the extension PiP controls or falls back to native video PiP where practical.
Firefox users may need to enable dom.documentpip.enabled from about:config
before the full Mini Player experience is available.
Use manual loading when developing or testing a local build.
- mise for the pinned project toolchain
Run mise install from the repository root before installing dependencies.
Without mise, use Node.js 24, pnpm 11.9.0, Go 1.24, .NET 10, actionlint 1.7.12,
and VHS 0.11.0. macOS menu bar app work also requires Xcode's Swift toolchain.
Show Chrome / Chromium installation steps
- Clone this repository.
- Install dependencies:
pnpm install - Build Chrome output:
pnpm run build:chrome - Open
chrome://extensions. - Enable Developer mode.
- Click "Load unpacked".
- Select
dist/chrome.
Show Edge installation steps
- Clone this repository.
- Install dependencies:
pnpm install - Build Edge output:
pnpm run build:edge - Open
edge://extensions. - Enable Developer mode.
- Click "Load unpacked".
- Select
dist/edge.
Show Firefox installation steps
- Clone this repository.
- Install dependencies:
pnpm install - Build Firefox output:
pnpm run build:firefox - Open
about:debugging#/runtime/this-firefox. - Click "Load Temporary Add-on".
- Select any file inside
dist/firefox(typicallymanifest.json).
YTM Enhancer is private by design. It has no analytics, no tracking, and no external backend services.
| Permission | Why It Is Needed |
|---|---|
activeTab |
Lets the popup and hotkeys interact with your currently active YouTube Music tab when you trigger extension actions. |
alarms |
Powers time-based automation, including Sleep Timer and background scheduling logic. |
notifications |
Shows native desktop notifications for track changes and related playback events. |
scripting |
Injects and runs extension scripts on YouTube Music to provide feature behavior in-page. |
storage |
Saves your module settings locally in the browser so preferences persist. |
https://music.youtube.com/* |
Limits extension functionality to YouTube Music pages where features are intended to run. |
https://lh3.googleusercontent.com/* |
Loads album art assets used for now-playing and notification UI. |
See PRIVACY.md for full details on data handling, permissions, and privacy guarantees.
YTM Enhancer is built as a modular WebExtension. New feature work should live in module-owned code and use the shared runtime APIs and popup UI helpers.
Start with:
- PROJECT.md for project architecture, scope, and design principles
- CONTRIBUTING.md for contribution workflow
- docs/module-api.md for module runtime APIs
- docs/shared-ui.md for popup bindings and shared UI components
- docs/hotkeys.md for module-owned shortcut registration
| Task | Command |
|---|---|
| Install pinned tools | mise install |
| Install dependencies | pnpm install |
| Format | pnpm run format |
| Lint | pnpm run lint |
| Typecheck | pnpm run typecheck |
| Test | pnpm run test |
| CI-equivalent check | pnpm run check |
| Dev build for local optesting | pnpm run dev:build |
| Render CLI demo video | pnpm run cli:demo-video |
| Production build | pnpm run build |
| Package store zips | pnpm run package |
Common commands are also available through mise, for example mise run check
mise run dev-build, and mise run cli-demo-video.
- Chrome watch build:
pnpm run dev:chrome - Edge watch build:
pnpm run dev:edge - Firefox watch build:
pnpm run dev:firefox
Contributions are encouraged. Open an issue for bugs, UX problems, or feature requests, or open a focused PR with tests and verification notes.
See CONTRIBUTING.md for details on the module contribution workflow.
MIT. See LICENSE.