What this tool checks
The checker requests /sitemap.xml from the site's origin. If it finds a <sitemapindex>, it follows one level down and inspects up to three child sitemaps; otherwise it reads the URL set directly. It counts every <url> entry, then does the part most validators skip: it fetches a spread-out sample of up to ten listed URLs and reports the live HTTP status of each. A sitemap that parses beautifully but lists dead pages passes XML validation and still hurts you — this catches that.
Why sitemap hygiene matters
Search engines treat your sitemap as a statement of intent: these are the canonical URLs you want indexed. When the file is accurate, crawlers spend their budget on pages that matter and pick up new content fast. When it rots — deleted products still listed, URLs that 301 to their replacements, staging links that leaked in — three things happen. Crawl budget gets burned on dead ends, which slows discovery of your real pages. Search Console fills with "Submitted URL not found" errors that bury genuine problems. And Google quietly learns to trust the file less, blunting the one channel where you get to speak to the crawler directly. On large sites, sitemap freshness is one of the strongest levers you have over what gets crawled at all.
How to fix what the checker finds
No sitemap at /sitemap.xml: check robots.txt for a Sitemap: line pointing elsewhere; if there is truly none, enable your CMS's sitemap feature (built into WordPress since 5.5, one config line in Next.js, automatic in Shopify). Sampled URLs return 404: the generator is including deleted content — exclude unpublished and trashed items, then resubmit in Search Console. Sampled URLs redirect (301/302): the sitemap lists old URLs; regenerate it from current canonical URLs so every entry returns 200 directly. Child sitemap unreachable: an index pointing at missing files usually means a partial deploy or a renamed section — regenerate the index and children together. Zero URLs listed:some plugins emit an empty shell when misconfigured; check the plugin's post-type inclusion settings.