Tooling

Self-Hosted Podcast Hosting & Sync

Castopod, PinePods, gPodder Sync, Podgrab — host your own podcast feed and sync your listening across devices.

Two unrelated problems share this page: publishing a podcast you make (RSS + audio hosting + analytics) and personal listening sync (subscriptions + episode progress across devices). Both are well-served by self-hosting in 2026. For audiobooks see Self-Hosted Photos & Media (Audiobookshelf).

Podcast publishing (host the show)

Personal listening sync (subscriptions + progress)

  • PinePods — Rust + Python; modern UI; multi-user; subscribes via gPodder API; cross-device progress sync. Rising fast in 2026.
  • Audiobookshelf — primarily for audiobooks but has a fully-featured podcast section: subscribe to feeds, download episodes, multi-user progress sync, mobile apps. The default if you already run it for audiobooks.
  • gPodder Sync (mygpo) — protocol + reference server for syncing podcast subscriptions / episode progress across clients (AntennaPod, Kasts, RePod, etc.).
  • OpenPodcast / Funkwhale — alternative federated approach via Funkwhale.
  • Nextcloud GPodderSync app — sync state via your Nextcloud instance; pairs with AntennaPod's Nextcloud sync feature.

Download / mirror tools

Transcription / chapter generation

  • whisper.cpp / faster-whisper — see Transcription; generate transcripts locally for the podcast 2.0 <podcast:transcript> tag.
  • Podlove Subscribe Button + chapters JSON — podcast 2.0 chapters served alongside the feed.
  • Auphonic — closed-source loudness normalization + transcript SaaS; what most indies actually use.

Hosting the audio files

  • S3 / R2 / B2 — cheap, durable, CDN-friendly. Most podcast hosts (Castopod, podlove) integrate.
  • Self-hosted Garage / MinIO — see Distributed Storage; same S3 API on your own metal.
  • Cloudflare R2 — egress-free; pairs beautifully with Castopod.

Patterns to adopt

  • Don't lose your back catalog. Mirror your published episodes to a second bucket nightly (rclone / restic).
  • Pin episode URLs forever. Once a feed enclosure URL is published, it must keep working — directories cache aggressively.
  • Validate the feed. Use Castfeedvalidator / Podbase / castos validator before submitting to Apple / Spotify / Google directories.
  • Podcast 2.0 features are free upside — chapters, transcripts, value-for-value all work with Castopod and Podlove out of the box.
  • Two HTTPS redirects max — directories follow up to two; more breaks playback on some clients.
  • Analytics: opt-in IAB-compliant — Castopod does this correctly; many older tools don't.

Pick this if…

  • Default for "I publish a podcast": Castopod.
  • WordPress shop: podlove publisher.
  • Static-site lover: Hugo / Eleventy + RSS feed + R2 for audio.
  • Default for "I listen to podcasts on multiple devices": PinePods or Audiobookshelf.
  • Pure subscription sync between mobile clients: gPodder Sync (mygpo) or Nextcloud GPodderSync.
  • Auto-download episodes for offline playback: Podgrab or PodFetch.
  • YouTube channel → podcast feed: podsync.

On this page