Direct answer: Paste a sitemap XML (urlset or sitemapindex) and the tool checks six things locally: does it parse, what is the root element, does it exceed 50,000 URLs or 50MB, are loc values absolute and on the same host, are URLs duplicated, and do lastmod values look like dates. It does not crawl and does not judge indexing.
In the earlier scan, only 13 of 24 sites served a usable sitemap; two returned 200 without being a sitemap (empty body, HTML) and nine returned 404. That measured "is it there". This tool measures "is it right once it is there".
Parsing, count, host, duplicates, lastmod.
Passing is not crawled, and not indexed.
No network: it only reads the pasted XML.
The tool: paste → check
The list shows the first 20 problems; counts cover every entry.
The default sample reports three issues: /product and /product/ count as duplicates, one lastmod is written as 02/11/2026, and one loc points at another domain. Clear the site URL and the cross-host warning disappears — the host check depends on the base you provide.
Six checks
| Check | Level | Meaning |
|---|---|---|
| XML parses | Error | Closing tags, encoding, entities |
| Root element | Error | Must be urlset or sitemapindex |
| Entry limits | Error | 50,000 URLs, 50MB per file |
| Absolute loc | Error | Relative paths are invalid |
| Host consistency | Warning | Differs from the site URL provided |
| Duplicates / lastmod | Warning | Trailing-slash duplicates; non-W3C dates |
Five common problems
- HTML served as a sitemap. A soft-404 or front-end fallback page that returns 200 but fails XML parsing.
- Too many URLs in one file. Over 50,000 belongs in a sitemapindex with children, or the file may be ignored.
- Relative locs.
/productis not an absolute URL. - Duplicates. With and without a trailing slash, or with parameters, are treated as separate pages.
- Local date formats.
02/11/2026is ambiguous, so machines can only ignore it.
Boundaries
- No fetching: it reads pasted text and does not know the live status code.
- No indexing claim: correct structure is only a candidate condition.
- No index recursion: child sitemaps must be pasted and checked one by one.
- No lastmod truth check: format only, not freshness.
Tests and recalculation
The logic lives in js/sitemap-check.js (no dependencies, no network); scripts/test_sitemap_check.js covers 30 assertions: URL normalisation, host extraction, date formats, missing/relative locs, cross-host, duplicates, the 50,000 and 50MB limits, index and empty sets. Run:
node scripts/test_sitemap_check.js
Related: the 24-site sitemap scan (13 usable, 9 404, 2 fake), the robots.txt matcher and the 12 acceptance clauses.
Sources and definitions
- sitemaps.org protocol (50,000 URLs, 50MB, W3C Datetime for lastmod): sitemaps.org.
- W3C Datetime format: w3.org.