Medium guide
Audio and podcast projects do not record the same thing.
Music has mature clients that submit track plays to independent history services. Podcast projects usually synchronize subscriptions, playback position or completion inside a smaller set of compatible applications.
Four roles to keep separate
- Capture client
- Observes playback and submits an event to another system.
- Destination
- Stores listening history independently of the player that created it.
- Bridge
- Receives one source's playback data and forwards or normalizes it for another destination.
- Playback-state sync
- Moves subscriptions, position or completion between compatible podcast clients. It does not automatically create a portable event history.
Music and general-audio projects
| Project | Role | Documented behavior |
|---|---|---|
| Last.fm | Destination and client family | Receives submitted track plays and keeps a listening history. |
| ListenBrainz | Destination and API | Accepts timestamped listens through an open submission service and compatible clients. |
| Maloja | Self-hosted destination | Stores personal music scrobbles and presents listening statistics. |
| Web Scrobbler | Capture client | Observes supported web-player playback in the browser and submits it to configured services. |
| Pano Scrobbler | Capture client | Observes supported device playback and submits listening events to supported services. |
| multi-scrobbler | Bridge | Collects playback from supported sources and forwards it to supported destinations. |
| Mopidy-Scrobbler | Player extension | Submits Mopidy track playback to Last.fm or Libre.fm. Its repository currently asks for a dedicated maintainer. |
Podcast projects
These projects solve useful synchronization and resume problems. Their records should not be described as equivalent to a general listening-history destination unless the project documents that behavior.
| Project | Role | Documented behavior |
|---|---|---|
| gPodder | Podcast client and sync participant | Queues subscription and episode actions, including playback position, for compatible synchronization services. |
| AntennaPod | Podcast client and sync participant | Synchronizes subscriptions and episode actions through supported providers while keeping local playback state. |
| Audiobookshelf | Self-hosted application state | Stores per-user podcast and audiobook playback sessions and progress inside one self-hosted system. |
What a portable podcast event needs
- Episode subject
- Feed URL, episode GUID and any source-local identifiers known when playback occurred.
- Event kind
- Started, progress, completed, abandoned or corrected. A current position is not automatically a completed listen.
- Time
- The time represented by the event, kept separate from import or receipt time.
- Progress
- Position and duration in seconds when the source supplied them.
- Provenance
- The player, device, account context and whether the record came from observation, import or manual correction.
- Privacy
- A clear private default, deletion path and export path. Listening history can reveal routines and private interests.
Sources checked 31 August 2026: the linked project repositories and documentation; Mopidy-Scrobbler README; gPodder synchronization implementation; AntennaPod synchronization implementation; and Audiobookshelf playback-session implementation.
A project entry describes documented behavior; it is not a ranking. Correct a role or source through Scrobble.dev, or compare music projects in the catalogue.