Free tool · No signup

Generate an XML sitemap

Crawls the site by following its internal links, then lists only canonical pages that return 200. Anything the site's own robots.txt disallows is left out.

xml sitemap generator Free

Crawls up to 100 pages, four clicks deep. Private and local network addresses are blocked.

  • Respects the site's robots.txt
  • Skips noindex and redirects
  • No signup

KEEPING IT CURRENT?

A generated file goes stale.

This produces a snapshot. The XML Sitemap Checker API validates a live sitemap and every URL in it on a schedule, which is what keeps the file honest after you publish.

See the API

WHAT THIS GENERATOR DOES DIFFERENTLY

Obeys your robots.txt

URLs your own robots.txt disallows are never crawled and never listed. A sitemap full of blocked URLs is an error Search Console reports back at you.

Lists canonical URLs only

Where a page names a canonical, that URL is listed instead of the duplicate, so one page appears once rather than three times.

Honest about coverage

Reports how many pages were found, how many were skipped and why. A crawl that stopped at the limit says so rather than looking complete.

XML SITEMAP GENERATOR GUIDE

A sitemap is a shortlist, not an inventory.

The point of a sitemap is to tell a search engine which URLs you want indexed. Filling it with redirects, blocked paths and duplicates makes it worse than having none. This guide covers what belongs in the file and what to do once you have it.

Where to put the sitemap file

Save the output as sitemap.xml in your web root so it resolves at https://example.com/sitemap.xml. On WordPress, upload it to public_html, though note that Yoast, Rank Math and WordPress core all generate one automatically, so check whether you already have /sitemap_index.xml before adding a second.

A sitemap can only contain URLs on the same host it is served from. A file at example.com cannot list URLs on docs.example.com; that subdomain needs its own.

What belongs in an XML sitemap

Canonical URLs that return HTTP 200 and that you want indexed. Nothing else.

Specifically, leave out:

  • Redirects. Listing a URL that redirects asks a crawler to take a pointless extra step. List the destination.
  • Blocked URLs. If robots.txt disallows it, listing it is a direct contradiction.
  • noindex pages. You are asking for indexing and refusing it in the same breath.
  • Duplicates. Where several URLs serve one page, list the canonical.
  • Pagination and faceted URLs, usually. They multiply fast and rarely deserve indexing.

This generator applies all of those rules while crawling, which is why the count it reports is often lower than the number of links on the site.

It also omits priority and changefreq. Google has said it ignores both, so they add bytes and no signal. Only loc and lastmod matter, and lastmod only while it stays truthful.

About the 100-page limit

Worth being direct about this, because "unlimited pages" is a common promise in this category. Crawling a site means making real requests against someone else's server, so the free tool stops at 100 pages and four clicks from the homepage.

If your site is larger, a generated one-off file is the wrong answer anyway. A sitemap has to stay current, and a static file you produced once goes stale the moment you publish. Every serious CMS and framework can generate one on every build or publish, and that is what you want:

  • WordPress: core generates /wp-sitemap.xml; Yoast and Rank Math replace it with their own.
  • Shopify, Wix, Squarespace: generated automatically, no action needed.
  • Next.js, Astro, Hugo, Jekyll: a sitemap integration or plugin regenerates the file on every build.

Use this tool to produce a sitemap for a small or static site, or to see what a crawler actually finds on yours.

Declaring and submitting the sitemap

Two steps, and people usually do only the second.

Declare it in robots.txt with a line reading Sitemap: https://example.com/sitemap.xml. Every crawler reads robots.txt, so this is how engines other than Google find it. The robots.txt Generator adds that line for you.

Submit it in Search Console under Sitemaps. This gives you a coverage report showing what Google read, what it indexed, and which URLs it refused, which is the actual value of submitting.

Resubmitting an unchanged sitemap does nothing. Google re-reads on its own schedule, and an accurate lastmod is the signal that prompts it.

Why some pages are missing

A crawler finds pages by following links, so anything with no internal link pointing at it cannot be discovered. That is not a limitation of this tool: Googlebot has the same problem, and an orphan page is a real SEO issue worth fixing rather than papering over.

Beyond that, pages are left out when they return a non-200 status, carry noindex, are disallowed in robots.txt, or sit deeper than four clicks from the homepage. The coverage panel reports each of those counts separately so you can tell which applies.

If a page you expected is missing, the fastest check is whether anything links to it. If nothing does, adding a link helps far more than adding the URL to a file by hand.

Sitemap questions

How many pages does this cover?

Up to 100 per run, four clicks deep. Larger sites should generate a sitemap from their CMS or build step so it stays current.

Where do I put the file?

At the web root, as sitemap.xml, then declare it in robots.txt and submit it in Search Console.

Does it respect robots.txt?

Yes. Disallowed URLs are neither crawled nor listed.

Why is a page missing?

It returned a non-200 status, carries noindex, is disallowed, or nothing links to it. The coverage panel says which.

Should I include priority and changefreq?

No. Google ignores both, so this file omits them.

Do small sites need a sitemap?

Not strictly, if internal linking is good. It still gives you a Search Console coverage report, which is useful on its own.

Generate it, declare it, check it

A sitemap is one of three files at your site root that decide how machines read your site. These free tools cover the other two.

Validate the result

Check every URL inside a sitemap with the XML Sitemap Checker.

Declare it properly

Add the Sitemap: line with the robots.txt Generator.

Fix a blocked page

If a page is disallowed, find the rule with the robots.txt Tester.