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.

Reads RSS 2.0RSS 1.0AtomJSON Feedpodcast feeds and any page that declares a feed.

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.