The Sitemap Tester takes any sitemap URL — sitemap.xml, sitemap index, or gzipped variant — and gives you a complete diagnostic in seconds. It parses the XML, validates it against the sitemaps.org 0.9 schema, counts URLs, checks Google's per-file limits (50,000 URLs, 50 MB uncompressed), and samples a subset of URLs with real HEAD requests to catch broken destinations, redirect chains, and mixed protocols. It reports metadata coverage (lastmod, priority, changefreq) because Google specifically uses lastmod to prioritize what to recrawl. Every issue is classified error / warning / info, so you know what breaks indexing (invalid XML, oversized files, 4xx destinations) versus what merely wastes crawl budget (redirects in sitemap, missing lastmod, http:// entries on an https site). Ships with recommendations you can hand to a developer verbatim.
What a sitemap is actually for (and what it isn't)
An XML sitemap is a directory of the URLs on your site that you want search engines to know about — along with signals about when they last changed. It's a discovery aid: Google finds URLs through internal links, external links, and the sitemap. On a small site every URL is already reachable through internal links, so the sitemap mostly helps Google prioritize recrawling. On a large site (10k+ pages), the sitemap is essential — it's the fastest way for Google to discover newly-added URLs and the primary signal for which pages have changed and need re-indexing. What a sitemap doesn't do: it doesn't force Google to index a URL, it doesn't affect ranking, and it doesn't override robots.txt or noindex. If a URL is in the sitemap but blocked by robots, Google won't crawl it. If it's noindex, it stays out of the index. Sitemap inclusion is a suggestion, not a guarantee.
Google's hard limits every sitemap must respect
Google publishes three hard limits that our tester checks: 50,000 URLs per file, 50 MB uncompressed size, and a 500-sitemap limit inside a sitemap index. Exceed any of these and Google stops processing the file — no warning, no partial indexation. Sites with more than 50k URLs must split into multiple sitemaps and use a sitemap index. Most CMSes handle this automatically, but audits regularly turn up sitemaps that ballooned past the limit after a mass import or programmatic-page rollout. The 50 MB uncompressed limit typically bites when you have huge <lastmod> and <image:image> blocks. Serving the sitemap gzipped doesn't help — Google uncompresses it and re-checks the size against 50 MB. When our tester flags size_exceeded or url_count_exceeded, it's not a warning; the sitemap is functionally invalid.
Why lastmod is the most important field you're probably ignoring
Google confirmed in 2023 that it uses <lastmod> as a strong signal to schedule recrawls, and that missing or inaccurate lastmod values reduce the sitemap's usefulness. If lastmod is present and accurate, Google prioritizes recrawling URLs where lastmod moved recently. If lastmod is missing, Google falls back to its own change-detection heuristics — slower and less accurate. If lastmod is present but always identical (e.g. today's date on every URL, generated at request time), Google treats the whole file as untrustworthy and downweights the signal. Set lastmod to the actual last content change (or last significant one), format as ISO 8601 (2026-08-05T14:22:33+00:00), and only update it when a URL's content genuinely changed. Our tester reports coverage — the percentage of URLs with lastmod — and flags sitemaps where 0% have it (still surprisingly common).
Sitemap index vs urlset — pick the right root element
Two root elements exist. <urlset> lists actual URLs, one <url> block per page, each with a <loc> and optionally <lastmod>, <changefreq>, and <priority>. <sitemapindex> lists other sitemaps, each with a <loc> pointing to a <urlset> file and an optional <lastmod>. Use urlset when you have fewer than 50k URLs and a single file makes sense. Use sitemapindex when you have more URLs or you want to organize by section (sitemap-blog.xml, sitemap-products.xml, etc.), so partial recrawls don't reprocess the whole site. Our tester detects which root you have and validates accordingly. If a file has <urlset> but every <loc> points at another sitemap, that's an error we catch — you meant sitemapindex.
How to fix the top four sitemap mistakes we find
1. Redirected URLs. If a sitemap URL 301s, Google follows it but complains — every hop wastes crawl budget and dilutes signals. Fix: put the final URL directly in the sitemap. 2. Broken URLs (4xx/5xx). Ship a broken URL in the sitemap and Google downgrades trust in the whole file. Fix: run a link check quarterly and prune dead URLs. 3. http:// URLs on an https:// site. Google indexes each protocol as a separate URL, so an http entry can steal ranking from the https version. Fix: normalize every URL to https. 4. URLs blocked by robots.txt. Contradictory signal — sitemap says "index me," robots says "don't crawl me." Fix: pick one. Either allow crawling or remove from sitemap. Our tester samples up to 100 URLs and flags each of these. Rerun after fixes to confirm.