A Last.fm scrobbler for Apple Music on macOS.
Menu bar agent. SwiftUI. Notarized.
↓ Download Scrobblr.dmg · Setup · Privacy · Build from source
Scrobblr watches Apple Music for what you're playing and submits it to Last.fm. It lives in your menu bar, queues plays while you're offline, and quietly catches up when you're back online.
| Reliable | Every play that meets Last.fm's 50% / 4-minute rule is queued and submitted. Pending plays survive reboots, sleep, and offline stretches. |
| Private | No analytics. No server in the middle: your plays go straight to Last.fm, and album art comes from Apple's anonymous Search API. |
| Honest | Custom Music access permission flow with pre-prompt explainers. Credentials live in your Keychain. Logs redact track titles. |
| Yours | Bring your own Last.fm API key. No shared key that can break the app for everyone if it gets revoked. |
| Quiet | Pause for an hour, ignore specific artists, override the scrobble threshold, skip podcasts and audiobooks. |
- Download
Scrobblr.dmgfrom the latest release. - Open the DMG and drag Scrobblr to Applications.
- Launch it. The welcome window walks you through setup in four steps.
Move Scrobblr to Applications before launching. Running from Downloads triggers macOS quarantine translocation, which breaks Launch-at-login and software updates. Scrobblr warns on first launch if it detects this.
Each user registers their own Last.fm application. It's free and takes 30 seconds.
- Visit https://www.last.fm/api/account/create.
- Fill in any Application name. Leave Callback URL and Application homepage blank.
- Submit. Last.fm shows a 32-character API Key and a 32-character Shared Secret.
- Paste both into the Scrobblr welcome window.
Both values are stored in your macOS Keychain and only sent to Last.fm.
Click Sign in with Last.fm. The browser opens to Last.fm's approval page. Click Yes, allow access. Scrobblr detects the approval and signs you in.
macOS asks once: "Scrobblr would like to control Music." Click OK. Scrobblr only reads; it cannot start, stop, or change tracks.
Scrobblr lives in the menu bar. Play music. Scrobbles flow once tracks cross Last.fm's threshold.
Menu bar
- Smooth-progress now-playing display with album art
- Love and un-love the current track
- Origin badge: Library, Apple Music, Stream, Podcast, Audiobook, Music Video
- Live status: scrobbled, queued, submitting, paused, needs re-auth
Settings
- Account: sign in and out, view profile, manage Last.fm app authorizations, replace API key
- Playback: Music access status, scrobble-threshold sliders, content filter, ignored artists and tracks
- General: launch at login, software updates, replay welcome flow, export diagnostics, report a bug
- Activity: today and 7-day scrobble totals, pause scrobbling, submission queue, recent scrobbles
- About: version, acknowledgments, privacy policy, license
Engine
- Distributed-notification-based playback detection
- Monotonic elapsed-time accumulator immune to wall-clock skew
- Honors Last.fm's per-track ignore responses
- Sleep and network-aware queue management
- Sparkle 2 EdDSA-signed auto-updates
Scrobblr uses two playback signals, since neither alone is enough on current macOS.
DistributedNotificationCenter ──┐
(com.apple.Music.playerInfo) │
├──► PlaybackObserver ──► ScrobbleEngine ──► Queue ──► Last.fm
NSAppleScript poll (Music.app) ──┘
(1 Hz position, fallback metadata)
Architecture details and the build pipeline live in DEVELOPMENT.md.
Scrobblr doesn't run a server. The author doesn't receive your data. Total outbound network traffic:
- Last.fm (
ws.audioscrobbler.com): scrobbles and auth - Apple iTunes Search (
itunes.apple.com): anonymous album-art lookup - GitHub Pages: software update checks via Sparkle
Full policy: PRIVACY.md.
Music is playing, but Scrobblr says "Nothing playing". Scrobblr detects playback when a track starts or changes, so it can miss music that was already playing before it launched. Pause and play once to refresh.
The progress bar is stuck at 0. Music access was denied. Settings → Playback → Recheck. If Denied, click Open System Settings and re-enable Scrobblr under Privacy & Security → Automation → Scrobblr → Music.
Scrobbles aren't showing up on Last.fm. A track must play for at least 50% of its duration or 4 minutes (your threshold may differ). Check Settings → Activity for queue and recent submissions. If "Sign-in expired" appears, use Sign in again in the menu bar or Settings → Account.
My account is on two Macs. Apple Music syncs queue across devices. Both Macs running Scrobblr will double-scrobble. Run Scrobblr on only one machine.
How do I see logs?
log stream --predicate 'subsystem == "app.scrobblr"' --info
Categories: playback, scrobble, api, auth, lifecycle. Track titles and artists are redacted in logs unless macOS private-data logging is enabled.
How do I uninstall?
Quit Scrobblr from the menu bar. Drag the app to Trash. Delete ~/Library/Application Support/Scrobblr/. Remove Keychain items by searching "Scrobblr" in Keychain Access. Revoke API access at https://www.last.fm/settings/applications.
Open an issue at https://github.com/asharahmed/scrobblr/issues. Please include:
- macOS version (
sw_vers -productVersion) - Scrobblr version (Settings → About)
- A diagnostics bundle (Settings → General → Export diagnostics)
MIT. See LICENSE.
Built with help from Claude Opus (Anthropic).
Last.fm® is owned by CBS Interactive Inc. Apple Music® is owned by Apple Inc.
Scrobblr is independent and unaffiliated.