Rust CLI • Podcast Syncing

Discover podcasts.
Download episodes.
Keep your library in sync.

PodFetch helps you find podcasts, resolve their RSS feeds, and download new episodes from the terminal with metadata and cover art baked in.

🦀 Rust RSS + Search Jellyfin / Audiobookshelf ready Linux • Windows • Arch
PodFetch logo

Fast, focused, and local-first

Pull podcasts into a structured folder, tag the audio for your media stack, and skip already-downloaded episodes.

podfetch "Darknet Diaries"
podfetch https://example.com/podcast.xml

What PodFetch does

One tool for discovery, download, and organization.

Built around the real workflow of podcast fans who want something simple and dependable from the terminal.

🔎 Search by name

Find a podcast quickly by title and let PodFetch resolve its feed automatically.

📡 RSS or direct input

Use either a podcast name or a known RSS feed URL, depending on what you already have.

⬇️ Smart episode sync

Only downloads episodes that have not already been recorded, keeping repeat runs lightweight.

🏷️ Audio metadata

Tags downloaded files and writes metadata and cover images for media-server workflows.

📁 Flexible output paths

Use templates like {podcast_name} and {podcast_author} to build your preferred folder layout.

⚡ Parallel downloads

Increase throughput with configurable concurrency for a faster sync pass when you want it.

Install it your way

Pick the format that fits your setup.

Quick start

Try the core commands in a few seconds.

🔎 Search by podcast name

Use a podcast title to search and resolve the feed automatically.

podfetch "Darknet Diaries"

📡 Download from an RSS feed

Point PodFetch at a feed URL when you already know the source.

podfetch https://example.com/podcast.xml

🧭 Force search mode

Use --search when you want the input treated strictly as a search term.

podfetch --search "The Joe Rogan Experience"

📁 Override the output folder

Use -o with placeholders like {podcast_name} or {podcast_author} to customize where files land.

podfetch -o "~/Music/podcasts/{podcast_name}" "My Podcast"