RSS and Atom feeds: the old format that still moves your content
Why a feed still matters in 2026, RSS 2.0 versus Atom, how to make it discoverable, and the small mistakes that make readers show a year-old post as new.
SEO · Published: 1 October 2026 · 5 min read · Ольга Мирошник
A feed looks like a relic. Nobody types a feed URL into a browser any more, and most site owners last thought about theirs when the CMS generated it by default. Yet a feed is still the cheapest machine-readable answer to "what is new on this site", and a surprising number of things keep asking.
Who actually reads it
- Feed readers — Feedly, Inoreader, NetNewsWire, Miniflux — used by exactly the technical audience that writes about you and links to you.
- Aggregators that republish headlines from dozens of sources.
- Automation: IFTTT and Zapier recipes, newsletters assembled from the latest posts, Slack and Telegram bots that announce each entry in a channel.
- Syndication the way podcasts work: one URL, many subscribers, each polling on its own schedule.
- Search engines and AI tools looking for fresh content. A feed is a compact list of recent URLs with dates, far cheaper to fetch than a crawl.
With WebSub the feed can even push: you ping a hub when you publish, and subscribers get the update in seconds instead of on their next poll.
RSS 2.0 or Atom 1.0
RSS 2.0 is more widespread, and every consumer understands it. Atom 1.0 is the stricter, better-specified one: id and updated are mandatory on every entry, content declares its type (text, html, xhtml) instead of leaving the client to guess, and xml:base gives relative references a defined meaning. Either is fine. Pick one and do it properly — a correct RSS feed beats a half-valid Atom one.
Make it discoverable
A feed that nothing points to does not exist. Declare it in the <head> of every page, not only the blog index:
<link rel="alternate" type="application/atom+xml"
title="SiteScan blog" href="/blog/feed.xml">
Readers and browser extensions look for exactly this tag. Serve the file itself with the matching type — application/atom+xml or application/rss+xml, not text/html.
What goes inside
Absolute URLs everywhere. The feed is read outside your site, so /blog/post resolves to nothing. That includes links and images inside the content.
Stable entry ids. The id is how a reader knows it has already seen an entry. Change it — new domain, new URL scheme, http to https — and every subscriber sees your whole archive as new again. Atom tag URIs exist for this:
<id>tag:sitescan.top,2026:blog/rss-atom-feeds</id>
Honest dates. updated changes when the content changes, not on every build.
Full content or excerpt. Full content is friendlier to readers; an excerpt brings people to the page. Both are legitimate — just make the excerpt meaningful rather than the first 200 characters cut mid-word.
The latest N entries. Twenty to fifty is plenty. The feed is a window on recent changes, not an archive, and a 5 MB file gets polled by every subscriber, every hour.
One feed per language. A multilingual site should not mix languages in one stream. Give each language its own feed and declare the right one on that language's pages.
Common mistakes
- The feed exists, but no page links to it.
- Relative URLs in links and content.
- Broken XML because of one unescaped
&in a title. A parser rejects the whole document, not just that entry. - Dates in the wrong format: RSS wants RFC 822 (
Wed, 01 Oct 2026 09:00:00 GMT), Atom wants RFC 3339 (2026-10-01T09:00:00Z). - The feed URL returns 404 after a CMS migration, and every subscriber silently loses you.
- The feed sits behind a bot-protection challenge, so readers receive an HTML page instead of XML.
How this blog does it
A SiteScan report shows whether a page declares a feed, in the "RSS / Atom feed" row. It is optional and shown as a fact, not a penalty: plenty of sites have no reason to publish one. This blog now does — an Atom feed per language at /blog/feed.xml, /ru/blog/feed.xml, /pl/blog/feed.xml and /de/blog/feed.xml, each declared in the head of the pages in that language.
Check-list
- Pick RSS 2.0 or Atom 1.0 and validate the output.
- Declare it with
<link rel="alternate">on every page. - Serve it with the correct Content-Type and no challenge in front.
- Use absolute URLs and ids that never change.
- Use the date format your feed format requires.
- Keep the latest 20–50 entries, one feed per language.
- After any migration, fetch the old feed URL and make sure it still answers 200 or redirects.
Read next
Check how much of this is on your own site
A free scan surfaces broken links, JS errors and performance problems in about a minute.