
Updated: 2026-09-27
Short answer: open the feed URL directly in a browser, check that it is served as XML, then run it through a validator such as the W3C Feed Validation Service, and finally inspect one full item — a stable <guid>, a correctly formatted <pubDate> and properly escaped HTML. Malformed feeds rarely fail loudly; they quietly drop items or mangle titles. The fix always belongs at the source, because no auto-posting tool can repair a broken feed for you.
Before connecting any feed to an automation tool, it’s worth confirming the feed itself is actually valid. A malformed RSS feed doesn’t always fail loudly — sometimes it just silently drops items, misreads dates, or shows garbled titles in whatever tool is reading it, and the feed’s own publisher may never notice because they’re not the one consuming it.
RSS 2.0 is a formal XML specification, which means a feed can be checked against a defined set of rules the same way any XML document can be validated against a schema. Validity issues range from small (a missing required element, an improperly escaped character) to serious (broken XML structure that stops a feed reader from parsing the file at all). Most modern CMS platforms generate valid feeds by default, but custom feed generators, older plugins, or manually edited feed templates are where problems tend to creep in.
pubDate in the wrong format can cause automation tools to sort items incorrectly, or in some cases skip them.title or link at the channel level; their absence can cause stricter parsers to reject the feed outright.Knowing which tools exist is one thing; having a routine you actually run before connecting a feed to automation is another. This is the sequence we use, and it takes about five minutes on a feed you have never seen before.
Before any validator, just load the URL. This single step catches the most common problems immediately: a 404, a login wall, a redirect to an HTML page, or a server returning an error page with a 200 status code. If what comes back is not XML, no validator will help — the problem is the URL, not the feed.
A feed should be served as application/rss+xml, application/atom+xml or at minimum text/xml. Some servers send text/html, which makes stricter parsers reject a feed that is otherwise perfectly valid. A quick header check settles it:
curl -sSI https://example.com/feed/ | grep -i content-typePaste the URL into the W3C Feed Validation Service or the RSS Board Validator described above. Read the result as two separate lists: errors, which will break parsing, and warnings, which usually will not. Do not stop at the first error — validators often report several and the later ones are frequently the real cause.
Look at how many items the feed actually contains and how recent the newest one is. A feed with three items will give automation very little to work with, and a newest item from eight months ago means the feed is stale regardless of whether it validates. Both are invisible to a validator and both matter enormously for automation.
Open a single <item> block and confirm it contains what you will need downstream: a title, a working link, a description or content block, a properly formatted pubDate, and an image if your posting depends on one. A feed can validate perfectly and still be missing the field your automation needs.
Take two or three item links and load them. Feeds sometimes carry relative URLs, tracking redirects that expire, or links to a staging domain. Every one of those produces posts that look fine and go nowhere.
The only way to know a feed updates correctly is to look at it again once new content should have appeared. A feed that validates today and never changes is the failure mode nobody tests for.
Most feed problems fall into a small number of categories, and each has a standard fix. This table is the one to keep next to you while working through a validator’s output.
| Error | Usual cause | Fix |
|---|---|---|
| Undefined entity / illegal character | A raw &, < or > in a title or description | Escape them as &, <, >, or wrap the field in CDATA |
| Invalid date format in pubDate | A date written in ISO or local format instead of RFC-822 | Output dates in RFC-822 with a timezone, or switch the feed to Atom, which uses ISO dates by design |
| Content is not allowed in prolog | Whitespace, a BOM or stray output before the XML declaration | Remove anything before <?xml — usually a plugin echoing output or a blank line in a PHP file |
| Missing required element | An item without a title, link or description | Populate the field at the source; most CMS feeds allow a fallback value |
| Feed served as text/html | Server or CDN content-type misconfiguration | Set the correct MIME type on the server, or on the CDN rule that overrides it |
| Self-reference does not match | The atom:link rel="self" URL differs from the real feed URL | Correct it, usually after a domain move or an HTTP-to-HTTPS migration |
| Duplicate GUIDs | Every item sharing the same identifier | Give each item a stable unique GUID — this one silently breaks deduplication in automation |
| GUID changes on every fetch | A GUID built from a timestamp or session value | Base it on something permanent, such as the post ID or permalink, or automation will re-post old items |
| Images missing from items | No enclosure or media:content element | Enable the feed’s media settings, or accept text-only posts downstream |
Two of these deserve particular attention because they do not break the feed and still ruin automation. Duplicate GUIDs make it impossible for a tool to tell items apart, so some are skipped. Unstable GUIDs do the opposite — every fetch looks like new content, and the same articles get posted repeatedly. Both pass validation cleanly. If a feed behaves strangely once connected and the validator says it is fine, check the GUIDs first.
A human skimming a feed reader might not notice a slightly malformed date or an oddly encoded character — the reader software often quietly works around minor issues. Automation tools that trigger real actions (like posting to social media) are less forgiving: a parsing hiccup can mean a post silently never happens, happens with garbled text, or in rare cases gets flagged as a duplicate when it isn’t. If your automated posts are behaving unpredictably and you’ve ruled out the more common causes (like an excerpt-only feed or a caching delay), running your feed through a validator is a fast way to rule out or confirm a structural problem.
Validators typically separate findings into errors (specification violations that can break parsing) and warnings (deviations from best practice that most parsers will still handle gracefully). A feed with only warnings is usually safe to use; a feed with errors is worth fixing at the source, since different automation tools and feed readers handle the same error differently — what one tool tolerates, another might reject.
If you’re automating a feed you don’t control (a partner site, a client’s separate CMS) and it has validation errors, a feed-proxy or feed-repair service can sometimes clean up common issues before the feed reaches your automation tool, though this adds a dependency and a potential point of failure of its own. For feeds you do control, fixing the actual generation source (CMS settings, a plugin, or custom feed template code) is the more durable solution.
PostRSS, like most modern feed-reading tools, is generally tolerant of minor validation warnings and can successfully read feeds with small deviations from the spec — but feeds with serious structural errors (broken XML, missing required elements) can cause items to be missed or misread regardless of which tool is reading them.
Once your feed is confirmed valid and your CMS/plugin setup hasn’t changed, ongoing re-validation usually isn’t necessary — it’s most useful to check after a CMS update, plugin change, or theme switch, any of which can alter how your feed is generated.
Yes — validity only confirms the XML structure is well-formed and spec-compliant, not that the content inside is what you want automated. A perfectly valid feed can still lack a proper featured image or have a title that’s awkward when posted verbatim, which validation tools don’t check for.
Feed validation is a five-minute check that rules out an entire category of automation problems before they happen. Running a new or unfamiliar feed through the W3C Feed Validation Service or RSS Board Validator before connecting it to any automation tool, PostRSS included, is a cheap insurance policy against silent, hard-to-diagnose posting failures down the line.
What changed in the networks, what broke, and how to fix it before it costs you reach.
Built by Internet Solutions, the team behind PostRSS. Each product saves you time in its own way.