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

ProjectRoleDocumented behavior
Last.fmDestination and client familyReceives submitted track plays and keeps a listening history.
ListenBrainzDestination and APIAccepts timestamped listens through an open submission service and compatible clients.
MalojaSelf-hosted destinationStores personal music scrobbles and presents listening statistics.
Web ScrobblerCapture clientObserves supported web-player playback in the browser and submits it to configured services.
Pano ScrobblerCapture clientObserves supported device playback and submits listening events to supported services.
multi-scrobblerBridgeCollects playback from supported sources and forwards it to supported destinations.
Mopidy-ScrobblerPlayer extensionSubmits 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.

ProjectRoleDocumented behavior
gPodderPodcast client and sync participantQueues subscription and episode actions, including playback position, for compatible synchronization services.
AntennaPodPodcast client and sync participantSynchronizes subscriptions and episode actions through supported providers while keeping local playback state.
AudiobookshelfSelf-hosted application stateStores 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.