Podcast feed parser
Paste podcast RSS/XML and extract channel metadata plus a clean episode list with publish dates, durations, and audio URLs. Runs locally.
About this tool
Paste a podcast RSS/XML feed and this tool extracts the channel metadata plus a clean episode list. It recognises common RSS 2.0 podcast fields, iTunes namespace fields, Atom enclosure links, publish dates, durations, GUIDs, episode links, and audio enclosure URLs.
Use it to inspect a feed, debug missing enclosure metadata, copy episode JSON into scripts, or compare podcast feed output during migrations. The limit and order options let you focus on the newest or oldest entries, and descriptions are optional so the default output stays compact.
Everything runs locally in your browser. The feed XML is not uploaded.
FAQ
Can it fetch a feed from a URL, or do I have to paste the XML?
Paste the XML. The parser is fully local and does no network fetching — grab
the feed with your browser, curl, or your podcast host's export, then paste
it here. That is also why it works offline and why nothing is uploaded.
Which feed formats and fields does it understand?
RSS 2.0 (including the itunes: podcast namespace) and Atom 1.0. Per episode
it extracts the title, GUID, page link, audio enclosure (URL, MIME type, byte
size), season/episode numbers, the explicit flag, and — with the descriptions
option on — a plain-text summary. Empty fields are simply omitted from the
JSON rather than emitted as nulls.
Why do dates and durations look different from the raw feed?
They are normalised: RSS pubDate (RFC 2822) and Atom dates (RFC 3339) both
become an RFC 3339 published value, with the original preserved in
published_raw. Durations become HH:MM:SS in duration plus whole seconds
in duration_seconds, whether the feed wrote 3723, 62:03, or 1:02:03.
How do the limit and order options interact?
order is applied first, then limit caps the list — so order = "newest"
with limit = 10 gives the 10 most recent episodes by publish date, while the
default order = "feed" keeps the feed's own ordering and limit = 0 returns
everything.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool podcast-feed-parser '<rss version="2.0"><channel><title>Example Podcast</title><item><title>Episode 1</title><enclosure url="https://example.com/ep1.mp3" type="audio/mpeg" /></item></channel></rss>'New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/podcast-feed-parser/?feed=%3Crss%20version%3D%222.0%22%3E%3Cchannel%3E%3Ctitle%3EExample%20Podcast%3C%2Ftitle%3E%3Citem%3E%3Ctitle%3EEpisode%201%3C%2Ftitle%3E%3Cenclosure%20url%3D%22https%3A%2F%2Fexample.com%2Fep1.mp3%22%20type%3D%22audio%2Fmpeg%22%20%2F%3E%3C%2Fitem%3E%3C%2Fchannel%3E%3C%2Frss%3E&limit=0&order=feed&include_descriptions=trueMachine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
