0

Sitemap.xml Validator — Real Protocol Compliance Checker

Paste or upload a sitemap.xml (or sitemap index) and validate it against the real sitemaps.org protocol: root element and namespace, absolute <loc> URLs, the documented 50,000-URL / 50MB limits, <lastmod>, <priority>, <changefreq> — plus a freshness histogram and duplicate-URL detection.

🗺️

Drag & drop any file here or click to select

or click to browse — a single .xml file

Buy Me a Coffee at ko-fi.com
Processing... 0%
Parsing XML
Checking sitemap protocol rules
Analyzing URLs
Done

Result

A sitemap.xml file can be perfectly well-formed XML and still be a broken sitemap: a missing xmlns namespace, a relative <loc> URL, a <priority> of "1.5", or a <changefreq> of "Daily" instead of "daily" will all pass a generic XML validator while quietly failing the actual sitemap protocol that Google, Bing and every other consumer of the file expects. This tool parses your pasted or uploaded sitemap with the browser's native DOMParser and checks it against the real rules published at sitemaps.org: the root element must be <urlset> for a regular sitemap or <sitemapindex> for a sitemap index (auto-detected), ideally declared with the exact namespace http://www.sitemaps.org/schemas/sitemap/0.9, and every <url> (or <sitemap>, in an index file) must contain a <loc> that resolves to a genuine absolute http/https URL.

Beyond structure, the protocol also documents hard limits and precise field formats that this tool checks field by field. A single sitemap file must not list more than 50,000 URLs and must not exceed 50MB uncompressed — limits that apply to sitemap index files too, counting <sitemap> entries instead of <url> entries — and this tool measures your actual pasted/uploaded content against both. Each <lastmod>, if present, is checked against the real W3C-datetime formats the spec accepts: a bare date (YYYY-MM-DD) or a full timestamp with hours, minutes, optional seconds and a mandatory timezone designator. Each <priority>, if present, must be a decimal between 0.0 and 1.0, and each <changefreq> must be exactly one of the seven values the spec defines — always, hourly, daily, weekly, monthly, yearly, never — not a plausible-looking synonym. Every violation names the specific entry number and its actual value, capped at 50 shown offenders per rule with a "+N more" note so the report stays readable even on a sitemap near the URL limit.

Two checks go beyond what the written protocol requires but catch real, common problems: a <lastmod> freshness histogram groups every valid last-modified date by month so you can see at a glance whether a site's content is actually being kept current or whether most URLs carry a stale timestamp from years ago, and a duplicate-<loc> detector flags any URL listed more than once in the same file — a frequent side effect of sitemap generators that merge multiple sources without de-duplicating. Everything runs locally: parsing, rule-checking and the histogram are all computed in your browser from the text you pasted or the file you uploaded via the File API, nothing is fetched or uploaded to a server, and no individual URL in your sitemap is ever requested or crawled — this tool checks the sitemap document itself, not whether the pages it lists actually exist or return 200 OK.