RSS & Atom Feed Parser
Extract feed entries, links, authors, dates and enclosures from local XML, with JSON, CSV and URL-list exports.
Read a feed without opening its links
Paste XML or open a UTF-8 file. Supported roots are RSS 2.0 with one channel, Atom 1.0 feed and standalone Atom entry documents. Atom prefixes are resolved by namespace, not their spelling. The report contains entries, authors, categories, alternate links and enclosures. Titles and summaries stay text; nothing is inserted as executable HTML.
The optional feed document URL supplies a base for relative references. Nested xml:base values are inherited. Without a usable base, relative links remain in the report with an unresolved issue and no resolved URL. Unsafe or unsupported schemes remain visible as raw values but are excluded from primary HTTP URL exports.
Dates retain their source values
The report retains trimmed original dates and a UTC ISO value when conversion is supported. Atom uses explicit-timezone RFC 3339 timestamps. RSS accepts common RFC 822-style dates with numeric offsets or defined UT/GMT/US zones, including two-digit years. Calendar dates and times are validated, so a February 30 value is not rolled into March.
Leap seconds and unknown offsets are retained without inventing a normalized instant. A mismatched weekday is flagged; sub-millisecond precision remains in the original string while UTC output uses milliseconds. Invalid dates do not make an entry disappear. RSS dc:date is recognized by its namespace.
Choose a useful export
JSON keeps structured metadata and per-link issues. CSV exports one row per returned entry with CRLF and formula-cell protection. The URL list contains only each entry’s resolved primary HTTP/HTTPS URL, preferring an HTML alternate link. For RSS, a usable guid is a link fallback unless isPermaLink is false; IDs are retained as strings, not normalized as URLs.
Optional deduplication keeps the first case-sensitive ID, or the primary URL when no ID is present. The requested row limit is applied afterward and the report states whether output was truncated. Raw-body mode includes source HTML or serialized XHTML content as data. It does not download attached files or decode embedded binary content.
Validation and limits
The parser is not a complete RSS/Atom schema or semantic validator. Missing item text, missing Atom IDs, date issues, invalid bases and unusable links can be reported, but a clean report does not certify a valid feed. HTML summaries are converted to text through an inert parser that omits scripts and styles.
Active DTD/entity declarations, malformed XML, illegal XML characters and nesting beyond 64 levels are rejected. Comments and CDATA may safely contain literal DOCTYPE examples. Input is limited to 2,097,152 UTF-16 units, uploads to 2 MiB UTF-8, the XML tree to 100,000 nodes and feeds to 5,000 entries. Output is limited to 8,388,608 characters; large previews are shortened to 200,000 while copies and downloads remain complete. Processing runs in a local Worker and stops after 15 seconds.
Questions & answers
Will links, images or audio be loaded?
No. The tool reads XML as data, including raw HTML when requested. It never opens article links, images, enclosures or external XML entities.
Why does a relative URL have no resolved value?
Provide the document’s public URL or a valid xml:base. A local filename cannot establish the original website’s URL.
Is a feed with parsed entries necessarily valid?
No. This is a structured parser with selected diagnostics, not a complete validator. Review the source and feed specification when publishing.
Other Languages
References
- RSS 2.0 Specification (Current)
- RFC 4287 - The Atom Syndication Format
- GitHub - xmldom/xmldom: A pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. · GitHub
- GitHub - inikulin/parse5: HTML parsing/serialization toolset for Node.js. WHATWG HTML Living Standard (aka HTML5)-compliant. · GitHub
How we make sure
We check this tool with the automated test suites linked below. Example checks are shown in their original language.
- Verification method
- Check RSS/Atom fields, Unicode, namespaces, relative URLs, enclosure lengths and original timestamps.
- Comparison reference
- Explicit RSS/Atom XML fixtures and expected entries.
- Verification scope
- These samples and boundaries do not prove correctness for every input.
Test source and cases (select a file to read it)
-
feed-tools.test.js
- RSS preserves Unicode, decoded query values, original timestamps and exact enclosure length text
- Atom namespace aliases, inherited and nested xml:base, language links and feed authors are honored
These checks cover the listed examples and boundaries, not every possible input. Round trips and checks using the same library are not independent verification.