User Rating 0.0 โ˜…โ˜…โ˜…โ˜…โ˜…
Total Usage 0 times
Quick Add:
No feeds added yet
๐Ÿ“ก

Add an RSS or Atom feed URL above to start reading news.

Try one of the Quick Add buttons to get started.

Is this tool helpful?

Your feedback helps us improve.

โ˜… โ˜… โ˜… โ˜… โ˜…

About

RSS and Atom remain the backbone of structured content syndication. Roughly 60% of news organizations still publish feeds, yet most browsers dropped native reader support after 2013. This tool parses raw XML feeds client-side, converts them to normalized JSON objects, and renders articles in a scannable interface. It handles both RSS 2.0 (channel โ†’ item) and Atom 1.0 (feed โ†’ entry) schemas. Feeds are fetched through a CORS proxy since browser same-origin policy blocks direct cross-domain XML requests. Parsed data is cached in LocalStorage with a 10-minute TTL to reduce redundant network calls.

Misconfigured feed URLs or malformed XML silently fail in most readers, leaving users staring at blank screens. This reader validates XML structure before parsing and surfaces specific error diagnostics. Image extraction follows a priority chain: enclosure โ†’ media:content โ†’ media:thumbnail โ†’ inline img tag in description. Note: some publishers serve partial content in feeds. The tool displays whatever the feed provides and cannot fetch full articles behind paywalls.

rss reader rss to json news reader feed aggregator atom feed rss converter news feed

Formulas

The reader converts XML feed data into a normalized JSON structure. The parsing pipeline follows this transformation chain:

feedURL โ†’ CORSProxy(url) โ†’ fetch() โ†’ xmlText โ†’ DOMParser() โ†’ xmlDoc โ†’ normalize() โ†’ JSON

The CORS proxy wraps the target URL:

proxyURL = "https://api.allorigins.win/raw?url=" + encodeURIComponent(feedURL)

Cache validation uses a time-to-live check:

isCacheValid = (Date.now() โˆ’ lastFetched) < TTL

where TTL = 600000 ms (10 min).

Output JSON schema per item:

{ title: String, link: String, description: String, pubDate: Date, source: String, image: String | NULL }

Feed type detection logic:

{
RSS 2.0 if querySelector("rss") โ‰  NULLAtom if querySelector("feed") โ‰  NULLRDF if root tagName contains "RDF"

Reference Data

Feed FormatRoot ElementItem ElementTitle PathLink PathDate PathDescription PathImage SourceSpec YearMIME Type
RSS 2.0rss โ†’ channelitemtitlelinkpubDatedescriptionenclosure @url2009application/rss+xml
RSS 1.0 (RDF)rdf:RDFitemtitlelinkdc:datedescriptionNone standard1999application/rss+xml
Atom 1.0feedentrytitlelink @hrefupdated / publishedsummary / contentNone standard2005application/atom+xml
JSON Feed 1.1items arrayobject in arraytitleurldate_publishedcontent_htmlimage2021application/feed+json
Common Feed Sources
BBC Newshttp://feeds.bbci.co.uk/news/rss.xmlRSS 2.0~50 itemsMedia thumbnails via media:thumbnail
Reutershttps://www.reutersagency.com/feed/RSS 2.0~20 itemsEnclosure images
TechCrunchhttps://techcrunch.com/feed/RSS 2.0~20 itemsInline img in content
Hacker Newshttps://hnrss.org/frontpageRSS 2.0~30 itemsNo images
NASAhttps://www.nasa.gov/rss/dyn/breaking_news.rssRSS 2.0~10 itemsEnclosure images
NPR Newshttps://feeds.npr.org/1001/rss.xmlRSS 2.0~15 itemsMedia content
The Vergehttps://www.theverge.com/rss/index.xmlAtom 1.0~20 itemsInline img in content
Ars Technicahttps://feeds.arstechnica.com/arstechnica/indexRSS 2.0~25 itemsMedia thumbnail
Reddit (any sub)https://www.reddit.com/r/{sub}/.rssAtom 1.0~25 itemsInline img in content
Dev.tohttps://dev.to/feedRSS 2.0~30 itemsNo images typically

Frequently Asked Questions

Most failures stem from CORS restrictions. Browsers block cross-origin XML requests by default. This tool routes requests through a public CORS proxy (allorigins.win). If the proxy itself is down or rate-limited, the fetch fails. Some publishers also block proxy IP ranges. Try the feed URL directly in a browser tab first - if it returns XML, the proxy is likely the bottleneck. The tool automatically attempts a fallback proxy if the primary one fails.
RSS 2.0 wraps items in with dates in RFC 822 format (pubDate). Atom 1.0 uses with ISO 8601 dates (updated/published) and stores links as attributes ( rather than element text). The parser detects the root element type and branches into format-specific extraction logic. Both are normalized to identical JSON objects for uniform rendering.
DOMParser returns a document with a element when XML is invalid. The reader checks for this element immediately after parsing. Common causes include unescaped ampersands (&) in URLs, unclosed tags, or encoding mismatches. The tool reports the specific parser error message rather than silently failing. Some feeds serve XHTML content inside CDATA blocks - the parser handles these correctly by extracting text content.
The extraction follows a four-step priority chain. First: element with type containing "image". Second: or elements (common in BBC, NPR feeds). Third: parsing the description/content HTML to find the first tag's src attribute. Fourth: checking for (podcast feeds). If none yield a result, the item renders without an image. Image URLs are validated to start with http:// or https://.
Yes. Feed URLs and their parsed content are stored in LocalStorage, which persists until manually cleared. Each feed entry includes a lastFetched timestamp. On reload, the reader checks if the cache age exceeds 10 minutes (600,000 ms). If valid, cached data renders instantly without network requests. You can force a refresh by clicking the refresh button on any feed, which bypasses the TTL check.
The parser processes all items the feed provides, but rendering is virtualized - only visible items are in the DOM. Most feeds serve 10-50 items by default. Feeds like Reddit or large news sites may return up to 100. Performance remains smooth because the parser runs synchronously for typical payloads (under 500KB of XML). For feeds exceeding this, consider that the bottleneck is typically the CORS proxy transfer speed, not parsing time.
The tool normalizes heterogeneous feed formats into a single consistent schema. RSS uses pubDate (RFC 822), Atom uses updated (ISO 8601), RDF uses dc:date - all are converted to ISO 8601 strings. Link extraction varies: RSS uses element text, Atom uses href attribute, some feeds use guid. The normalized JSON always provides title, link, description (HTML-stripped), pubDate, source (feed title), and image (nullable). This makes the JSON consumable by any downstream application without format-specific handling.