RSS & Atom Feed Validator
Validate RSS 2.0 or Atom 1.0 XML locally with format detection and line-aware errors plus empty-feed warnings and clear repair guidance.{{ summaryTitle }}
{{ summaryLine }}
| Severity | Line | Location | Finding | Repair | Copy |
|---|---|---|---|---|---|
| {{ row.severityLabel }} | {{ row.line }} | {{ row.path }} | {{ row.message }} | {{ row.repair }} |
The chart renderer is unavailable. The exact counts remain available in the summary and findings table.
Repair plan
- {{ row.heading }}{{ row.repair }}
Extension vocabularies and publisher-specific acceptance policies can add requirements beyond this core local report.
A feed can fail even when its XML looks tidy. A reader may reject the document because the root identifies the wrong format, an RSS channel is missing its link, an Atom entry lacks an author context, or a date uses the wrong syntax. These failures often appear only after publication, when subscribers stop receiving updates or an importer silently skips entries.
RSS 2.0 and Atom 1.0 are both XML syndication formats, but their structures are not interchangeable. RSS uses an unprefixed rss root with one channel, and entries are item elements. Atom uses a namespaced feed root, and entries are entry elements. Field names, required metadata, identifiers, links, and date formats differ between them.
| Concern | RSS 2.0 | Atom 1.0 |
|---|---|---|
| Root | <rss version="2.0"> | A feed element in the Atom 1.0 namespace |
| Feed container | Exactly one channel | The feed root itself |
| Entry | item | entry |
| Feed identity | Channel title, link, and description | Feed title, id, and updated |
| Date style | RFC 822-style dates with a four-digit year | RFC 3339 date-times |
Well-formed XML is the first gate. Tags must nest correctly, attribute values need quotes, namespace prefixes need declarations, character references must be valid, and the document needs one root element. Passing that gate only means the XML can be parsed. The feed format still needs its own required elements and value rules.
Empty feeds deserve context rather than a universal failure. RSS and Atom can be structurally valid with no current items or entries, yet a publishing workflow may consider that state accidental. An optional empty-feed warning is useful for release checks without redefining core format validity.
Local source validation cannot confirm how a public URL is delivered. HTTP status, redirects, authentication, content type, caching, compression, TLS, character encoding at transport time, and extension vocabularies all remain separate checks before a feed is considered publishable.
How to Use This Tool:
Validate the raw XML that will be published, then keep auto detection or pin the exact format promised by the publisher.
- Paste XML into Feed source, drop one local file onto the editor, or browse for a file. The source is checked in the current browser tab and must stay within 200,000 characters.
- Leave Source format on Auto detect when the root should identify the dialect. Choose RSS 2.0 or Atom 1.0 when a publishing contract requires that exact format; a mismatch becomes an error.
- Enable Review empty feeds only when at least one item or entry is a publishing requirement, then run validation. Repair XML errors before format errors because a mismatched closing tag or unbound namespace can prevent reliable RSS or Atom analysis.
- After the local report is clean, request the published feed URL separately and verify its HTTP response, content type, redirects, encoding, and behavior in at least one real feed reader.
Interpreting Results:
Valid means the source is well-formed XML and the implemented RSS 2.0 or Atom 1.0 rules found no errors. Review means core validity passed but at least one advisory, such as an empty feed under the selected publishing policy, still needs attention. Invalid means one or more XML or feed-format errors remain.
The detected format should agree with the document you intend to publish. An Unknown format usually follows unreadable XML or a root other than an unprefixed RSS 2.0 rss element or a correctly namespaced Atom feed element.
A valid local result does not prove that subscribers can retrieve the feed. Test the final URL and a real reader after deployment; that check catches delivery failures, server rewrites, stale caches, and extension behavior outside the local rules.
Technical Details:
The validation path first treats the source as inert XML, then identifies the feed dialect from the expanded root name, and finally applies format-specific rules. External declarations are deliberately disabled, so a document type declaration or entity declaration stops validation before any external resource can be resolved.
Mechanism Core
| Stage | Decision | Result when it fails |
|---|---|---|
| Input boundary | Require non-blank XML no longer than 200,000 characters and reject NUL characters, document types, and entity declarations. | Validation issue before parsing |
| XML structure | Parse comments, CDATA, processing instructions, quoted attributes, namespace bindings, character references, and one balanced root. | Line-aware XML error |
| Format detection | Recognize unprefixed rss as RSS 2.0 or feed in the Atom namespace as Atom 1.0. | Unsupported-root error or profile mismatch |
| Dialect rules | Check required feed and entry fields, identifiers, links, dates, authors, enclosures, and selected cardinality rules. | Source-linked format error or warning |
| Publishing policy | If requested, require at least one RSS item or Atom entry. | Review warning; core validity remains true |
Rule Core
RSS and Atom share XML syntax but use different required fields and value formats. The tables below capture the rules that most directly determine the result.
| RSS object | Required or checked rule |
|---|---|
| Root | Unprefixed rss, version="2.0", and exactly one direct channel |
| Channel | One non-empty title, link, and description; channel link must be an absolute URI |
| Item | At least one non-empty title or description; item links must be absolute when present |
| Dates | pubDate and lastBuildDate use the supported RFC 822-style form with four-digit year and valid time fields |
| GUID | isPermaLink is true or false; a permalink GUID should be an absolute URI |
| Enclosure | Absolute url, digit-only non-negative byte length, and a media type shaped as type/subtype |
| Atom object | Required or checked rule |
|---|---|
| Feed root | feed in the Atom 1.0 namespace |
| Feed metadata | One non-empty title, absolute id IRI, and RFC 3339 updated date-time |
| Entry metadata | One non-empty title, absolute id IRI, and RFC 3339 updated date-time |
| Author | An entry needs author context from the feed, the entry, or its source |
| Content | At most one content; without content, an alternate link is required; external content requires a summary |
| Category | Each category needs a non-empty term attribute |
Processing is bounded to 5,000 XML nodes, 48 levels of nesting, and 100 findings. When the finding cap is reached, the report asks for the listed problems to be fixed before another pass. The parser does not load schemas, external entities, linked media, or extension definitions.
Auto detection does not guess from filenames or prose. It uses the parsed root name and namespace. This makes repeated reviews comparable as long as the same source, selected profile, and empty-feed policy are kept unchanged.
Limitations:
The report covers a focused set of RSS 2.0, Atom 1.0, XML, namespace, URI, date, and publishing-policy rules. It does not certify every optional field, extension vocabulary, schema, publisher policy, or network behavior.
- No public feed URL is fetched, so delivery status, caching, redirects, TLS, authentication, and response headers remain untested.
- Absolute-URI checks confirm a URI shape, not that a destination exists or is safe.
- Media enclosures are not downloaded, and their declared byte length or media type is not compared with the remote file.
References:
- RSS 2.0 Specification, RSS Advisory Board, version 2.0.11, 30 March 2009.
- RFC 4287: The Atom Syndication Format, RFC Editor, December 2005.
- Extensible Markup Language (XML) 1.0, W3C, Fifth Edition, 26 November 2008.