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)
- ★ Castopod — full podcast publishing platform; ActivityPub-federated; podcast 2.0 namespace (chapters, transcripts, value-for-value, funding); analytics; multi-podcast. The default for "I publish a podcast and want to own it."
- podlove publisher — WordPress plugin; mature; podcast 2.0 features; works inside an existing WP site.
- Podcast Generator — tiny PHP; static-feeling; no DB-heavy install needed.
- Static-site + RSS — Hugo / Eleventy with a podcast-feed plugin works great if you don't need analytics. Host MP3s on R2 / S3.
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
- ★ Podgrab — auto-download new episodes from any feed into a directory; pairs with Plex / Jellyfin / a phone for offline listening.
- podsync — turn YouTube / Vimeo channels into podcast RSS feeds; great for "make this video channel a podcast in my player."
- gPodder (the desktop client) — also runs as a CLI for downloading.
- Podfetch — modern alternative to Podgrab; web UI; auto-download.
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.