Skip to content

Meet Feedsmith โ€‹

Robust and fast JavaScript parser and generator for RSS, Atom, JSON Feed, and RDF feeds, with support for popular namespaces and OPML files.

Feedsmith provides both universal and format-specific parsers that maintain the original feed structure in a clean, object-oriented format while intelligently normalizing legacy elements. Access all feed data without compromising simplicity.

Features โ€‹

Core โ€‹

  • Comprehensive Support ๐ŸŽฏ โ€” Supports all major feed formats and feed namespaces.
  • Perserves Structure ๐Ÿ“ฆ โ€” Parsed feed object maintains the original feed structure making it easy to access the data.
  • Smart Namespace Handling ๐Ÿง  โ€” Automatically normalizes custom namespace prefixes to standard ones (e.g., <custom:creator> becomes dc.creator).
  • Parsing & Generating ๐Ÿ”ฉ โ€” You can use one package for both parsing and generating feeds.

Leniency โ€‹

  • Normalizes Legacy Elements โœจ โ€” Upgrades feed elements to their modern equivalents so that you never need to worry about reading feeds in older formats.
  • CaSe INSENsiTive ๐Ÿ โ€” Handles fields and attributes in any case (lowercase, uppercase, mixed).
  • Forgiving ๐Ÿค โ€” Handles malformed or incomplete feeds gracefully. It will extract whatever valid data it can find and ignore missing or invalid elements. This makes it suitable for use with real-world feeds that may not strictly follow specifications.

Performance and Type-Safety โ€‹

  • Ultrafast parsing โšก โ€” One of the fastest feed parsers in JavaScript (see benchmarks).
  • Type-safe API ๐Ÿ›Ÿ โ€” Built with TypeScript from the ground up, it provides complete type definitions for every feed format and namespace.
  • Tree-shakable ๐Ÿƒ โ€” Only include the parts of the library you need, reducing bundle size.
  • Well-tested ๐Ÿ”ฌ โ€” Comprehensive test suite with over 2000 tests and 99% code coverage.

Compatibility โ€‹

  • Works in Node.js and modern browsers.
  • Works with plain JavaScript, you don't need to use TypeScript.

Supported Formats โ€‹

Feedsmith aims to fully support all major feed formats and namespaces in complete alignment with their specifications.

โœ… Available ย ย ยทย ย  โŒ›๏ธ Work in progress ย ย ยทย ย  ๐Ÿ“‹ Planned

Feeds โ€‹

FormatVersionsParsingGenerating
RSS0.9x, 2.0โœ…โœ…
Atom0.3, 1.0โœ…โœ…
JSON Feed1.0, 1.1โœ…โœ…
RDF0.9, 1.0โœ…โณ

Namespaces โ€‹

NamePrefixSupported inParsingGenerating
Atom<atom:*>RSS, RDFโœ…โœ…
Dublin Core<dc:*>RSS, Atom, RDFโœ…โœ…
Syndication<sy:*>RSS, Atom, RDFโœ…โœ…
Content<content:*>RSS, RDFโœ…โœ…
Slash<slash:*>RSS, Atom, RDFโœ…โœ…
iTunes<itunes:*>RSS, Atomโœ…โœ…
Podcast<podcast:*>RSSโœ…โœ…
Media RSS<media:*>RSS, Atom, RDFโœ…โœ…
GeoRSS-Simple<georss:*>RSS, Atom, RDFโœ…โœ…
Atom Threading<thr:*>RSS, Atomโœ…โœ…
Dublin Core Terms<dcterms:*>RSS, Atom, RDFโœ…โœ…
Well-Formed Web<wfw:*>RSS, Atom, RDFโœ…โœ…
YouTube<yt:*>Atomโœ…โœ…
Administrative<admin:*>๐Ÿ“‹๐Ÿ“‹๐Ÿ“‹
GML<gml:*>๐Ÿ“‹๐Ÿ“‹๐Ÿ“‹
GeoRSS GML<georss:*>๐Ÿ“‹๐Ÿ“‹๐Ÿ“‹

Other โ€‹

FormatVersionsParsingGenerating
OPML1.0, 2.0โœ…โœ…

Why Feedsmith? โ€‹

Why should you use this library over the alternatives?

The key advantage of Feedsmith is that it preserves the original feed structure exactly as defined in each specific feed format.

Many alternative packages attempt to normalize data by:

  • Merging distinct fields like author, dc:creator, and creator into a single property.
  • Combining date fields such as dc:date and pubDate without preserving their sources.
  • Handling multiple <atom:link> elements inconsistently, sometimes keeping only the first or last one or ignoring different rel attributes.
  • Some libraries try to combine different feed formats into one universal structure.

While this approach can be useful for quick reading of feed data, it often results in a loss of information that may be crucial for certain applications, such as reading data from specific namespaces.