A native macOS YouTube Music player that doesn't get in your way.
Cadence is an unofficial YouTube Music player for macOS. It is not affiliated with, endorsed by, or sponsored by Google or YouTube.
Cadence (n.) β the rhythmic flow of a sequence; in music, a chord progression that resolves a phrase. Felt right for an app whose only job is to keep your music going.
There's no official YouTube Music app for macOS. Browser tabs get killed, buried, and steal the media keys away from any other audio you might be playing. Existing third-party apps push ads. Cadence wraps music.youtube.com in a clean native window, hooks it into the system media stack (Now Playing, media keys, headphone remotes), and otherwise stays out of your way.
- π΅ Native window hosting the official YouTube Music web app
- π Works with macOS media keys, AirPods, Bluetooth headphones, and Control Center Now Playing
- π Menubar mini-player with current-track info and transport controls
- π Stays logged in across launches (cookies persist via
WKWebsiteDataStore) - π« No ad injection, no scraping, no API misuse β works best with YouTube Music Premium for an ad-free experience
- π¨ Built with SwiftUI, macOS 14+
- π» Universal binary β runs natively on Apple Silicon and Intel Macs
- macOS 14 (Sonoma) or later
- A Google account with access to YouTube Music
- (Recommended) YouTube Music Premium for ad-free playback
Two options. Homebrew is the easier one if you already have it.
brew tap arnoudhgz/cadence
brew install --cask cadenceOr as a single one-liner:
brew install --cask arnoudhgz/cadence/cadenceThat's it β first launch works straight from the Dock. Cadence isn't yet Apple-notarized, but the cask handles the Gatekeeper bypass for you automatically (it strips the macOS quarantine attribute in a postflight step right after install), so you don't need to do the right-click β Open dance.
To update later:
brew upgrade --cask cadenceTo uninstall (add --zap to also wipe login cookies, cache, preferences):
brew uninstall --cask cadenceThe tap source lives at arnoudhgz/homebrew-cadence.
Cadence is distributed as a .zip from GitHub Releases. It is not signed with an Apple Developer ID (yet), so the first launch requires one extra click to get past macOS Gatekeeper.
Go to the latest release and download Cadence.zip from the Assets section.
- Open your Downloads folder.
- Double-click
Cadence.zipto unzip it β you should now seeCadence.app. - Drag
Cadence.appinto your Applications folder.
Because the app is unsigned, double-clicking Cadence.app will be blocked the first time. macOS shows a dialog like "Cadence cannot be opened because Apple cannot check it for malicious software". The workaround takes 5 seconds and is only needed once:
- Open
Applicationsin Finder. - Right-click (or Ctrl-click)
Cadence.appβ choose Open. - A new dialog appears with the same warning but now with an Open button β click it.
- Cadence launches. Every subsequent launch is normal β double-click, β-Space + "Cadence", Dock click, all work.
If you accidentally double-clicked first and saw the "cannot be opened" dialog with only a "Move to Bin" button, just dismiss it and then follow the right-click β Open path above. macOS will remember your choice.
On first launch, Cadence opens music.youtube.com and asks you to sign in with your Google account. Your login persists across launches.
Use YouTube Music's own keyboard shortcuts (space to pause, β/β to seek, etc.) β Cadence doesn't intercept them.
| Key | Action |
|---|---|
| F7 | Previous track |
| F8 | Play / pause |
| F9 | Next track |
These work even when Cadence is in the background. If you have other media apps running (Spotify, Music.app, browser tabs playing audio), macOS routes the key to whichever app played audio most recently β close the others or pause them if you want Cadence to win.
| Gesture | Action |
|---|---|
| Single click (stem or button) | Play / pause |
| Double click | Next track |
| Triple click | Previous track |
| Press-and-hold | Siri / noise control (system default, not Cadence) |
Any headset that sends standard AVRCP commands (the Bluetooth media protocol) or an inline-remote play/pause click will work β Cadence accepts the same play, pause, next, previous, and seek-to-position commands as Apple Music does, via MPRemoteCommandCenter. If your headset's button maps to one of those, it will route through.
The macOS Now Playing module (in Control Center on macOS 14+, or the menubar widget) shows the current track, artwork, and a scrubber. Scrubbing in there seeks Cadence.
Click the music-note icon in the right side of the menubar to get a compact player with:
- Current track + artist + artwork
- Play / pause / previous / next buttons
- Show Cadence (reopens the main window if it was closed)
- Quit
git clone https://github.com/arnoudhgz/cadence.git
cd cadence
# One-time tooling install
brew install xcodegen
# Generate the Xcode project
xcodegen generate
# Open in Xcode and Run, or build from CLI:
xcodebuild -project Cadence.xcodeproj -scheme Cadence -configuration Debug buildRequires full Xcode (the Mac App Store one, not just Command Line Tools). Verify with xcodebuild -version before running the steps above.
To regenerate the app icon from icon-source.png (1024Γ1024 PNG at the repo root):
./scripts/generate-app-icon.shThis rebuilds Cadence/Resources/Assets.xcassets/AppIcon.appiconset/ from a single source PNG using sips.
If Cadence makes your day a little better, buy me a coffee on Ko-fi β. Not required, never paywalled β purely optional.
Early development. The first tagged release will be v0.1.0. See CHANGELOG.md for what's in flight.
MIT Β© Arnoud Beekman.
