Guide

JSON Feed: the modern alternative to RSS

Everything you need to know about JSON Feed — what it is, why it exists, how to create one, and how readers like Blogs Are Back support it alongside RSS and Atom.

What Is JSON Feed?

A feed format that speaks your language

JSON Feed is a syndication format — just like RSS and Atom — that lets readers subscribe to your blog. The difference? It uses JSON instead of XML.

Created by Brent Simmons and Manton Reece in 2017, JSON Feed was born from a simple observation: most web developers are already fluent in JSON. They parse it, debug it, and generate it every day. XML — especially the RSS flavor of XML with its namespaces, CDATA sections, and date format quirks — is a different story.

JSON Feed doesn't replace RSS. It's an alternative. Many blogs offer both, and most modern feed readers (including Blogs Are Back) support all three formats transparently.

A minimal JSON Feed

{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "My Blog",
  "home_page_url": "https://myblog.com",
  "feed_url": "https://myblog.com/feed.json",
  "items": [
    {
      "id": "https://myblog.com/first-post",
      "url": "https://myblog.com/first-post",
      "title": "Hello, World",
      "content_html": "<p>My first post.</p>",
      "date_published": "2025-01-15T10:00:00Z"
    }
  ]
}

That's it. No XML declarations, no CDATA, no namespace prefixes.

Why JSON Feed?

Human-readable

Open a JSON Feed in your browser and you can actually read it. Try that with a raw RSS feed.

Easy to generate

No XML escaping, no CDATA sections, no namespace declarations. Just JSON.stringify() and you're done.

Harder to get wrong

RSS has well-documented pitfalls: unescaped ampersands, date format variations, encoding issues. JSON avoids most of them.

Native to the web stack

Every language has a battle-tested JSON parser. XML parsing libraries are heavier and more varied in behavior.

RSS vs JSON Feed

RSS (XML)

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>My Blog</title>
  <link>https://myblog.com</link>
  <description>A blog</description>
  <item>
    <title>Hello &amp; Welcome</title>
    <link>https://myblog.com/hello</link>
    <guid>https://myblog.com/hello</guid>
    <pubDate>Wed, 15 Jan 2025
      10:00:00 +0000</pubDate>
    <content:encoded><![CDATA[
      <p>My first post.</p>
    ]]></content:encoded>
  </item>
</channel>
</rss>

JSON Feed

{
  "version": "https://jsonfeed.org/
    version/1.1",
  "title": "My Blog",
  "home_page_url": "https://myblog.com",
  "items": [
    {
      "id": "https://myblog.com/hello",
      "url": "https://myblog.com/hello",
      "title": "Hello & Welcome",
      "content_html": "<p>My first
        post.</p>",
      "date_published":
        "2025-01-15T10:00:00Z"
    }
  ]
}

Notice the difference? No XML declaration, no namespace prefixes, no CDATA escaping. Ampersands and special characters just work — JSON handles escaping automatically. Dates use ISO 8601, which every language parses natively.

Specification Reference

Top-level fields

versionrequired

Must be "https://jsonfeed.org/version/1.1"

titlerequired

The name of your blog

home_page_url

URL of the blog itself (not the feed)

feed_url

URL of this feed (self-referencing)

description

What your blog is about

icon

URL to a large icon (512x512 or larger)

favicon

URL to a small icon for the feed

language

Primary language (e.g. "en", "fr")

itemsrequired

The posts in your feed (see item fields below)

Item fields

idrequired

Unique, permanent identifier for the post

url

URL of the post on your blog

title

Title of the post

content_html

Full HTML content of the post

content_text

Plain text content (alternative to HTML)

summary

Short plain-text summary or excerpt

date_published

Publication date in RFC 3339 format

date_modified

Last modified date in RFC 3339 format

image

URL of the main image for the post

authors

Array of author objects with name and url

tags

Array of tag strings

Tip: Provide either content_html or content_text (or both). Including full content gives your readers the best experience — they can read entire posts without leaving their feed reader.

Add JSON Feed to Your Blog
Best Practices
1

Include full content

Use content_html to include complete post HTML. Readers prefer to read articles in their feed reader without clicking through.

2

Use absolute URLs everywhere

All URLs — post links, images, feed_url, home_page_url — should be absolute. Relative URLs break when the feed is consumed outside your site.

3

Use stable IDs

The id field should never change once a post is published. The permalink URL is a good choice. Changing IDs causes duplicate posts in readers.

4

Set the correct Content-Type

Serve your feed with Content-Type: application/feed+json. This helps feed readers auto-detect the format. application/json also works but is less specific.

5

Offer both RSS and JSON Feed

Many readers still only support RSS/Atom. Offering both formats maximizes your reach. Both can be generated from the same data source.

Common Questions

Should I switch from RSS to JSON Feed?

No — keep your RSS feed and add a JSON Feed alongside it. RSS has decades of ecosystem support. JSON Feed is a complement, not a replacement. Both can be generated from the same data.

Do most feed readers support JSON Feed?

Support has grown steadily since 2017. Major readers like NetNewsWire, Feedbin, Inoreader, Blogs Are Back, and many others support it. Some older readers may not, which is why offering both formats is recommended.

What about Atom? Where does JSON Feed fit in?

Atom is another XML-based format that addressed some of RSS's shortcomings. JSON Feed takes a different approach by abandoning XML entirely. You don't need all three — RSS + JSON Feed covers the widest range of readers.

Is JSON Feed an official standard?

JSON Feed is a well-documented open specification but not an IETF or W3C standard like Atom (RFC 4287). In practice, this doesn't matter — it's widely implemented and the spec is stable at version 1.1.

Can I validate my JSON Feed?

Yes. Since it's valid JSON, any JSON validator catches syntax errors. For spec compliance, check that your feed includes the required version, title, and items fields, and that each item has an id.

Ready to share your blog?

Whether you offer RSS, JSON Feed, or both — submit your blog to our directory so readers can discover your work.