A native, lightweight macOS menu bar app that displays synchronized scrolling lyrics for Apple Music and Spotify.
- 🎵 Dual Player Support: Seamlessly detects whether Apple Music or Spotify is playing.
- 🎛️ Interactive Dropdown & Media Controls: Left-click the menu bar to reveal a beautiful popover with full scrolling lyrics, a seek bar, and playback controls.
- 💾 Smart Local Caching: Saves lyrics to a local JSON cache to completely eliminate API calls for songs you've played before.
- 🛜 Offline Mode: Falls back to fetching native plain-text lyrics from Apple Music via AppleScript when the internet or
lrclib.netis unavailable. - 📜 Native & LRCLIB Support: Queries Apple Music natively for lyrics or falls back to
lrclib.netto automatically fetch synchronized lyrics ([mm:ss.xx]). (Note: Spotify removed its lyrics API, so Vinyl relies exclusively onlrclib.netfor fetching Spotify lyrics.) - ✨ Smooth Marquee Scrolling: Dynamically and smoothly scrolls long lyric lines within your menu bar without jittering or overflowing into the notch.
- ⚙️ Customizable Preferences: Adjust the marquee scroll speed, menu bar text appearance, and toggle the dropdown UI from a native SwiftUI settings window.
- 🌓 Adaptive Icon: Uses a custom vinyl logo that dynamically adapts to macOS Light and Dark modes.
- ⚡ Instant Sync: Uses macOS system notifications (
DistributedNotificationCenter) for zero-delay, event-driven updates when tracks change, eliminating CPU-heavy interval polling.
You can easily install Vinyl using Homebrew:
brew tap VariableThe/tap
brew install --cask vinylAlternatively, you can download the latest pre-built release:
- Go to the Releases page.
- Download the
Vinyl.zipfile. - Extract the ZIP file and drag
Vinyl.appinto yourApplications/folder. - Double-click to run!
Note: Upon first run, macOS will prompt you to grant
Vinylpermission to control "System Events" and "Music"/"Spotify". Please click Allow so the app can fetch currently playing metadata.
⚠️ Note on macOS Gatekeeper ("App is damaged" error) Because Vinyl is an open-source utility and is not code-signed with a paid Apple Developer ID, macOS will apply a quarantine flag to the application upon manual download, throwing a false "damaged app" warning.To fix this, simply open your Terminal and run the following command to strip the quarantine flag:
xattr -cr /Applications/Vinyl.appOnce run, you can open Vinyl normally!
You will need the Swift toolchain installed (comes with Xcode Command Line Tools).
-
Clone the repository:
git clone https://github.com/VariableThe/Vinyl.git cd Vinyl -
Build and bundle the app using the provided
Makefile:make app
-
The command will output a
Vinyl.appfolder. Simply drag this to yourApplications/folder and double-click to run!
To run the app directly from source in development mode:
swift runInterested in how Vinyl stacks up against choices like LyricsX, LyricFever, or LyricGlow? Check out the Ecosystem Comparisons guide.
Vinyl is designed to be a fully interactive macOS application that can instantly strip down into a ghost process.
- Event-Driven Efficiency: Vinyl doesn't waste CPU cycles constantly polling for track updates. It uses macOS native event notifications to sync instantly only when a track changes.
- Smart Caching: Your bandwidth matters. Lyrics are cached in a local JSON file, meaning if you loop a song 100 times, Vinyl only fetches the data once.
- Granular Configuration: Vinyl gives you the ability to toggle any UI feature or element that you don't want. You can go from the most minimalist indicator for playing music, all the way to a menu bar lyrics display and drop down media controls with blur and album covers to everything in between. You can use Vinyl how YOU want to.
Concept inspired by LYRA and boring.notch.



