
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
Fast, all‑in‑one feed parser and generator for RSS, Atom, RDF, and JSON Feed, with support for Podcast, iTunes, Dublin Core, and OPML files.
Fast, all‑in‑one JavaScript feed parser and generator for RSS, Atom, RDF, and JSON Feed, with support for popular namespaces and OPML files.
Feedsmith offers 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.
Read full docs ↗ · Quick Start · Why Feedsmith? · Benchmarks →
[!IMPORTANT] Feedsmith 3.x is in final stages of development. Check out the v3.x guide to explore new features and learn how to upgrade. Install it with:
npm install feedsmith@next
<custom:creator> becomes dc.creator).Feedsmith aims to fully support all major feed formats and namespaces in complete alignment with their specifications.
✅ Available · ⌛️ Work in progress · 📋 Planned
| Format | Versions | Parse | Generate |
|---|---|---|---|
| RSS | 0.9x, 2.0 | ✅ | ✅ |
| Atom | 0.3, 1.0 | ✅ | ✅ |
| RDF | 0.9, 1.0 | ✅ | 📋 |
| JSON Feed | 1.0, 1.1 | ✅ | ✅ |
| Format | Versions | Parse | Generate |
|---|---|---|---|
| OPML | 1.0, 2.0 | ✅ | ✅ |
| Name | Prefix | Supported in | Parse | Generate |
|---|---|---|---|---|
| Atom | <atom:*> | RSS, RDF | ✅ | ✅ |
| Dublin Core | <dc:*> | RSS, Atom, RDF | ✅ | ✅ |
| Dublin Core Terms | <dcterms:*> | RSS, Atom, RDF | ✅ | ✅ |
| Syndication | <sy:*> | RSS, Atom, RDF | ✅ | ✅ |
| Content | <content:*> | RSS, RDF | ✅ | ✅ |
| Slash | <slash:*> | RSS, Atom, RDF | ✅ | ✅ |
| iTunes | <itunes:*> | RSS, Atom | ✅ | ✅ |
| Podcast Index | <podcast:*> | RSS | ✅ | ✅ |
| Podlove Simple Chapters | <psc:*> | RSS, Atom | ✅ | ✅ |
| Media RSS | <media:*> | RSS, Atom, RDF | ✅ | ✅ |
| Google Play Podcast | <googleplay:*> | RSS, Atom | ✅ | ✅ |
| Spotify | <spotify:*> | RSS | ✅ | ✅ |
| Acast | <acast:*> | RSS | ✅ | ✅ |
| RawVoice | <rawvoice:*> | RSS | ✅ | ✅ |
| FeedPress | <feedpress:*> | RSS | ✅ | ✅ |
| arXiv | <arxiv:*> | Atom | ✅ | ✅ |
| OpenSearch | <opensearch:*> | RSS, Atom | ✅ | ✅ |
| PRISM | <prism:*> | RSS | ✅ | ✅ |
| ccREL | <cc:*> | RSS, Atom | ✅ | ✅ |
| Creative Commons | <creativeCommons:*> | RSS, Atom | ✅ | ✅ |
| Atom Threading | <thr:*> | RSS, Atom | ✅ | ✅ |
| Atom Publishing Protocol | <app:*> | Atom | ✅ | ✅ |
| Comment API | <wfw:*> | RSS, Atom, RDF | ✅ | ✅ |
| Administrative | <admin:*> | RSS, Atom, RDF | ✅ | ✅ |
| Pingback | <pingback:*> | RSS, Atom | ✅ | ✅ |
| Trackback | <trackback:*> | RSS, Atom | ✅ | ✅ |
| Source | <source:*> | RSS | ✅ | ✅ |
| blogChannel | <blogChannel:*> | RSS | ✅ | ✅ |
| YouTube | <yt:*> | Atom | ✅ | ✅ |
| W3C Basic Geo | <geo:*> | RSS, Atom | ✅ | ✅ |
| GeoRSS Simple | <georss:*> | RSS, Atom, RDF | ✅ | ✅ |
| RDF | <rdf:*> | RDF | ✅ | ✅ |
This guide will get you up and running with Feedsmith in just a few minutes.
For a full overview of all the features, visit the documentation website.
npm install feedsmith
Migrating from v1.x? Check out the migration guide.
The simplest way to parse any feed is to use the universal parseFeed function:
import { parseFeed } from 'feedsmith'
// Works with RSS, Atom, RDF, and JSON Feed
const { format, feed } = parseFeed(feedContent)
console.log('Feed format:', format) // rss, atom, json, rdf
console.log('Feed title:', feed.title)
if (format === 'rss') {
console.log('RSS feed link:', feed.link)
}
If you know the format in advance, you can use the format-specific parsers:
import {
parseAtomFeed,
parseJsonFeed,
parseRssFeed,
parseRdfFeed
} from 'feedsmith'
// Parse specific formats
const rssFeed = parseRssFeed('rss content')
const atomFeed = parseAtomFeed('atom content')
const rdfFeed = parseRdfFeed('rdf content')
const jsonFeed = parseJsonFeed('json content')
// Access typed data
rssFeed.title
rssFeed.dc?.creator
rssFeed.items?.[0]?.title
import { parseOpml } from 'feedsmith'
const opml = parseOpml('opml content')
opml.head?.title
opml.body?.outlines?.[0].text
opml.body?.outlines?.[1].xmlUrl
import { generateRssFeed } from 'feedsmith'
const rss = generateRssFeed({
title: 'My Blog',
link: 'https://example.com',
description: 'A simple blog',
items: [{
title: 'Hello World',
link: 'https://example.com/hello',
description: 'My first post',
pubDate: new Date()
}]
})
console.log(rss) // Complete RSS XML
// You can also generate other formats:
// - generateAtomFeed() for Atom feeds
// - generateJsonFeed() for JSON feeds
// - generateOpml() for OPML files
If the feed is unrecognized or invalid, an Error will be thrown with a descriptive message.
import { parseFeed, parseJsonFeed } from 'feedsmith'
try {
const universalFeed = parseFeed('<not-a-feed></not-a-feed>')
} catch (error) {
// Error: Unrecognized feed format
}
try {
const jsonFeed = parseJsonFeed('{}')
} catch (error) {
// Error: Invalid feed format
}
Feedsmith provides comprehensive TypeScript types for all feed formats:
import type { Rss, Atom, Json, Opml } from 'feedsmith/types'
// Access all types for a format
type Feed = Rss.Feed
type Item = Rss.Item
type Category = Rss.Category
type Enclosure = Rss.Enclosure
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:
author, dc:creator, and creator into a single property.dc:date and pubDate without preserving their sources.<atom:link> elements inconsistently, sometimes keeping only the first or last one or ignoring different rel attributes.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.
FAQs
Fast, all‑in‑one feed parser and generator for RSS, Atom, RDF, and JSON Feed, with support for Podcast, iTunes, Dublin Core, and OPML files.
The npm package feedsmith receives a total of 9,921 weekly downloads. As such, feedsmith popularity was classified as popular.
We found that feedsmith demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.