Podcast RSS 2.0 Structure and Requirements
A podcast feed relies on the RSS 2.0 specification to distribute audio content to directories and listening applications. For a feed to be valid, the XML document must conform to strict structural rules.
The document root must be <rss>. This root element must contain a version attribute set exactly to "2.0". Additionally, because modern podcast directories rely on specific metadata, the Apple Podcasts namespace must be declared on the <rss> tag. Within the root element, the RSS feed must contain exactly one direct <channel> element. If a feed contains more or fewer channel elements, it fails basic structural validation.
The validator checks up to 500,000 characters of XML input. If the input is empty when validation is initiated, the tool displays the message: "Paste Podcast RSS XML before validating.". If the input exceeds the character limit, it displays: "This tool accepts up to ‹max› characters per check.". If a DOCTYPE declaration is present in the XML, the validator stops and displays the error: "Remove the DOCTYPE declaration before checking this feed.". If the XML contains syntax errors that prevent parsing, the tool displays: "Fix the malformed XML, then validate again.".
Apple Podcasts and Channel-Level Validation
Podcast directories, particularly Apple Podcasts, require specific channel-level and episode-level fields to index and display a show correctly. The validator checks for the presence of these required elements. If a required field is missing, the tool generates the error: "Add the required ‹field›.".
Channel-level validation rules include:
- URL Validation: Links within the feed, such as the channel link, must be fully qualified. An invalid link triggers the error: "
‹field›must be a complete HTTP or HTTPS URL.". - Image Hrefs: The channel artwork must be specified correctly. If the image reference is invalid, the tool displays: "Set itunes:image href to a complete HTTP or HTTPS URL.".
- Categories: Podcast categories must be defined using the correct XML structure. If a category is empty or improperly formatted, the validator displays: "Add a non-empty text attribute to itunes:category.".
- Explicit Flag: The
<itunes:explicit>tag must be set to "true" or "false". Any other value triggers the error: "Set itunes:explicit to true or false.". - Episode Count: A valid podcast channel must contain at least one episode. If none are found, the tool displays: "Add at least one <item> episode to the channel.".
- Serial Shows: If a show is designated as a serial podcast, every episode must have a positive integer assigned to its episode number. If any are missing or invalid, the tool displays: "Serial shows need a positive integer itunes:episode for every episode.".
- Feed Size Limits: While RSS feeds can technically grow indefinitely, directories impose practical limits. If a feed contains more than 2,000 episodes, the validator issues the warning: "This feed has
‹count›episodes; Apple Podcasts displays only the most recent 2,000.".
Audio Enclosure Validation
The <enclosure> tag links the RSS feed to the actual media file of an episode. Each episode must have exactly one <enclosure> tag. If an episode contains multiple enclosures, the validator displays: "Keep exactly one <enclosure> in this episode; found ‹count›.".
The validator checks the attributes of the enclosure tag without downloading or decoding the underlying audio file. It validates the following attributes:
- Required Attributes: If an enclosure is missing a required attribute, the tool displays: "Add the required
‹attribute›attribute to <enclosure>.". - Enclosure URL: The media file location must be a valid web address. An invalid URL triggers the error: "Set enclosure url to a complete HTTP or HTTPS URL.".
- Enclosure Length: The length attribute must represent the file size in bytes. If the value is not a whole number, the tool displays: "Set enclosure length to a whole-number byte count.". If the length is set to 0, it triggers the warning: "The enclosure length is 0. Confirm the real byte count before publishing.".
- MIME Type: The media file must have a valid MIME type, such as
audio/mpeg. An invalid MIME type triggers the error: "Use a valid MIME type such as audio/mpeg.". If the MIME type indicates a non-audio format, the tool issues the warning: "This enclosure is not marked as audio. Confirm that a video or document episode is intentional.". - Extension Mismatch: The file extension in the URL should match the declared MIME type. If they do not align, the validator displays the warning: "The media filename and MIME type disagree (
‹extension›vs‹mime›).". - Duplicate Enclosures: Each episode must point to a unique media file. If an enclosure URL is repeated elsewhere in the feed, the tool displays: "This enclosure URL repeats the value at line
‹first›.".
Date Formatting and Episode Identity
Correct date formatting is essential for podcast applications to order and publish episodes reliably. Podcast feeds use the RFC 2822 date specification.
If an episode is missing a publication date, the validator displays the warning: "Add <pubDate> so podcast apps can order and publish this episode reliably.". If the date format is invalid, the tool displays the error: "Use an RFC 2822 date with a real calendar date and timezone, for example: Sat, 01 Apr 2023 19:00:00 +0000.".
While named timezones (such as EST or GMT) are sometimes accepted by parsers, they are less portable than numeric offsets. If a named timezone is detected, the validator issues the warning: "This named timezone is accepted but less portable; prefer a numeric offset such as +0000.".
To track which episodes a user has already listened to, directories rely on the Globally Unique Identifier (GUID). Each episode must have a unique GUID. If a GUID is repeated within the feed, the validator displays the error: "This GUID repeats the value at line ‹first›.".
Debugging with XML Paths and Line Numbers
When the validator processes a feed, it provides a detailed breakdown under the heading "Feed diagnosis". The tool displays the total number of issues found using the format: "‹errors› errors and ‹warnings› warnings found". It also lists the total number of episodes detected as "‹count› episodes".
To help you locate and fix issues within your XML document, the tool provides the exact location of each problem. It displays the location as "Line ‹line›, column ‹column›" and provides an XPath-style path to the problematic element, formatted as "Fix: ‹path›". You can click the link "Go to ‹path› at line ‹line›" to jump directly to the issue in your XML editor.
If the feed contains a very large number of issues, the list may be truncated, displaying the message: "Showing the first ‹shown› of ‹total› issues.". If the XML parser encounters an unexpected error, it will display "Parser detail: ‹detail›" to assist with advanced troubleshooting. If no issues are found, the tool displays: "No structural issues found".
Privacy and Processing Limits
Your privacy is maintained during the validation process. The podcast feed is processed entirely within your browser; nothing is uploaded or saved by BroBroGo.
Because the validation runs locally, processing speed depends on the size of your feed and your browser's performance. If the validation process takes too long to complete, the tool will stop and display the message: "Validation took too long. Try a smaller feed.". If the process fails due to an unexpected error, it displays: "Validation could not finish.".
This tool performs a static structural check. It does not request feed, artwork, or media URLs from external servers, nor does it verify remote availability, actual byte lengths, audio decoding, or directory acceptance. Passing this validation means the XML structure is correct, but it does not guarantee that a directory will accept or publish the feed.
Frequently Asked Questions
What does this Podcast RSS Validator check?
It checks whether the RSS 2.0 XML is well formed, whether required RSS and common Apple Podcasts channel and episode fields are present, plus enclosure attributes, duplicates, and RFC 2822 dates.
Does it test the audio file?
It checks the enclosure URL, byte length, MIME type, uniqueness, and whether the filename matches the type. It does not download or decode the audio.
Will a feed that passes be accepted everywhere?
No. Podcast apps can add rules and remote checks. Passing means the pasted XML met the static checks shown here, not that a directory will accept or publish it.