PODCAST FEED VALIDATOR · RUNS IN YOUR BROWSER

Will Apple Podcasts accept your feed?

Paste your podcast's RSS feed XML and check it against the documented Apple Podcasts feed requirements and the RSS 2.0 spec: missing channel title, description, language, category, explicit rating, or artwork; a per-episode enclosure, pubDate, or title problem; a pubDate not in RFC 822 format; and duplicate episode guids — the documented cause of an episode silently reappearing as new or disappearing from a podcast app.

Nothing is uploaded. The feed XML you paste is parsed in this browser and never leaves your device — see "Why can't this page fetch my feed URL itself?" below for what the CLI adds.

1. Check a feed

Get this by opening your feed URL in a browser tab and using "View Page Source" or "Save As", or with curl -s <your-feed-url>.

Prefer a CLI, or want this as a CI gate?

The CLI fetches your feed URL for real, over HTTP — no cross-origin restriction, because it isn't a browser:

node check.mjs https://example.com/feed.xml --json
node check.mjs https://example.com/feed.xml --timeout 20000

Get check.mjs, fetch-feed.mjs, feed-parser.mjs, and engine.mjs from the repo — plain Node 18+, nothing to install. It only ever talks to the feed URL you give it — nothing goes through this site. Exit code 1 when a danger-severity finding is produced or the feed could not be fetched.

What's checked

CheckWhat it flagsSeverity
Missing channel title / description / language / linkRSS 2.0 spec and Apple Podcasts required elementsDanger
Missing or unrecognized itunes:categoryRequired for Apple Podcasts submission; checked against Apple's documented top-level listDanger / Notice
Missing or invalid itunes:explicitMust be the current boolean true/false formatDanger / Notice
Missing itunes:image, or wrong file extensionCover artwork required for submissionDanger / Notice
Missing atom:link rel=selfFeed-portability best practiceNotice
Episode missing title / enclosure / pubDateRequired per-episode elementsDanger
pubDate not in RFC 822 formatThe RSS 2.0 spec's required date formatDanger
Duplicate item guidDocumented cause of an episode disappearing or reappearing as newDanger
guid marked as a permalink but not a URLisPermaLink defaults to true; a non-URL value should set it falseNotice

More: why podcast feeds fail validation, and the two bugs that cost the most. See also: how this differs from the W3C Feed Validator.

Common questions

Why does Apple Podcasts reject or silently ignore my episode?

Almost always a specific, documented feed-spec violation: a missing required element (itunes:category, itunes:explicit, cover artwork), an item missing its enclosure or pubDate, or a pubDate that is not in the RFC 822 format the RSS 2.0 spec requires. Apple Podcasts' own feed processor is strict about these — this tool checks your feed against the same documented rules before you submit or re-submit.

Why did an old episode reappear as new, or disappear entirely?

The most common documented cause is a duplicate <guid> value across two items. Podcast apps use guid to decide whether an item is one they have already shown a subscriber — if a feed generator reuses a guid (or falls back to an unstable one), an app can treat a later item as an update to an earlier one, making it vanish, or resurface an old episode as unseen.

Why can't this page fetch my feed URL itself?

A browser page's fetch() to a different origin is blocked by CORS unless that server explicitly opts in with an Access-Control-Allow-Origin header — most podcast hosts do not set this for arbitrary third-party pages, since a feed being reachable does not mean its owner meant for any website to read it client-side. Rather than fail silently for feeds that do not opt in, this page always works from pasted XML. The zero-dependency CLI has no such restriction because it isn't a browser tab — it makes one real HTTP request directly to the feed URL.

Is this a full Apple Podcasts submission checklist?

No. It checks specific, mechanically verifiable properties of the feed XML you provide — required elements, format validity, and duplicate/unstable guids. It is not a guarantee Apple, Spotify, or any other podcast app will accept or display your show, and it does not check account-level submission steps.