Pano Scrobbler: a Last.fm client for Windows, Linux and Android
Feature rich scrobbler for Windows, Linux & Android. Supports Last.fm, ListenBrainz, Libre.fm & Pleroma. With regex edits, charts & Discord Rich Presence on PC.
At a glance
- What is it?
- A Kotlin and Compose Multiplatform scrobbler that talks to Last.fm, ListenBrainz, Libre.fm and Pleroma, with regex metadata edits, charts, local CSV export and no ads on any build.
- Who is it for?
- Pano Scrobbler is the rare music scrobbler that treats the desktop as a first-class target rather than a port, and the distribution section is the proof: an APT repository, a COPR, an AUR package, a Nix flake, x64 and arm64 AppImages and tarballs.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 15 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One codebase, four scrobbling services
Pano Scrobbler is written in Kotlin and targets Windows, Linux, Android and Android TV. It started as a Last.fm client and grew into a multi-service one: the feature list names Last.fm, Libre.fm, ListenBrainz, Pleroma and other compatible services, and version 4.46 added the ability to disable scrobbling per service, which only makes sense once you are connected to more than one.
The distinction between a scrobbler and a music player matters if you have not used one. A scrobbler listens for what your existing player is playing, works out the track metadata, and submits it to a service with the timing rules Last.fm defined: a play counts after half the track or four minutes, whichever comes first. That is why Pano Scrobbler is not a player. It has no library, no codec and no playback, and its feature list includes remembering which apps you scrobbled from so you can jump back to them and play directly there.
The statistics side is where this stops being a utility. You get charts with change indicators for specific periods, scrobble count graphs, tag clouds, per-tag detail pages, a random song, album or artist from your listening history, Last.fm search, and views of what followed users are listening to along with their stats. It also imports and exports your settings, edits and blocklists, which matters more than it sounds once your history is large enough that losing it would hurt.
Regex edits are the feature nobody else ships
The metadata problem with scrobbling is that tags are a mess. A track might be tagged with a remaster suffix, a featured artist appended to the title, a wrong album name, or an artist string containing four performers when the service wants one. Most clients make you fix these by hand, one track at a time, forever.
Pano Scrobbler lets you define regex pattern edits, and it also lets you extract the first artist from a string of all performers before scrobbling, which is a specific and genuinely annoying problem that has a specific answer. Alongside that, you can block artists, songs and similar, and have the app skip or mute them automatically when they play, rather than discovering after the fact that a one-minute jingle logged four hundred times.
There is a correction layer as well: edit or delete existing scrobbles, and the app remembers the edits. The interactive notification goes further, letting you view song info, edit, love, cancel or block a track straight from the notification without opening the app, which is where most of the day-to-day friction of scrobbling actually lives.
It also scrobbles to a local CSV or JSONL file on desktop and Android. That sounds like a niche feature until you want to run your own analysis on your own listening history without giving a third party a copy.
Distribution that treats Linux as a first-class citizen
Most cross-platform apps publish one Windows installer and a Linux AppImage and stop. Pano Scrobbler publishes five distinct Linux install paths, which tells you how much of its user base is there.
yay -S pano-scrobbler-binThat is the Arch User Repository package. Debian and Ubuntu get a signed APT repository with a GPG key you fetch from a keyserver and drop into `/etc/apt/keyrings/`, followed by `sudo apt install pano-scrobbler`. Fedora has a COPR:
sudo dnf copr enable kawaiidango/pano-scrobbler
sudo dnf install pano-scrobblerThere is also a Nix flake for anyone running Nix, and the tree contains `update-repos.sh`, which is how those repositories stay current. Each release's notes repeat the same instruction: prefer the OS-specific repository over the GitHub download.
The portable path exists too, for x64 and arm64 AppImages and tar.zst archives. Version 4.45 switched the tarballs from tar.gz to tar.zst, so any script pinning the old extension will break. The AppImage needs `chmod +x` before it runs, has automatic updates, and can add itself to the application launcher. On Windows, winget is the shortest route, though releases are unsigned, so a SmartScreen warning about Unknown Publisher is expected rather than a sign of a problem.
Play and non-Play builds differ in what runs on your phone
This is the detail to read twice. Since version 4.0, the non-Play builds do not use Firebase Crashlytics, Google Play Services, or any closed source libraries. The desktop builds already had that property, and the README states they do not use any closed source libraries either.
The practical consequence is that installing from the F-Droid compatible repository, IzzyOnDroid or Obtainium gives you an app with no Google dependency, and those three routes all provide automatic updates. The Play Store build is the one with Firebase and Play Services, which is the normal arrangement and buys you Play's update channel instead.
For a music client that reads what other apps are playing, that distinction is more than ideological. Google Play Services provides the media session and audio-focus plumbing that many players use for now-playing metadata. An app that avoids it has to rely on platform notification listeners instead, which is why the Android-only feature list includes scrobbling from identification apps: Pixel Now Playing, Shazam, Ambient Music Mod and Audile. On a device without Play Services those are the paths that still work.
The non-Play builds publish a SHA256 fingerprint for verification, which is worth using if you install from anywhere other than an app store.
Android TV and Chromebooks are supported too, and version 4.44 added an outlined focus indicator for DPAD navigation, which tells you the TV build is maintained rather than merely compiling.
Platform-specific extras worth knowing about
The feature list is organised by platform, which is unusually honest about what you get on what.
Desktop only: customizable Discord Rich Presence. Version 4.44 specifically improved the reliability of fetching album art for it, because Rich Presence that shows a grey square is worse than none. That same release switched the Windows tray to the native tray menu so the app does not spin up the entire Compose rendering engine just for a tray icon, which also made startup significantly faster when minimized to the tray.
Android only, excluding TV: scrobbling from the identification apps listed above, charts as a customizable home-screen widget, and digests of your top scrobbles delivered as a notification at the end of every week, month and year.
Desktop and Android, excluding TV: local CSV and JSONL export, the interactive notification, a collage generator, personal tags editable from the info screen, and control from automation apps on Android or the command line on desktop.
Shared across all four platforms: no ads ever, themes, network proxy support, viewing song, album, artist, album artist and tag details, and scrobble views scoped to a time period such as last year or last month.
The build system explains the reach. `composeApp/` holds shared code, `androidApp/` and `desktopApp/` the platform shells, with `extras-common/`, `extras-play/` and `extras-nonplay/` separating the Play-dependent code from the rest. That last directory is the whole Play Services argument expressed as a build layout.
Credits, licence and the Android scrobbling gap
The project is GPL-3.0, which fits software that large communities end up forking into app stores that are less welcoming of that licence.
The credits section is short and points at where the interesting parsing came from: the YouTube title parser is credited to Web Scrobbler and Metadata Filter, two projects from the same ecosystem, along with icons from pictogrammers and Material Symbols, and a genres filter from somewhere the README text cuts off.
There is a hole worth naming. Pano Scrobbler can scrobble from identification apps like Shazam and Audile, which is what makes Android-only scrobbling work at all in a design where the app never plays audio itself. That is not a limitation so much as a strategy, but it does mean the Android experience depends on another app correctly identifying what is playing around you. Nothing in the README addresses what happens when two identification apps are running at once.
The GPL licence also means the desktop and Android source, including the `extras-nonplay/` tree, is available to read when you would rather not take the description on trust. For an app that reads metadata from every other app on your phone, that is the file to go and read.
On activity, version 4.46 shipped on 2026-09-27 with the same date as the last push, following 4.45 on 2026-09-18 and 4.44 on 2026-09-14. Three releases in two weeks is a fast cadence for a project with 54 open issues, and it is the cadence to expect if you follow the stable channel rather than the beta one.
Editorial conclusion
Pano Scrobbler is the rare music scrobbler that treats the desktop as a first-class target rather than a port, and the distribution section is the proof: an APT repository, a COPR, an AUR package, a Nix flake, x64 and arm64 AppImages and tarballs. The part that will matter most to you is the split between Play and non-Play builds, because since version 4.0 the non-Play builds carry no Firebase Crashlytics and no Google Play Services, which changes what the app is doing on your phone. Start on Linux with the repository rather than the AppImage if you want updates handled for you, connect ListenBrainz or Last.fm in Settings, and write your metadata rules as regex rather than reaching for a manual fix on every track.
Frequently asked questions
What exactly is Pano Scrobbler?
A Kotlin scrobbler that runs on Windows, Linux, Android and Android TV and submits what your existing players are playing to Last.fm, Libre.fm, ListenBrainz, Pleroma and other compatible services. It does not play music itself. Statistics, charts, regex metadata edits and blocking are the parts beyond basic scrobbling.
Which music services does Pano Scrobbler support?
Last.fm, Libre.fm, ListenBrainz and Pleroma, plus other compatible services. Since version 4.46 you can disable scrobbling per service, so leaving one connected while silencing another is a setting rather than a reinstall.
How do I install Pano Scrobbler on Linux?
There is an APT repository for Debian and Ubuntu, a COPR for Fedora, an AUR package for Arch, a Nix flake, and AppImages plus tar.zst archives for x64 and arm64. The project's own release notes ask you to prefer the OS-specific repository, which is what gets you updates handled automatically.
Do the Android builds send data to Google?
Not the non-Play ones. Since version 4.0 the F-Droid, IzzyOnDroid and Obtainium builds use no Firebase Crashlytics, no Google Play Services and no closed source libraries, and those routes provide automatic updates. The Google Play build is the one with the Google dependencies.
Can Pano Scrobbler clean up messy track metadata automatically?
Yes, that is one of its distinguishing features. You can define regex pattern edits, extract the first artist from a string of all performers, block artists and songs so they are skipped or muted, and edit or delete scrobbles that already went through, with the edits remembered.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/kawaiidango-pano-scrobbler)