Free, no account needed
Podcast feed validator
Paste the address of a podcast feed. We fetch it the way a podcast app does, fetch the newest episode files and the artwork, and check what Apple Podcasts, Spotify and the apps require. The validator is free and you do not need an account.
What the report covers
A podcast feed has to pass the checks of a feed reader before any of the podcast checks matter, so the report starts there and adds a section for what the directories and the apps require.
Delivery
Status, redirects, time to answer, bot protection, caching headers, compression, https.
Document and items
Well-formed XML, the encoding, stable ids and dates on every episode.
Podcast
The artwork's size and type, the categories, the explicit flag, the owner, the show type, every episode's file with its type and size, the duration, and transcripts. The three newest episode files get a HEAD request and a byte-range request from an Inoreader poller, and the artwork is fetched and measured.
What the directories check
| Requirement | Who asks for it | The report row |
|---|---|---|
| Square artwork, 1400 to 3000 pixels, JPEG or PNG | Apple Podcasts, Spotify | Artwork |
| At least one itunes:category | Apple Podcasts | Category |
| itunes:explicit on the channel | Apple Podcasts | Explicit flag |
| An enclosure with length and type on every episode | Apple Podcasts, Spotify, every app | Episode files |
| Files over https that answer byte-range requests | Apple Podcasts | Episode files answer, Byte ranges |
| itunes:owner with an email | Apple Podcasts, for ownership | Owner email |
| podcast:guid, podcast:transcript | Podcast Standards Project | Podcast guid, Transcripts |
The fixes we ask for most
Serve the files from a host that supports ranges
Object stores and CDNs do; a script that streams the file through PHP usually does not. The sign is a 200 instead of a 206 to a Range request.
Export the artwork at 3000 by 3000
Smaller than 1400 or not square, and Apple Podcasts refuses the show; larger than 3000, and it refuses it too.
Set the real file size
A length that does not match the file breaks the download progress in every app and stops some downloads short.
Say whether the show is explicit
A missing flag is read as not explicit, which is the wrong answer for half the shows.
Frequently Asked Questions
What does Apple Podcasts require of a feed?
A well-formed RSS 2.0 feed over https with a title, a description, a language, an itunes:image of 1400 to 3000 pixels square, at least one itunes:category, an itunes:explicit flag, and an enclosure with a size and a type on every episode, served from a host that answers byte-range requests. The report checks each of these.
Why do byte ranges matter?
Every podcast app seeks inside an episode and resumes interrupted downloads with HTTP range requests. A host that answers a Range request with the whole file makes seeking impossible, and Apple Podcasts refuses the feed. The report sends a two-byte range request to the newest episodes and reports what came back.
Does the validator check Podcasting 2.0 elements?
It reports the ones the Podcast Standards Project recommends: podcast:guid, podcast:transcript and the locked flag. Missing ones are notes, not errors, because the directories do not require them yet.
Why does the report also show delivery, document and items sections?
A podcast feed is an RSS feed first. The server has to answer, the XML has to parse and the items need stable ids and dates before any app shows an episode; those sections are the same checks the RSS feed validator makes.
Is the podcast validator free?
Yes. It is free and needs no account. Inoreader also plays podcasts, so you can follow the feed and listen to it with everything else you read.