rss-parser

Lightweight RSS and Atom feed parser for Node.js and the browser that turns XML feeds into plain JavaScript objects

Library
npm
v3.13.0
1,529 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
54 /100 Fair
Development Activity 40
Maintenance 4
Community 72
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
71 /100 Good
Architecture 70
Code Quality 72
Innovation 55
Learning Curve 88

rss-parser is a small library that fetches or accepts RSS/Atom XML and converts it into a normalized JavaScript object with a title, description, link, and an items array - handling the inconsistencies between feed formats (RSS 2.0, Atom, dc: namespaced fields) so callers get a consistent shape regardless of the source feed’s dialect. Both parseURL (fetch and parse in one call) and parseString (parse an already-downloaded XML string) are supported, with either callback or Promise/async-await usage.

Built on top of xml2js for the underlying XML-to-object conversion, it adds feed-specific normalization on top: stripping HTML from a contentSnippet field, converting dates to ISO 8601, and unifying naming differences like Atom’s updated vs RSS’s pubDate. A customFields option lets consumers pull in feed-specific fields (like podcast <itunes:*> tags) that aren’t mapped by default, and a browser build is published in dist/ for use outside Node.

What You Get

  • parser.parseURL(url) to fetch and parse a feed in one call, and parser.parseString(xml) for already-downloaded XML
  • Normalized output fields across RSS and Atom - unified items, ISO 8601 isoDate, creator, and HTML-stripped contentSnippet
  • A customFields option to map additional/non-standard XML tags (e.g. podcast itunes: fields) into the parsed feed or item objects
  • Configurable HTTP behavior - request timeout, custom headers, and max redirect count for parseURL
  • A pre-built browser distribution in dist/ alongside the Node.js module, plus TypeScript type definitions with generic custom-field typing

Common Use Cases

  • Building a feed reader or aggregator that ingests many different RSS/Atom feeds and needs a single consistent item shape
  • Pulling blog or news updates into a Node.js backend for further processing, storage, or re-publishing
  • Parsing podcast RSS feeds by mapping itunes: namespaced fields via the customFields option
  • Fetching and displaying a feed directly in the browser (with a CORS proxy) without a server-side component

Under The Hood

Architecture - The library is a thin, focused wrapper: lib/parser.js implements the Parser class with parseURL/parseString, delegating XML tokenization to xml2js and then running the result through lib/fields.js (defines the default RSS/Atom field mappings) and lib/utils.js (helpers for HTML stripping, date normalization, and applying customFields overrides); index.js is a 4-line entry point that just re-exports the Parser class. Tech Stack - Plain JavaScript (no TypeScript source, though index.d.ts ships hand-written types), depends on xml2js for XML parsing and entities for HTML entity decoding, built for the browser with Webpack 5, tested with Mocha/Chai plus Puppeteer for browser-environment verification. Code Quality - test/input and test/output hold golden-file fixtures for numerous real-world feeds (Reddit, podcasts, various blogs), and the test suite fails if any change alters the parsed output for those fixtures - a snapshot-style regression strategy that catches unintended parsing changes; however, the repo has had low recent commit activity, so newer edge cases may lag. API Design - The API mirrors common Node HTTP-client idioms (new Parser(), await parser.parseURL(url)) with both callback and Promise support, and the TypeScript definitions support generics (Parser<CustomFeed, CustomItem>) so custom fields get compile-time type checking.

Used by 7 apps in this directory

TypeScript
91%
Apache 2.0

Helicone

AI Development · Analytics · Monitoring

6,182

An open-source AI gateway and LLM observability platform that routes requests to 100+ models while logging cost, latency, and full traces for every call.

View details
70
Repo Health
81
Technical
65
Dependency
Built with
TypeScript 91%
Updated 2 weeks ago
TypeScript
98%
AGPL 3.0

Karakeep

Bookmarks Archiving

29,321

Self-hosted bookmark manager that captures links, notes, images, and PDFs with AI tagging, full-text search, and automatic archiving.

View details
88
Repo Health
76
Technical
66
Dependency
Built with
TypeScript 98%
Updated 5 days ago
TypeScript
93%
AGPL 3.0

Linkwarden

Bookmarks Archiving · Knowledge Management

19,855

Self-hosted collaborative bookmark manager that captures full-page archives, enables annotation, and keeps your knowledge accessible forever.

View details
87
Repo Health
72
Technical
66
Dependency
Built with
TypeScript 93%
Updated 3 weeks ago
TypeScript
92%
Other

n8n

Automation · No Code Platforms

206,147

Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.

View details
95
Repo Health
87
Technical
65
Dependency
Built with
TypeScript 92%
Updated 4 days ago
JavaScript
26%
AGPL 3.0

Omnivore

Bookmarks Archiving · Knowledge Management · Note Taking

16,265

Self-hosted read-it-later platform with highlights, newsletters, PDFs, and seamless Obsidian and Logseq integration.

View details
90
Repo Health
74
Technical
65
Dependency
Built with
JavaScript 26%
TypeScript 25%
HTML 19%
Updated 5 days ago
TypeScript
80%
AGPL 3.0

Postiz

Automation · Social Media

36,421

The agentic social media scheduler — AI-powered content creation, 33-platform posting, and team workflows, all self-hosted.

View details
91
Repo Health
70
Technical
63
Dependency
Built with
TypeScript 80%
JavaScript 11%
Updated 6 days ago
TypeScript
100%
AGPL 3.0

RSSHub

Automation · Social Media

46,339

Turn any website into an RSS feed — social media, streaming platforms, and niche sites all become subscribable in seconds.

View details
94
Repo Health
82
Technical
72
Dependency
Built with
TypeScript 100%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers