NV ToolkitFormat · Validate · Convert

Converters

RSS to JSON Converter

Turn any RSS feed into clean JSON — channel metadata and an items array, ready for your app or script.

In short

Convert RSS to JSON online: paste a feed or load its URL and get clean JSON with channel metadata and an items array. Free, instant, client-side.

By NaveenKumar T · Updated

Learn: XML Namespaces Explained: Prefixes, Default Namespaces and Common Errors

  • Instant in-browser conversion
  • Validates input first
  • Load feeds directly from a URL

Runs entirely in your browser — nothing you paste or open here is uploaded, logged, or stored.How we handle data →

Example

RSS to JSON: input and output

A minimal podcast feed with two episodes: each item has a guid with an attribute, an RFC 822 pubDate and an attribute-only enclosure, and the first carries an HTML description inside CDATA.

Input · RSS (XML)
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Night Shift Radio</title>
    <link>https://nightshift.example.fm</link>
    <item>
      <title>Ep. 12: The bakery at 4am</title>
      <guid isPermaLink="false">nsr-012</guid>
      <pubDate>Tue, 02 Jun 2026 05:00:00 GMT</pubDate>
      <enclosure url="https://cdn.example.fm/nsr-012.mp3" length="28311552" type="audio/mpeg"/>
      <description><![CDATA[<p>We visit a <b>24-hour</b> bakery.</p>]]></description>
    </item>
    <item>
      <title>Ep. 13: Night nurses</title>
      <guid isPermaLink="false">nsr-013</guid>
      <pubDate>Tue, 09 Jun 2026 05:00:00 GMT</pubDate>
      <enclosure url="https://cdn.example.fm/nsr-013.mp3" length="30105600" type="audio/mpeg"/>
    </item>
  </channel>
</rss>
Output · JSON
{
  "rss": {
    "channel": {
      "title": "Night Shift Radio",
      "link": "https://nightshift.example.fm",
      "item": [
        {
          "title": "Ep. 12: The bakery at 4am",
          "guid": {
            "#text": "nsr-012",
            "@isPermaLink": false
          },
          "pubDate": "Tue, 02 Jun 2026 05:00:00 GMT",
          "enclosure": {
            "@url": "https://cdn.example.fm/nsr-012.mp3",
            "@length": 28311552,
            "@type": "audio/mpeg"
          },
          "description": "<p>We visit a <b>24-hour</b> bakery.</p>"
        },
        {
          "title": "Ep. 13: Night nurses",
          "guid": {
            "#text": "nsr-013",
            "@isPermaLink": false
          },
          "pubDate": "Tue, 09 Jun 2026 05:00:00 GMT",
          "enclosure": {
            "@url": "https://cdn.example.fm/nsr-013.mp3",
            "@length": 30105600,
            "@type": "audio/mpeg"
          }
        }
      ]
    },
    "@version": 2
  }
}

channel.item is a two-element array. Each enclosure became an object of @url, @length (typed as a number) and @type; the guid's isPermaLink="false" parsed to the boolean false beside a #text key; the CDATA wrapper was stripped, leaving the HTML as a plain string; and the declaration surfaces as a ?xml key at the top, which you can ignore.

Learn more

How RSS to JSON conversion works

RSS is XML with a fixed vocabulary, and the converter exploits that: the result is JSON with rss.channel carrying the feed metadata (title, link, description) and channel.item as an array of entries — each with its title, link, pubDate, and any namespaced extras the feed includes. Attributes like version are preserved with an @ prefix.

Feeds with a single entry still produce predictable output; entries with HTML in their descriptions arrive as escaped strings you can render or strip downstream.

When to convert RSS to JSON

Building anything that consumes feeds — a news widget, a podcast directory, a content aggregator — means turning RSS into objects your code can map over. Paste a feed here (or fetch its URL directly) to see exactly what structure you'll receive, prototype against real data, or do one-off extractions like 'give me every episode title' with the JSON tools one click away.

Help

Frequently asked questions

Everything you need to know about the RSS to JSON.

01Can I load a feed directly from its URL instead of pasting the XML?

Loading a feed straight from its URL works on this page — enter the address and the converter fetches and parses it directly, faster than copying XML by hand for a large feed. The fetch runs from your own browser, so it only succeeds when the feed's server sends CORS headers allowing cross-origin requests; a feed that blocks this needs its XML pasted in manually instead.

02Why is channel.item sometimes an object instead of an array?

When a feed contains exactly one entry, repeated-element detection has nothing to repeat, so item parses as a single object. Robust consumers wrap it: Array.isArray(item) ? item : [item]. Multi-entry feeds always produce a proper array.

03How are enclosures, guid attributes, CDATA descriptions, and dates represented?

<enclosure url="…" length="1234" type="audio/mpeg"/> is an attribute-only element, so it becomes an object of @url, @length (typed as a number) and @type. <guid isPermaLink="false">…</guid> has both an attribute and text, giving {"@isPermaLink": false, "#text": "…"}. CDATA wrappers are stripped and the HTML inside kept as a plain string. pubDate and lastBuildDate stay strings in their RFC 822 form — nothing is converted to a Date — and namespaced tags such as itunes:duration keep the prefix in the key name.

Keep working

Related tools

Learn the format

Related guides

All guides →