2024-12-20 ~ 7 min read

RSS Feeds: What They Are And How To Make Them


Around 2017 I logged out of Instagram and Facebook for good, quieting the dull roar of the body image crisis they caused. I say “logged out”, not “deleted my accounts” because the deletion process was so convoluted I didn’t bother. Terrible sad sad UX. I got a Twitter account in 2020, and in fact got my first two jobs in tech via Twitter referrals, but it got way less fun after it turned into X, so I quietly slid away from that platform too.

I’m still actively on LinkedIn nowadays, mostly as a way to request coffee chats with people in the engineering and design spaces. I’m sure my personal experience resonates with that of many others as social media morphs and fractionates and many of us dizzily wander out of the haze of scrolling.

But we still like to use the internet to read interesting things, and luckily, there’s a way to design your own feed of interesting things. No algorithm designed by data-mongers involved.

The title, “RSS Feeds: What They Are And How To Make Them” might sound obvious to people who have been using them since their inception, but RSS fell out of fashion for a bit and many people don’t know what RSS is, or how it works. I’m here to tell you that.

What is RSS?

RSS, or Really Simple Syndication, is a way of publishing new material via XML content to the same URL. The RSS reader then pulls that new material so you can read it. You usually provide the URL that you’d like to watch, say a news feed or a blog site. The website of origin doesn’t need to “know” anything about your RSS reader, it just publishes the information for dissemination. You opt into it by hooking up your reader.

How RSS Works

1 / 3
publishespollsWebsiteXML FeedRSS Reader
Website publishes new material to the same URL

Let’s zoom in a bit here. What is XML?

It stands for eXtensible Markup Language. What’s a markup language? It’s basically a way of annotating text to add structure. Here’s an example of an RSS XML feed generated by Claude Haiku 4.5:

xml
feed.xml


  1<?xml version="1.0" encoding="UTF-8"?>


  2<rss version="2.0">


  3  <channel>


  4    <title>My Blog</title>


  5    <link>https://example.com</link>


  6    <description>Latest articles</description>


  7    <item>


  8      <title>Understanding RSS Feeds</title>


  9      <link>https://example.com/rss-guide</link>


  10      <pubDate>Fri, 15 Mar 2024 10:00:00 GMT</pubDate>


  11      <description>Learn how RSS works...</description>


  12    </item>


  13  </channel>


  14</rss>

Here, we can see that there’s an RSS version, some metadata, and a primary item entity.

Here, in the BBC’s RSS feed (truncated here) from the day that I’m writing this, we can see that the main subcategory is also item:

xml
feed.xml


  1<?xml version="1.0" encoding="UTF-8"?>


  2<item>


  3<title>


  4<![CDATA[ Chris Mason: Delight and relief in government after state visit ]]>


  5</title>


  6<link>https://www.bbc.com/news/articles/cvgn3445655o?at_medium=RSS&at_campaign=rss</link>


  7<guid isPermaLink="false">https://www.bbc.com/news/articles/cvgn3445655o#0</guid>


  8<pubDate>Fri, 19 Sep 2025 00:24:23 GMT</pubDate>


  9</item>


  10

How Can I Make My Own RSS App?

Luckily, when it comes to reading RSS feeds, there are many plugins available, including Astro’s RSS plugin that is implemented on this blog.

However, how would you build an RSS reader, like Inoreader, or another popular option? I spent a couple hours vibe-coding one to see how hard it could be.

Here’s how I set it up: I created some models to represent the feed items in a local PostGreSQL database. I’d update the database manually about once a day, then fetch from that, parse the results, and show them in the UI. I ended up with more questions than answers!

Local RSS Reader Architecture

1 / 4
HTTP GETXML DataStore ItemsRSS FeedsFetcherParserDatabaseUI
Fetcher makes HTTP requests to RSS feed URLs

A “Hello World” app is easy but I think a smoothly functioning distributed app would be more difficult to get out the door! Here were my takeaways:

  • XML formatting being inconsistent is a gotcha – for example, some of the bloggers I follow use the Atom standard, and some don’t. Chaos! My app didn’t “know” how to handle dates with Atom.

  • For my case when I’m a single polling for new blogs once a day, following high-quality bloggers who blog max 2x a week, I don’t really need the rate limiter ChatGPT created for me. But it’s something to think about if I were to deploy this at scale to avoid creating issues for RSS servers. Again, for me the fetch and write concurrency doesn’t matter so much, but it would be something to consider otherwise.

  • The links and info have to be stored somewhere, and a static database like PostgreSQL should be fine, but in my vibe-coding session I didn’t even get to consider things like pagination.

Conclusion

That’s pretty much all I know about RSS readers at this point. It will be interesting to see where they go in the next few years. We’re in an odd era of the internet: Substack social media posts proclaiming the benefits of leaving social media, AI-generated comments on AI-generated LinkedIn posts, the dominance of short form video. There’s a lot of irony and fatigue. My hope is that RSS readers can offer a sort of antidote to this and bring you directly in touch with your favorite authors.

So here’s what I want to know from you:

  • What are your favorite RSS readers? Inoreader, Feedly, another? I’ve yet to find a perfect one.

  • How would you build your own RSS reader? Would you use something like DuckDB or Airtable as a backend? Next.js or Astro for a frontend? Something different entirely?

  • How did you set up your own RSS feed on your own site?

If you want to discuss, DM me on LinkedIn!


Lucia profile pic

Hi, I'm Lucia. I'm a software engineer who believes in a human-centered developer experience and in the joy of learning. I'm obssessed with developer tooling. LinkedIn | GitHub | Bluesky.