Tip
This branch covers the macOS app. Looking for another device? Each has its own branch with setup instructions:
- iPhone:
ios - Windows (beta):
windows-app-sdk
- Scrobble songs playing in Apple Music or Spotify to last.fm
- Update your last.fm now-playing status
- Queue unsuccessful scrobbles for retry
- See how many times you've scrobbled an artist or track
- Artist biographies, tags & similar artists
- Artist top albums & tracks
- Album artwork and links to last.fm
- Recent scrobbles
- All-time top artists, albums & tracks
- Friends' recent listening activity
- Love / unlove the currently playing track
- Tag the current song or artist on Last.fm from the macOS menu bar’s right-click menu; view your tags and community tags before applying up to 10 new tags
- Menu bar access
- Optional Dock icon
- Open on logon, with scrobbling initialized even when no window opens
- System, Light, or Dark appearance and adjustable menu bar background opacity in Settings → General
- In-app macOS updates with Sparkle: daily checks, verified downloads, installation and relaunch, plus optional automatic installation
- macOS 14.6 (Sonoma) or above
- Apple silicon or Intel Mac (universal build means works for both, but mayyy not be supported forever!)
- Apple Music or Spotify for playback
- A last.fm account
- Download
scrap-v1.6-universal.zipfrom Releases (or get it from the website that works too) - Extract the ZIP and drag
Scrap.appinto your Applications folder - Open scrap
- Open Apple Music and play something
- Allow scrap to access Music when macOS asks
- Click Connect last.fm, approve access in your browser, then return to scrap and click I've approved it
That's it. Keep scrap running while you listen.
To scrobble Spotify, enable it in Preferences → Services. Spotify is off by default so it does not duplicate an existing Spotify–Last.fm connection.
To scrobble [untitled], enable it in Preferences → Services and allow scrap in System Settings → Privacy & Security → Accessibility when prompted. Scrap uses the [untitled] project name as the Last.fm album name. [untitled] is off by default.
Important
The current macOS build isn't signed (because it's kinda 200$ a year). If macOS blocks it, go to System Settings -> Privacy & Security -> Open Anyway after trying to open it.
Visit Apple Support for more info.
Starting with 1.4, Settings → Updates can download and install updates inside Scrap. Daily checks are enabled by default; automatic download and installation can be enabled there too. Earlier versions need one final manual update to get this feature.
Maintainers: see Preparing and publishing updates for the signed release and feed workflow.
You'll need Xcode 27 and your own last.fm API credentials.
- Clone the repo
- Create a
.envfile in the project root:
LASTFM_API_KEY=your_api_key
LASTFM_SHARED_SECRET=your_shared_secret- Open
scrap.xcodeprojin Xcode - Select the
scrapscheme and your Mac as the destination - Build and run
The build copies the last.fm app configuration into the app bundle. People using your build connect their own last.fm accounts.
Caution
Keep .env gitignored. The build includes its contents in the app bundle, so don't put personal account credentials in it.
- Make sure you're playing something in an enabled app (Apple Music or Spotify)
- Check System Settings -> Privacy & Security -> Automation
- Allow scrap to access Music
- Make sure scrobbling isn't paused
- Keep scrap running while you listen
- Check your internet connection
- Use Retry pending if there are queued scrobbles
That's normal. You can access it from the music-note icon in the menu bar.
To fully close it, choose Quit scrap from the menu.
If you're building from source, check that .env contains both required values, then rebuild the app.
If you're having issues, open an issue. Include your macOS version, scrap version, and what happened. For the iPhone or Windows versions, see the support section on their branch.
Contributions are welcome: bug fixes, platform improvements, docs, etc.
See CONTRIBUTING.md for setup, platform branches, testing, and pull request guidance.
Suggested workflow:
- Fork the repo
- Create a feature branch
- Make changes
- Open a PR with a clear description and testing notes
