{{ summaryTitle }}
{{ summaryValue }}

{{ summaryLine }}

{{ badge.label }} {{ badge.value }}
Feed validation source and profile
Paste XML, drop one local file onto the editor, or browse for a file. Content never leaves this browser tab.
{{ sourceStatus }}
Auto detect reports the resolved format; choose a pinned profile when a publisher promises one exact dialect.
The neutral default is off. Enabling it adds a warning for zero items or entries without changing core specification validity.
SeverityLineLocationFindingRepairCopy
{{ 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
  1. {{ row.heading }}{{ row.repair }}
No repairs are required by the implemented core RSS 2.0 or Atom 1.0 checks.

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.

RSS 2.0 and Atom 1.0 structural differences
Concern RSS 2.0 Atom 1.0
Root<rss version="2.0">A feed element in the Atom 1.0 namespace
Feed containerExactly one channelThe feed root itself
Entryitementry
Feed identityChannel title, link, and descriptionFeed title, id, and updated
Date styleRFC 822-style dates with a four-digit yearRFC 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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

RSS and Atom validation mechanism
Stage Decision Result when it fails
Input boundaryRequire non-blank XML no longer than 200,000 characters and reject NUL characters, document types, and entity declarations.Validation issue before parsing
XML structureParse comments, CDATA, processing instructions, quoted attributes, namespace bindings, character references, and one balanced root.Line-aware XML error
Format detectionRecognize unprefixed rss as RSS 2.0 or feed in the Atom namespace as Atom 1.0.Unsupported-root error or profile mismatch
Dialect rulesCheck required feed and entry fields, identifiers, links, dates, authors, enclosures, and selected cardinality rules.Source-linked format error or warning
Publishing policyIf 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.

Implemented RSS 2.0 validation rules
RSS object Required or checked rule
RootUnprefixed rss, version="2.0", and exactly one direct channel
ChannelOne non-empty title, link, and description; channel link must be an absolute URI
ItemAt least one non-empty title or description; item links must be absolute when present
DatespubDate and lastBuildDate use the supported RFC 822-style form with four-digit year and valid time fields
GUIDisPermaLink is true or false; a permalink GUID should be an absolute URI
EnclosureAbsolute url, digit-only non-negative byte length, and a media type shaped as type/subtype
Implemented Atom 1.0 validation rules
Atom object Required or checked rule
Feed rootfeed in the Atom 1.0 namespace
Feed metadataOne non-empty title, absolute id IRI, and RFC 3339 updated date-time
Entry metadataOne non-empty title, absolute id IRI, and RFC 3339 updated date-time
AuthorAn entry needs author context from the feed, the entry, or its source
ContentAt most one content; without content, an alternate link is required; external content requires a summary
CategoryEach 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: