XML Sitemap Generator and Validator

Build a sitemap from a list of URLs, or check the one you already have. Nothing you paste leaves your browser.

Open your sitemap in a browser, select all, paste it here. Works for a sitemap index too.

Built and maintained by Faaiz Mahmood · Updated 21 September 2026

Checking beats building

Most people looking for a sitemap generator already have a sitemap. Their CMS or SEO plugin made one, and the real question is whether it is any good. That is why the Check tab is first.

Paste a sitemap in and it reports the faults that actually break things:

It also points out <changefreq> and <priority> if they are present. Neither is read by Google, and has not been for years.

What the checker cannot tell you

It reads the file. It cannot fetch the URLs inside it, because that would mean sending them to a server.

So it cannot tell you the one thing that matters most: whether those URLs are the right URLs. That check is manual, and worth doing on five of them at random. Each should return 200, carry a canonical tag pointing at itself, and have no noindex. Any URL that redirects, 404s, or canonicalises elsewhere does not belong in a sitemap.

Every one of those is a contradiction: you are telling Google a page matters enough to list, while the page itself says otherwise. Google resolves it by trusting the page, and your sitemap loses a little credibility each time.

On the builder, and its honest limits

The Build tab takes a list of URLs you supply and produces valid XML. What it does not do — and what most people mean when they search for a sitemap generator — is crawl your site to discover those URLs. A browser cannot do that.

That is a real limitation and I would rather state it than bury it. If you need a crawl, use a desktop crawler and export the list of 200-status HTML pages, then paste it here. If you only want to check what you already have, the other tab needs nothing.

What the builder does get right is the escaping. A URL like /search?a=1&b=2 must have its ampersand written as &amp; inside the XML. Plenty of generators emit the raw character and produce a file that will not parse. This one escapes properly.

lastmod, and why honesty matters

<lastmod> is the one optional tag worth filling in, because Google does use it as a hint about what to recrawl. The catch is that the hint has to be trustworthy.

If your system stamps today's date on every URL every night, Google works out within a few weeks that your lastmod carries no information, and stops paying attention to it. You have then spent the one signal you had. Only update the date when the content genuinely changed, and a corrected typo does not count.

If you cannot produce honest dates, leaving the tag out entirely is better than filling it with noise. That is why Leave it out is the default here.

After you upload it

Put the file at your site root so it loads at yourdomain.com/sitemap.xml. Add a line to robots.txt, which every major crawler reads:

Sitemap: https://example.com/sitemap.xml

That line stands on its own and is not affected by any User-agent block. The robots.txt generator adds it for you.

Then submit it in Search Console, which is the only way to get the report back telling you how many URLs were discovered and how many made it into the index. Come back a day later: you want status Success and a discovered count in the same ballpark as your real page count. Wildly off in either direction means something is wrong. The sitemap guide covers reading that report.

Frequently asked questions

Why does it not crawl my site to find the URLs?

Because a browser cannot. Crawling your site would need a server to fetch every page, which means sending your domain and your URLs somewhere. Everything here runs on your own machine, so the builder works from a list you supply. The Check tab is the half that needs no crawling at all, and is usually the more useful one.

Where do I get a list of my URLs?

Export from your CMS, or run a crawler such as Screaming Frog, which is free up to 500 URLs, and export the list of 200-status HTML pages. If you already have a sitemap and only want to verify it, use the Check tab instead.

Should I set changefreq and priority?

No. Google ignores both and has said so for years, because too many sites set every page to priority 1.0 and changefreq daily. This tool does not emit them at all. If your current sitemap has them, they are harmless, just pointless.

What counts as a valid lastmod?

A W3C datetime: 2026-09-21, or a full timestamp with a timezone. The more important rule is honesty. If your CMS stamps today on every URL every night, Google learns within weeks that your lastmod means nothing and stops using it as a recrawl hint.

My sitemap is valid but pages still are not indexed. Why?

A sitemap is a suggestion about what to crawl, not an instruction to index. Google decides what to index on the merits of the page. If Search Console reports "Crawled - currently not indexed", the file is doing its job and the page is the problem.

Who writes this

Faaiz Mahmood is a software engineer with a bachelor's degree in computer science. He works on full-stack projects and as an AWS cloud engineer, and builds and maintains everything on crawlkit.online.

That is the relevant qualification here rather than an SEO one. The rules these tools apply are written down in public specifications: RFC 9309 for robots.txt, the sitemaps protocol, Google's own published documentation. Plenty of free tools built on them implement the details incorrectly. These are written against the specification, and each page sets out the rules it follows so you can check the reasoning instead of trusting the output.

Found something wrong? Tell me and I will fix it.