Sitemap checker: validate and find your XML sitemap

Type a domain and this checker looks where a crawler looks: the Sitemap lines of robots.txt, then /sitemap.xml, then /sitemap_index.xml. It reads the tree under whatever answers. The report counts the URLs, reads the lastmod dates and names what to fix.

Run it from your agent

The check on this page is also a JSON endpoint and a tool on a public MCP server. Neither needs an account or a key.

JSON endpoint

curl -X POST https://seodraft.app/api/tools/sitemap-checker \
  -H 'content-type: application/json' \
  -d '{"url":"https://seodraft.app"}'

Free MCP server

Add this URL to Claude, ChatGPT, Cursor or any MCP client. It exposes every free tool, with no sign-in.

https://seodraft.app/tools/mcp  ·  check_sitemap

This page for agents

The same guide and the API contract, as Markdown. /tools/sitemap-checker.md

What a good XML sitemap does

A sitemap is the site's own list of its URLs: one <loc> per page, with an optional <lastmod> saying when that page last changed. A crawler reads it as a claim about what exists on the site.

Four properties make that claim usable. The file answers at a URL robots.txt names, it parses as XML, every URL sits on the same domain as the file, and every lastmod is a real date in the past.

The sitemaps.org protocol caps one file at 50,000 URLs and 50 MB uncompressed. A bigger site splits the list and publishes a sitemap index, which is a sitemap of sitemaps, and gzip is allowed for both.

How this sitemap finder works

It follows the order a crawler follows. robots.txt comes first and every Sitemap line in it is tried in file order. Then /sitemap.xml, then /sitemap_index.xml.

Paste a sitemap URL and the check starts there. A path ending in .xml or .xml.gz, or a last segment containing the word sitemap, is read as the file itself and the rest of the URL as the site.

Whatever answers gets parsed. When it is an index, the files under it are opened too. Everything stays on the host you typed, so a URL pointing at another domain is counted and left unread.

What each finding means

Findings arrive critical first, then warnings, then information, and each one carries the count it is about.

no-sitemap says nothing answered at robots.txt, /sitemap.xml or /sitemap_index.xml. not-in-robots says the file exists while robots.txt stays silent about it, which leaves a crawler guessing the path. no-urls says the file parsed and lists nothing.

off-host-urls counts URLs on a domain other than the one serving the file. lastmod-invalid counts values that fail to parse as a date. lastmod-future counts dates after today, which come from a build stamp. lastmod-missing counts URLs with no date at all.

sitemap-errors counts files inside an index that answered with something other than readable XML. partial-read says the crawl stopped at a limit, so read the counts as a floor.

Common sitemap errors and how to fix them

no-sitemap: publish a sitemap at /sitemap.xml, or at the path your CMS or framework generates, and add a line like Sitemap: https://example.com/sitemap.xml to robots.txt.

not-in-robots: add that same Sitemap line to robots.txt with the full URL. It costs one line and tells every crawler where the file is, including the ones that never see Search Console.

no-urls: the generator ran and found nothing to list. Check that published pages are not filtered out as drafts or noindex, then rebuild.

off-host-urls: list only URLs on the host that serves the file. A common cause is a sitemap built with a staging or www domain while the site answers on another one. Set the canonical domain in the generator.

lastmod-invalid: write dates in W3C format, such as 2026-10-12 or 2026-10-12T09:00:00+00:00. lastmod-future: drop the build timestamp and use the date the content changed. lastmod-missing: add lastmod where you know the real date, and leave it out where you do not.

sitemap-errors: open each failing child URL from the index in a browser. A 404, an HTML error page or a redirect to a login are the usual causes. partial-read: the site is larger than one call reads, so split the check by child sitemap URL.

Where this check stops

It reads sitemap files and stops there. No page is downloaded, so the report stays quiet about status codes, canonicals and indexing.

One call reads at most 10 sitemap files, 5,000 URLs and 15 seconds of wall time, and it samples 20 URLs back. A bigger site gets the partial-read finding and counts that cover the part it read.

Whether a URL in the sitemap made it into the index is a question for Search Console's page indexing report.

Questions

How do I find my sitemap URL?
Type your domain in the box above and the check goes looking for it. It reads robots.txt for a Sitemap line, then tries /sitemap.xml and /sitemap_index.xml. WordPress publishes its own at /wp-sitemap.xml and plugins move it elsewhere, which is what the robots.txt line is for.
Does a sitemap get my pages indexed?
A sitemap tells a search engine which URLs exist and when they changed. Indexing is decided per URL after a crawl, and Search Console's page indexing report is where the outcome shows up.
What should lastmod say?
The date the content of that page changed. Google's documentation says it uses lastmod when the value is consistently accurate, so a date restamped on every URL at every deploy teaches a crawler to ignore the field.
Can I check a sitemap index?
Yes, and the files listed inside it are opened too, up to 10 of them. Paste the index URL and the report covers the URLs across every file it read.
Why does the report say off-host-urls?
Your sitemap lists URLs on a domain other than the one serving the file. A sitemap covers the host it sits on, and URLs on another domain belong in that domain's own sitemap, declared in that domain's robots.txt.
Does it read a gzipped sitemap?
Yes, a .xml.gz file is decompressed and parsed like any other. That is how most large sitemap indexes are served.
Is this sitemap checker free?
Yes. There is no signup, and the only limit is a few checks per minute from one IP so the tool stays up for everyone.
How is this different from the Sitemaps report in Search Console?
Search Console shows the sitemaps you submitted and what Google read from them, and only for a property you verified. This checker works on any domain right away and shows what a crawler finds without a submission, including whether robots.txt declares the file.

The full process runs in seodraft

seodraft keeps the same crawl as a workspace inventory: import_sitemap stores the pages the site already published, and add_topics withholds a question one of them already answers, naming the URL it clashes with.

More free tools