What the validator checks
Paste a feed address and the validator fetches it the way a feed reader does, then checks it against the rules of RSS, Atom and JSON Feed. It's free and needs no account. Every problem comes with the line it's on and a short note on how to fix it.
- The connection: the HTTP status, redirects, and whether the server answers within 10 seconds.
- The file: the Content-Type header, the declared and the actual encoding, and whether the XML is well-formed.
- The format: RSS 2.0, RSS 1.0, Atom 1.0 or JSON Feed, and the elements each one requires, like a title, link and description for RSS.
- Every item: a title or description, a link, a unique guid and a date in the right format. Podcast enclosures need a url, a type and a length.
- The extras: the size of the feed, caching headers that save bandwidth, and a WebSub hub for instant updates.
Errors break the rules of RSS or XML. Some readers can't read a feed with errors at all, and others have to guess, so posts can come out wrong. Warnings don't make a feed invalid. The feed works, but some readers could stumble on these details.
Below the checklist, What Feeder sees shows the feed the way Feeder's own crawler reads it, with every item, date and link.
Common feed errors and how to fix them
Not well-formed (invalid token)
The usual cause is a bare & or < in a title or description, like Tom & Jerry. Write & as & and < as <, or wrap HTML in a CDATA section: <![CDATA[ ... ]]>.
Undefined entity
HTML entities such as don't exist in XML, which only knows five. Use the number instead, like   for a non-breaking space, or put the HTML inside CDATA.
Dates in the wrong format
RSS dates look like Sat, 26 Sep 2026 09:00:00 GMT. Most languages can write them for you: date(DATE_RSS) in PHP, email.utils.format_datetime(dt) in Python and new Date().toUTCString() in JavaScript. Atom and JSON Feed use 2026-09-26T09:00:00Z instead.
Served as text/html
Your server labels the feed as a web page, so some readers may not see a feed there. Serve RSS as application/rss+xml and Atom as application/atom+xml. application/xml works too.
Missing or duplicate guids
Without a unique ID, readers have to guess which posts are new, so an edited post can show up again. Give each item a <guid> that is unique and never changes, like the post's permanent address.
Odd symbols instead of accented letters
The file's characters don't match the encoding it declares, often because Windows-1252 text is labeled UTF-8. Save and serve the feed as UTF-8, and make your server send charset=utf-8.
Something before the XML declaration
A blank line or a space before <?xml breaks the whole feed. On WordPress, a theme's functions.php or a plugin is the usual cause.
For more fixes, see Validate my RSS file. If the feed belongs to someone else, The feed is not valid explains what you can do.
How to add a feed to Feeder
A valid feed can still look wrong in a reader, so test it the way your subscribers will:
- In Feeder, click Add feed and paste the feed's address.
- Feeder shows the feed with a preview of its newest posts. Check the titles, dates and links.
- Follow it, publish a new post and check that it shows up once, as a new post.
Feeder is an RSS reader for the web, your browser, iOS and Android, and you can start for free.
Frequently asked questions
Why does my feed work in one reader but not another?
Readers differ in how strict they are. Many, Feeder included, read feeds with small errors and make a good guess at the rest. Stricter apps, like some podcast apps, give up on the same feed. A feed with no errors works everywhere, so fix them even when your own reader looks fine.
Does a feed have to be valid to work?
Not always. Many readers read feeds with small errors, but stricter apps may reject them, so a valid feed is the safe choice.
Why do old posts show up as new?
Readers track posts by their guid, or by title and date when there is none. New guids, a move to a new domain or a changed server time zone can make every post look new to them.
Can I validate a feed that isn't online yet?
This validator checks feeds by their address, and only on the public internet. For a file that isn't online, paste the XML into the W3C Feed Validation Service under Validate by Direct Input.