Autonomous Agentic AI Pipeline

Free tool, nothing leaves your browser

Sitemap validator that names the rule each problem breaks

Paste a sitemap and it is checked against the sitemaps.org 0.9 schema and the limits Google documents. Every problem it reports carries the rule behind it, separated into errors that break the file, warnings worth a look, and notes about effort Google ignores.

That last category is the one people are surprised by. Across 89 real sitemaps from major publishers, 1,031 changefreq values and 543 priority values were declared. Google supports neither and says so in its own documentation, so every one of those is work that changes nothing.

  • 27tests passing, run in the browser the validator ships to
  • 152,017real URL entries checked to build this page
  • 1,031changefreq values found, all of them ignored by Google
  • 88of 89 real sitemaps had no errors at all

01Validate a sitemap

Paste the XML. Adding the URL the sitemap is served from is optional and switches on two extra checks, whether any entry points at a different host and whether the file is where it claims to be. Nothing is uploaded and the page makes no network request while you use it.

Validation uses the browser's own XML parser, which is the same engine that decides whether the file is well formed in the first place. A sitemap that fails here fails for a reason the parser states, not for a reason this page invented.

02Two fields the spec allows and Google throws away

The sitemaps.org schema defines four child elements for a URL entry. Google reads two of them.

The four url child elements, and what Google does with each
ElementSpecGoogleDetail
locrequiredreadThe URL. Absolute, entity escaped, under 2,048 characters.
lastmodoptionalread when trustworthyW3C Datetime. Google uses it only if it is consistently accurate.
changefreqoptionalIGNOREDGoogle does not use it. Declaring it changes nothing.
priorityoptionalIGNOREDGoogle does not use it. Declaring it changes nothing.

Google's documentation is unambiguous about the other two. It states that it ignores changefreq and priority, and that lastmod is used only when it is consistently accurate. A sitemap that sets priority on every URL is telling Google nothing, and a lastmod that updates when nothing changed is worse than no lastmod at all, because it teaches the crawler to distrust the field.

The measurement is in the numbers above. 6 of 89 files set changefreq, 4 set priority, and between them that is 1,574 declarations doing nothing.

03The limits that actually break a sitemap

Four hard rules, and the validator checks all of them.

hard limitssitemaps.org 0.9 and Google

50,000     maximum URL entries in one file
50 MB      maximum uncompressed size of one file
2,048      practical ceiling on the length of one loc
UTF-8      the only encoding, and loc values must be entity escaped

over any of these, split the file and list the parts in a sitemap index

The lastmod format catches more people than the size limits do. It must be W3C Datetime, which means 2026-08-24 or 2026-08-24T12:00:00+00:00. A timestamp with no timezone is invalid, and so is anything written day first. The validator checks the format exactly rather than accepting whatever parses as a date.

A sitemap index has its own rule that is easy to miss. Its entries take only loc and lastmod. Putting a changefreq or a priority inside a sitemapindex entry is invalid rather than merely ignored, and the validator reports it as an error.

04What 89 real sitemaps look like

To test the validator on real input rather than invented cases, every sitemap declared in the robots.txt of a list of major hosts was fetched on 2026-08-24 and run through the same code that runs above.

Real sitemap practice, 89 files captured 2026-08-24
MeasureValue
Sitemap files analysed89
Hosts they came from11
URL entries seen in total152,017
Files with no errors88 of 89
Files that were malformed XML0
Sitemap index files vs urlset files55 index, 34 urlset
changefreq values declared1,031 across 6 files, all ignored by Google
priority values declared543 across 4 files, all ignored by Google
Duplicate URL entries36 across 6 files
Entries pointing at another host2
Files with the wrong xmlns1

The headline is that large publishers get the mechanics right. 88 of 89 files produced no errors, and not one of them was malformed XML. What they do spend effort on is the two fields that do nothing, and a small number of duplicate entries.

One correction worth stating plainly. An earlier pass of this census reported 17 files as invalid XML. They were not. The collector stopped reading at 6 MB and cut those files off mid element, which is a fault in the measurement and not in the sitemaps. Those 17 are excluded from every figure on this page rather than counted as broken.

05The tests this validator passes

All 27 run against the code on this page, inside a real browser, because the validator depends on the browser's XML parser and testing it anywhere else would be testing something different.

Validator test suite, all 27 cases passing
CaseResult
valid sitemap passespass
counts urlspass
kind urlsetpass
lastmod date okpass
lastmod year okpass
lastmod full tz okpass
lastmod Z okpass
lastmod no tz rejectedpass
lastmod slashes rejectedpass
lastmod junk rejectedpass
bad lastmod is an errorpass
missing loc errorspass
relative loc errorspass
wrong namespace errorspass
wrong root errorspass
malformed xml errorspass
empty input errorspass
valid changefreq+priority still okpass
changefreq+priority raise notespass
invalid changefreq errorspass
priority out of range errorspass
cross host warnspass
duplicate url warnspass
index recognisedpass
valid index passespass
index rejects prioritypass
empty urlset errorspass

Read before acting on any verdict above

06What this validator cannot tell you

  • LIMITA valid sitemap is not an indexed sitemap. Google describes a sitemap as a hint about which URLs exist, not an instruction to crawl or index any of them.
  • LIMITIt checks the XML you paste. It does not fetch your URLs, so it cannot tell you whether any of them returns 200, redirects, is blocked by robots.txt or carries a noindex tag.
  • LIMITThe detailed per entry checks cover the first 500 entries. The file level limits still apply to the whole file, and the entry count is read from the whole file.
  • LIMITCross host entries are reported as a warning, not an error, because cross submission is legal once the other host is verified and this page cannot know whether it is.
  • LIMITThis validates against sitemaps.org 0.9 and Google's stated behaviour. Bing and other engines differ, and some honour fields Google discards.
  • LIMITThis is a fixed list of large, well resourced sites, not a random sample of the web. It describes how big publishers write sitemaps and says nothing about the average site.
  • LIMIT17 files were truncated by the collector at 6 MB and are excluded. They are not broken, we simply did not read all of them. Any figure that counted them as invalid would be wrong.
  • LIMITGzipped sitemaps are excluded because the collector did not decompress them, so the sample tilts slightly away from very large sites that compress.
  • LIMITValidation checks the first 500 entries per file in detail. File level limits, the 50,000 URL cap and the 50 MB cap, still apply to the whole file.
  • LIMITNo ranking, indexation, traffic, or revenue outcome is promised by this site or by the product it sells.
  • LIMITNo end to end run from intake through indexation has been completed by anyone, including the seller, and there are currently no customers, so there are no reviews and no case studies.
  • LIMITThe sixty day refund covers whether the software is what this site describes and whether it runs, and never whether a search engine chose to index or rank anything built with it.

07Where these rules come from

Sitemaps and robots.txt fail together more often than either fails alone, because a sitemap that lists a path your robots.txt disallows is a contradiction Google resolves by not crawling it. The robots txt checker on this site will tell you which rule wins for any path you paste.

This page was built by the pipeline it sells

The validator and the census on this page are what the pipeline produces. It refuses a keyword already saturated by an AI Overview, it will not let a page state a number that code did not compute, and it made this page withdraw a finding when the measurement turned out to be at fault. It runs on your machine, there is no hosted service and no account, and you pay once.

Sixty day refund. Nothing about traffic, rankings or indexation is promised here or anywhere else on this site.