A cross-platform comparison of podcast players, September 2026.
The recommendations
Choose the sync layer, not the player: Pocket Casts’ free tier for zero maintenance, or PinePods to own the library. Keep Jellyfin for audiobooks, not podcasts.
| Need | Recommendation | Why |
|---|---|---|
| All three platforms, no maintenance | Pocket Casts, free tier | Native apps on Windows, Android and iOS plus a web player; the most reliable sync; private feeds and a full directory, all at $0 |
| All three platforms, and own the library | PinePods, self-hosted | The only fully open-source (GPL-3.0) option with native clients on all three platforms, deployed as one Docker Compose stack |
| An Android client you already trust | AntennaPod, syncing to PinePods | PinePods’ built-in gpodder server lets AntennaPod share the same library |
| Audiobooks | Audiobookshelf, or Jellyfin 12 with plappa on iOS | Jellyfin 12 handles audiobooks well now, but Swiftfin and Finamp do not show the library |
| Avoid for this | Jellyfin for podcasts; Spotify; Overcast or Castro alone; Podcast Addict alone | No private feeds or directory; no RSS import; iOS only; Android only |
How to decide between the first two: run both for a week of normal listening — the steps are at the end.
Problem statement
Find a podcast player, or a combination tied together by one sync layer, that works across Windows, Android, and iOS without losing library state between devices.
Requirements, in priority order:
- Platform coverage — Windows, Android, and iOS. Originally a hard single-app constraint; later relaxed to allow per-platform combinations if a shared sync layer connects them.
- RSS feed import — arbitrary feed URLs, including private/tokenized feeds (Patreon, paid subscriptions).
- Directory browsing — a searchable public catalog (Apple directory, Podcast Index, or equivalent).
- Seamless sync — subscriptions, queue, and playback position follow the listener across devices.
- Modern, sleek UI/UX — a polished daily driver, not a utilitarian afterthought.
- Open source preferred, not required — willing to trade some polish for auditable code and self-hostable infrastructure.
Key finding: the bottleneck in this market is the sync layer, not the players. Windows and Android are richly served by open-source clients speaking the open gpodder API; iOS was historically the gap. Two developments changed the calculus: Pocket Casts moved its web player and desktop apps to the free tier (March 2025), and PinePods shipped native iOS and Android clients, making a fully open-source, fully self-hosted, all-three-platforms stack viable.
Master matrix
Thirteen candidates evaluated against the six requirements. “⚠️” = partial support.
| App | Windows | Android | iOS | RSS import | Directory | Sync |
|---|---|---|---|---|---|---|
| Pocket Casts | ✅ app + web | ✅ | ✅ | ✅ incl. private | ✅ | ✅ own service |
| PinePods | ✅ native | ✅ native | ✅ native | ✅ + OPML | ✅ Podcast Index + iTunes | ✅ self-hosted, + built-in gpodder server |
| Podverse | ⚠️ web only | ✅ | ✅ | ✅ | ✅ Podcast Index | ✅ Premium (~$18/yr) or self-hosted instance |
| AntennaPod | ❌ | ✅ | ❌ | ✅ incl. password-protected, OPML | ✅ | ✅ gpodder API |
| Kasts / Cardo / Podcast Merlin | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ gpodder API |
| Podcast Addict | ❌ | ✅ | ❌ | ✅ + audiobooks, YouTube, streams | ✅ | ⚠️ limited |
| Overcast | ❌ | ❌ | ✅ + web | ✅ | ✅ | ✅ Apple devices only |
| Castro | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ |
| Snipd | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Podurama | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Apple Podcasts | ⚠️ iTunes | ❌ | ✅ | ✅ “Add a Show by URL” | ✅ | ✅ Apple devices |
| YouTube Music | ⚠️ web | ✅ | ✅ | ✅ incl. private feeds | ✅ | ✅ Google account |
| Spotify | ✅ | ✅ | ✅ | ❌ (Patreon partnership only) | ✅ | ✅ |
Licensing and cost, separated so the requirements table stays readable at one glance:
| App | License | Cost (USD) |
|---|---|---|
| Pocket Casts | Mobile clients MPL-2.0; server/web/desktop proprietary | Free; Plus $39.99/yr; Patron ~$100/yr |
| PinePods | GPL-3.0 full stack | Free (your hardware) |
| Podverse | AGPLv3 full stack | Free; Premium for sync |
| AntennaPod | GPLv3 | Free |
| Kasts / Cardo / Podcast Merlin | Open source | Free |
| Podcast Addict | Proprietary | ~$10 one-time |
| Overcast | Proprietary | Free w/ ads; $14.99/yr |
| Castro | Proprietary | Free; Plus $24.99/yr |
| Snipd | Proprietary | Freemium |
| Podurama | Proprietary | Free |
| Apple Podcasts | Proprietary | Free |
| YouTube Music | Proprietary | Free |
| Spotify | Proprietary | Free / Premium |
Screenshots could not be embedded directly in this document; each app name links to a page with current UI imagery, and official galleries are on each project’s site and app-store listing.
Feature breakdown by strength
Each app leads in one category; none leads in all.
| Category | Leader | What it does | Runner-up |
|---|---|---|---|
| Playback engineering | Overcast | Smart Speed (silence removal without distortion) and Voice Boost (volume leveling); 2026 releases added chapter art and transcripts | Pocket Casts (0.1x speed steps, Trim Silence); Podcast Addict on Android (EQ, per-show settings) |
| Cross-device sync reliability | Pocket Casts | Subscriptions, queue, and playback position sync across iOS, Android, web, and desktop; consistently rated most reliable | PinePods (position sync “down to the second,” self-hosted) |
| Queue / library management | Castro | Email-style inbox triage of new episodes; ideal for wide subscribing, selective listening | Pocket Casts folders (Plus); Podcast Addict rule-based playlists |
| Knowledge capture | Snipd | Headphone-tap highlights with AI transcripts and summaries; exports to Notion, Readwise, Obsidian | Podurama (free AI summaries) |
| Open standards (Podcasting 2.0) | Podverse | Reference implementation: chapters, transcripts, cross-app comments, Value-for-Value, all per spec; app and server both AGPLv3 | PinePods (Podcast Index search, chapter support) |
| Feature density on Android | Podcast Addict | Audiobooks, YouTube channels, live streams, OPML, local backup, 0.1x speed control, one-time purchase | AntennaPod (open source, password-protected feeds) |
| Self-hosting | PinePods | Rust server, multi-user, native clients on all platforms, built-in gpodder server, Docker Compose / Helm deploy | Podverse (self-hostable instance) |
Free-tier generosity is worth calling out separately: Pocket Casts’ free tier includes the full mobile experience, ad-free interface, sync, Trim Silence, and — since March 2025 — the web player and desktop apps (Engadget). Plus ($39.99/yr) adds folders, bookmarks, 20 GB cloud storage, and standalone wearable playback. Pricing has trended up: Plus launched at $9.99/yr in 2019 and reached $39.99/yr by April 2023 (Pocket Casts support).
The three sync ecosystems
Sync architecture, not app features, is the real decision — it determines which clients can coexist and who holds the library.
1. Proprietary account sync. The vendor runs the server; the account is the library. Pocket Casts (all platforms), Overcast (Apple devices only), Snipd, Podurama, and the platform giants (Apple, Spotify, YouTube Music, each inside its own ecosystem). Zero setup, zero ownership, and no interoperability — leaving means OPML export and losing play history.
2. The gpodder API — an open protocol, not an app. Any compliant client syncs against any compliant server. Clients: AntennaPod (Android), KDE Kasts, Cardo (Windows/Mac/Linux), Podcast Merlin (full-sync Windows client). Servers: gpodder.net, the Nextcloud gpoddersync app, and self-hosted Docker options (PodFetch, opodsync, podsync). Historic weakness: no mainstream iOS client speaks the protocol, so an iPhone breaks the chain.
3. Self-hosted full stack. One open-source server plus first-party clients on every platform. PinePods is the standout: a Rust server (Postgres or MySQL) serving native apps for web, Linux, Windows, macOS, Android, and iOS plus a CLI client, with multi-user support and a built-in gpodder-compatible server so ecosystem-2 clients like AntennaPod can ride along. The 0.9.0 release (220+ commits) added video playback, a native iOS audio engine with CarPlay, Android Auto, and a reworked web frontend. Podverse also allows self-hosting its AGPLv3 instance, though with less turnkey tooling.
Diagram: the four shapes side by side — each column is one way a library can sync, and the dashed line is a PinePods server taking in the gpodder clients. The guided views walk the four in order.
Ecosystem 3 subsumes ecosystem 2: a PinePods server can act as the gpodder endpoint, so mature third-party clients and first-party apps share one library.
A fourth shape is drawn above and deliberately kept out of the matrix: a general-purpose media server with a podcast plugin bolted on. It syncs like ecosystem 3 and subscribes like nothing else here. It gets its own section.
Self-hosted vs. SaaS
The trade-off is maintenance burden versus ownership; neither side wins on features anymore.
| Dimension | SaaS (Pocket Casts, Podurama, Overcast) | Self-hosted (PinePods, AntennaPod + gpodder server, Podverse instance) |
|---|---|---|
| Setup effort | Install app, create account — minutes | Deploy server (Docker Compose / Helm), configure clients — an evening |
| Ongoing maintenance | None | Updates, backups, database care; you are the sysadmin |
| Data ownership | Vendor’s servers hold subscriptions, history, position | Everything in your own Postgres/MySQL database |
| Privacy | Listening data visible to vendor; policies can change | No third party sees listening behavior |
| Pricing risk | Real — Pocket Casts Plus went from $9.99/yr (2019) to $39.99/yr (2023) | None; cost is hardware and electricity already running |
| Longevity risk | Service shutdown or acquisition strands the library (OPML export mitigates partially) | Project abandonment possible, but GPL code and your database survive; migration stays in your control |
| Polish / UX maturity | High — years of design investment, large user bases | A notch below; PinePods is young, with reports of an occasional lost-playback-position bug on iOS (App Store review) |
| Multi-user / household | Per-person accounts, per-person fees where paid | PinePods serves a whole household from one instance, each user with their own library and stats |
| Remote access | Works anywhere by default | Requires exposing the server safely (reverse proxy, VPN, or SSO) |
| Ecosystem interop | Closed; clients locked to vendor | PinePods’ built-in gpodder server lets third-party clients share the same library |
Rule of thumb: SaaS buys back the evening of setup and all future maintenance for the price of trusting a vendor with the library. Self-hosting costs that evening plus ongoing care, and in return removes pricing risk, privacy exposure, and shutdown risk entirely. For someone already operating Docker-based services with a reverse proxy and SSO in place, the marginal cost of self-hosting one more container is low — which shifts the calculus notably toward PinePods.
The fourth option: a Jellyfin server you may already run
Jellyfin is not a podcast app, and the question it answers is a different one: if a media server is already running in the house, can it absorb this? Two things made that worth asking in September 2026 — a podcast plugin ecosystem (JellyPodcast and others) and Jellyfin 12’s overhaul of book and audiobook handling. The short answer is that Jellyfin is a strong complement and a weak replacement, and the two halves of it fail and succeed for different reasons.
Podcasts: the plugins are real, and they are early
Jellyfin has never supported podcasts natively — the feature request is one of its oldest — so everything below is third-party.
JellyPodcast (MIT) takes any RSS/Atom feed URL or Apple Podcasts link and organizes each show as a TV series in the library: episode ordering, artwork, descriptions, a refresh task every two hours, audio and video podcasts, and optional cleanup of old episodes. It targets Jellyfin 10.11.x on .NET 9. It also has, at the time of writing, two stars and two commits.
jellyfin-plugin-podcast (MIT) is the more developed of the two — 89 commits, still self-described as alpha. It adds feed validation before subscribing, scheduled downloads to a podcasts folder, auto-deletion two days after an episode passes 90% played, and a daily auto-generated playlist of unplayed episodes at 01:00 UTC. It requires Jellyfin 12.0 or 12.1; version 0.0.3.7 was the last to support 10.11.x.
That version split is the important part, not a footnote. Jellyfin 12 requires
every third-party plugin to be rebuilt — the server moved to .NET 10, the
release notes tell migrators to remove non-built-in plugins before upgrading,
and deprecated APIs (ISearchEngine, the ISubtitleWriter family) were removed
outright. So the podcast plugin ecosystem was reset within weeks of this
evaluation, and the two candidates sit on opposite sides of the break.
Scoring it against the six requirements
| # | Requirement | Jellyfin + podcast plugin | Why |
|---|---|---|---|
| 1 | Windows / Android / iOS | ✅ | Web player on Windows; official apps, Findroid and Finamp on Android; Swiftfin on iOS |
| 2 | RSS import incl. private feeds | ⚠️ | Arbitrary public feed URLs work. Neither plugin supports authenticated or tokenized feeds — the Patreon case simply does not load |
| 3 | Directory browsing | ❌ | There is no catalog. You paste feed URLs, or you do not subscribe |
| 4 | Seamless sync | ✅ | The strongest part. Resume points live on the server, so position follows the listener by construction — the same mechanism that resumes a film |
| 5 | Modern, sleek UI/UX | ⚠️ | Podcasts render as TV series. No queue, no inbox triage, no Smart Speed, no volume leveling |
| 6 | Open source | ✅ | GPL-2.0 server, MIT plugins, self-hosted end to end |
Requirement 2 is the one that decides it. Private feeds were named explicitly in the requirements, and an unauthenticated fetcher cannot retrieve them — that is a missing feature, not a rough edge. Requirement 3 compounds it: subscribing becomes “find the feed elsewhere, paste the URL here,” which is exactly the friction a directory exists to remove.
Audiobooks: the genuinely new capability
Jellyfin 12.0 (September 2026) folded the old Bookshelf plugin into the server and rebuilt what it did:
- Audiobook chapters are extracted server-side and exposed through the API, with chapter navigation and resume across the official Web, iOS and Android clients. M4B — embedded chapters and cover art in one file — is the format that behaves best.
- Background playback on iOS continues with the screen off, which is the difference between a working audiobook client and a demo.
- Books and comics parse without a plugin: OPF and ComicInfo metadata, generated covers for EPUBs and comic archives, page counts for comics and PDFs, ISBN support, a redesigned reading interface with progress indicators and PDF swipe navigation. Metadata providers moved out to GoogleBooks, ComicVine and a new OpenLibrary plugin.
This is a real capability and it is worth having. It is also worth being precise about what it changes: audiobooks were not one of the six requirements. A strong audiobook feature is a reason to run Jellyfin, or to keep running it. It is not evidence about podcast sync, and it should not be allowed to stand in for any.
The caveat is client-side and specific: the two best Jellyfin audio clients on iOS — Swiftfin and Finamp — do not surface audiobook libraries at all. The client that does is plappa, a SwiftUI audiobook player that lists the library, tracks progress and downloads for offline listening. It also speaks to Audiobookshelf, and syncs progress across both.
That points at the honest comparison: Audiobookshelf is the specialist, built for one job, with per-item progress and first-party mobile clients, while Jellyfin is a video-first server that has bolted on a feature it was not designed around. The two are not exclusive — both can index the same folder without conflict, and plappa reads either.
Verdict
Jellyfin does not displace Option A or Option B below, and adding it to the matrix does not change the recommendation. It fails the private-feed requirement outright, has no directory, and its podcast plugins are one alpha and one two-commit experiment straddling a breaking server release.
Where it does fit:
- Already running Jellyfin? Let it hold audiobooks — that half is now genuinely good — and leave podcasts to the podcast stack. PinePods or Pocket Casts coexists with it on the same box without contention.
- Considering Jellyfin for podcasts? Not on this evidence. Revisit when a podcast plugin has settled on the post-12.0 platform and supports authenticated feeds; those two together would make it a serious ecosystem-3 contender, since the sync half is already the best thing about it.
- Audiobooks the actual priority? Audiobookshelf, or Jellyfin 12 plus plappa on iOS. Not Jellyfin plus Swiftfin, which will not show the library.
The recommendations, argued
The field collapses to a two-way decision.
Option A — Pocket Casts, free tier (zero maintenance). Every stated requirement is covered at $0: native apps on all three platforms plus web, best-in-class sync, RSS import including private feeds, full directory, and the most polished UI in the category. Mobile clients are MPL-2.0 open source; the sync server is not. Risks: library lives on Automattic infrastructure, and pricing history shows terms can drift.
Option B — PinePods (full ownership). The only fully open-source (GPL-3.0) option with native clients on Windows, Android, and iOS, deployed as one Docker Compose stack on existing infrastructure. The built-in gpodder server allows running AntennaPod as the Android client if its maturity is preferred, with PinePods covering Windows and iOS from the same library. Risks: young project, small team, sysadmin responsibility, polish a notch below Option A.
Not recommended for this use case: Jellyfin + a podcast plugin (no private feeds, no directory, alpha plugins mid-rebuild — see above; keep it for audiobooks), Spotify (no RSS import), Overcast/Castro (iOS-only), Podcast Addict/AntennaPod alone (Android-only, though AntennaPod works inside Option B), Podurama (covers all requirements but proprietary with an uncertain small-vendor future — reasonable third choice if both options above fail).
Suggested evaluation path
- Create a throwaway account on the PinePods demo at try.pinepods.online to judge the UI firsthand (demo accounts are wiped periodically)
- Install Pocket Casts free on all three platforms and subscribe to 3–5 real feeds, including one private feed
- Run both for one week of normal listening; note every sync failure or UI friction point
- Decide; either way, export OPML from the loser — both sides import it, so the choice is reversible
Sources
- Pocket Casts plans and Plus pricing history
- Engadget — Pocket Casts web player and desktop apps go free
- PinePods site, GitHub repository, releases, and iOS App Store listing
- Podverse — about and F-Droid listing
- AntennaPod sync documentation and nextcloud-gpodder client compatibility list
- Pinecast — apps supporting private RSS feeds and manual RSS subscription guide
- Jellyfin 12.0 release notes, the podcast support feature request, JellyPodcast and jellyfin-plugin-podcast
- plappa (Jellyfin + Audiobookshelf audiobook client for iOS) and Audiobookshelf
- Comparative testing roundups: Podshot, TrimPod, Podcast AdBlock, SoftPicker, iOS podcast player feature matrix (hbmartin)