Sitemap Generator

A free sitemap generator that crawls your site the way a search engine does, keeps only the pages that belong in search results, and tells you why it left every other URL out.

Crawls from our server, up to 5,000 pages a run · robots.txt and Googlebot obeyed · real lastmod dates or none · the file is built in your browser and nothing is stored

A domain works too: example.org starts at its homepage.

  • robots.txtRead first, obeyed
  • Your sitemapFound and compared
  • CrawledUp to 500 pages, 3 at a time
  • Decidednoindex, canonical, redirects
CrawlBreadth-first from the start page, like a search engine
Try

How to create a sitemap, step by step

Enter your home page above and select Generate sitemap. The sitemap crawler reads robots.txt, follows your links the way a search engine does, keeps only the pages that belong, and hands you a sitemap.xml to upload to your site's root.

A page belongs when it answers 200, is HTML, is not noindex, names itself as canonical and is not blocked by robots.txt. Every other URL lands in Left out with its reason, so you can tell a mistake from a choice.

Upload the file to the root, https://www.example.org/sitemap.xml: a sitemap may only list URLs in its own folder and below, so the root covers the whole site (Google). Then add a Sitemap: line to robots.txt and submit it in Google Search Console and Bing Webmaster Tools.

Four steps, from your home page to a submitted sitemap
  1. 1Enter your home page

    example.org
    or paste a list of URLs
  2. 2We crawl and decide

    robots.txt 200499/500
    412 in the sitemap · 87 left out
  3. 3Download the file

    sitemap.xml93 KB
    XML, gzip, ZIP, TXT, HTML or CSV
  4. 4Upload and submit

    /sitemap.xml
    Sitemap: https://www.example.org/…
    the root · robots.txt · Search Console
Numbers from an example crawl of www.example.org, a made-up WordPress shop with a blog, a shop and a stale sitemap.
Sitemap generator result: 412 pages in the XML sitemap, 87 left out with a reason each, the notices and the site treeSitemap generator result: 412 pages in the XML sitemap, 87 left out with a reason each, the notices and the site treeThe verdictHow many pages go in, how many are left out and why, in one sentence. The big numbers repeat it.Downloadsitemap.xml, or a ZIP with every file and the index when it is split; also .xml.gz, TXT, an HTML sitemap and a CSV of every crawled page.NoticesYour current sitemap's stale entries, the pages it misses, and where each lastmod date came from.The site treeEvery section with its page count and the share left out. Select a branch to filter the pages; download it as SVG or PNG.
A crawl of a made-up WordPress shop: the verdict and the numbers, the file to download, what is wrong with its current sitemap, and the site tree. Select a number to see what each part shows.

What does an XML sitemap look like? A sitemap example

An XML sitemap is a UTF-8 file with one <url> entry per page. Only <urlset>, <url> and <loc> are required; everything else is optional. Here is a sitemap example, annotated line by line.

Each <loc> is a full, absolute URL that starts with the protocol and stays under 2,048 characters, with & written as &amp; (sitemaps.org). <lastmod> is the date the page last changed, in W3C format such as 2026-09-14; a time is optional but needs a time zone.

The namespace stays on http://, even on an https site: it is a name for parsers, not an address anyone fetches. <changefreq> and <priority> are allowed, but Google and Bing ignore them.

A sitemap example, line by line
sitemap.xmlUTF-8

						<?xml version="1.0" encoding="UTF-8"?>
						1
					
						<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
						2
					
						  <url>
						
					
						    <loc>https://www.example.org/</loc>
						6
					
						  </url>
						
					
						  <url>
						
					
						    <loc>https://www.example.org/shop/?size=m&amp;color=green</loc>
						3
					
						    <lastmod>2026-09-14</lastmod>
						4
					
						    <changefreq>weekly</changefreq>
						5
					
						    <priority>0.8</priority>
						
					
						  </url>
						
					
						</urlset>
						
					
  1. 1UTF-8, declared on the first line
  2. 2The namespace: http://, not https://
  3. 3An absolute URL, with & escaped as &amp;
  4. 4The real change date, or no lastmod at all
  5. 5Ignored by Google and Bing
  6. 6No lastmod: a home page only gathers other pages

Which pages belong in a sitemap, and why are some left out?

The canonical URLs you want in search results, one per page: final URLs that answer 200, are indexable and are not blocked by robots.txt. Everything else is left out, with the reason written next to it.

A redirect, a noindex page or a URL whose canonical points elsewhere sends search engines a mixed message: the sitemap says “index this” while the page says otherwise. Do not name one URL in the sitemap and another in rel=canonical (Google), and Search Console reports sitemaps that list URLs robots.txt blocks.

Every URL in a sitemap is only a suggestion; Google still decides which pages are duplicates. That is why this generator shows the reason for each page it leaves out: a noindex you meant is fine, a noindex on your best product is not.

How each crawled URL is decidedwww.example.org
A link we found499 URLs crawled
1robots.txt allows it?
no
Blocked by robots.txt2
yes
2Answers 200?
no
Redirect414xx75xx2
yes
3HTML, not a PDF or image?
no
Not HTML0
yes
4No noindex?
no
noindex23
yes
5Canonical is itself?
no
Canonical elsewhere12
yes
In your sitemap412
Numbers from an example crawl of www.example.org, a made-up WordPress shop with a blog, a shop and a stale sitemap.

lastmod, changefreq and priority: what do search engines read?

Google and Bing ignore changefreq and priority. Both use lastmod, but only when it is accurate: a date that changes on every crawl teaches them to stop trusting it.

Google uses lastmod “if it is consistently and verifiably accurate”, and it should mark the last significant change — the main content, the structured data or the links — not a new copyright year (Google). A lastmod that keeps claiming fresh changes on old pages stops being trusted. Bing schedules crawls with lastmod and may disregard dates that are always today. Yandex still reads all three tags.

So this generator never writes today's date. It takes lastmod from the page's own data, in the order below, and leaves it out when there is none: leaving it out is fine for a home page or a category page that only gathers others.

Which tags each search engine reads
TagGoogleBingYandex
lastmoduses it when accurateuses it when accuratereads it
changefreqignores itignores itreads it
priorityignores itignores itreads it
Where our lastmod comes from, in orderwww.example.org
1JSON-LD dateModified201
2article:modified_time, og:updated_time103
3your current sitemap, when its dates differ18
4Last-Modified header, when it is not just now499 × “now”0
–none: lastmod is left out90

What “today” for every page looks like

412 entries, one date: a generation date, not a change date.

Numbers from an example crawl of www.example.org, a made-up WordPress shop with a blog, a shop and a stale sitemap.

50,000 URLs, 50 MB and the sitemap index

One sitemap holds at most 50,000 URLs and 50 MB uncompressed. Past whichever limit you cross first, split the URLs into several files and list them in a sitemap index; then submit the index.

The limit counts the uncompressed file, even when you serve it as .xml.gz — gzip, not ZIP (sitemaps.org). An index may list up to 50,000 sitemaps, only files on its own site, in its own folder or deeper, and never another index. Naver Search Advisor refuses files over 10 MB, so choose the 10 MB limit in More options for a Korean site.

Language alternates (xhtml:link) do not count toward the 50,000. This generator splits automatically and, if you ask, by section: one file for the blog, one for the products.

182,340 URLs from a list, split into four files and an index
sitemap_index.xmllists 4 files
sitemap-1.xml50,000 URLs
4.4 MB
50,000 URLs per file
sitemap-2.xml50,000 URLs
4.6 MB
sitemap-3.xml50,000 URLs
4.5 MB
sitemap-4.xml32,340 URLs
2.9 MB
File size limit
50 MBGoogle, Bing, Yandex
10 MBNaver Search Advisor

Image and hreflang entries

A sitemap can also list each page's images and its versions in other languages, inside that page's own <url> entry.

Images use Google's image namespace, up to 1,000 per page; only <image:image> and <image:loc> still count, and caption, title, license and geo_location were retired in 2022.

For languages, each entry lists every version of the page, itself included, with xhtml:link and an hreflang code: an ISO 639-1 language with an optional ISO 3166-1 region, never a region alone. The links must go both ways or Google ignores them, so this generator writes a cluster only when every version links back, and shows the rest with the fault. x-default is optional, for visitors whose language you do not have.

One page in three languages: who links to whomdocs.example.net
<url>docs.example.net
<url>
  <loc>https://docs.example.net/de/guide/install/</loc>
  <image:image>
    <image:loc>https://docs.example.net/img/ui.png</image:loc>
  </image:image>
  <xhtml:link rel="alternate" hreflang="en"
    href="https://docs.example.net/en/guide/install/"/>
  <xhtml:link rel="alternate" hreflang="de"
    href="https://docs.example.net/de/guide/install/"/>
  <xhtml:link rel="alternate" hreflang="ja"
    href="https://docs.example.net/ja/guide/install/"/>
  <xhtml:link rel="alternate" hreflang="x-default"
    href="https://docs.example.net/en/guide/install/"/>
</url>
links backja links to de, de does not link back: the cluster is not written

image entry up to 1,000 per page

How do I submit a sitemap to Google and Bing?

Add a Sitemap: line to robots.txt, which every crawler reads, and submit the file in Google Search Console and Bing Webmaster Tools. For new and changed pages, IndexNow tells Bing, Yandex, Naver and others at once.

Only a site's verified owners can submit in Search Console; anyone's robots.txt line works. Search Console does not follow redirects for a submitted sitemap, so submit its final address. Bing reads a sitemap as soon as it finds it, and then about once a day.

The old anonymous pings are gone: Bing switched off bing.com/ping on 13 May 2022, and Google announced on 26 June 2023 that its ping would stop working; it now answers 404. A tool that still “pings Google” does nothing.

Four ways in, and two that no longer work
sitemap.xmlwww.example.org
robots.txt lineevery crawler, any number of lines
Google Search Consoleverified owners only
Bing Webmaster Toolsread at once, then about daily
IndexNowchanged pages; up to 10,000 URLs a request
not Google
google.com/ping?sitemap=announced 2023, now 404bing.com/ping?sitemap=switched off on 13 May 2022

XML vs HTML sitemaps (and visual sitemaps)

An XML sitemap is for crawlers, an HTML sitemap is a page of links for visitors, and a visual sitemap is a picture of the site's structure for planning. Only the XML one, or a TXT list, can be submitted to search engines.

An HTML sitemap still helps visitors and spreads links to deep pages, but it cannot stand in for the XML file. A plain-text sitemap is just URLs, one per line, in a file ending in .txt.

This generator makes all three from one crawl: sitemap.xml, an HTML sitemap to paste into a page, and the site tree. As a visual sitemap generator it costs nothing: the tree downloads as SVG or PNG, which visual sitemap services usually charge for.

One crawl, three sitemaps

XML sitemapfor search engines

<url>
  <loc>…/blog/</loc>
</url>
<url>
  <loc>…/product/</loc>
</url>

HTML sitemapfor visitors

Example Garden Co.

Garden journalRaised bed carePepper layoutShopDrip kit starterGrowing guides

Visual sitemapfor planning

Numbers from an example crawl of www.example.org, a made-up WordPress shop with a blog, a shop and a stale sitemap.

Do you need a sitemap at all?

A small site whose pages all link to each other may not need one: Google puts the figure at about 500 pages or fewer. Large sites, new sites with few links from elsewhere, and sites with many images or videos benefit most.

Google's own starter guide calls a sitemap optional, and submitting one is a hint, not an order. It costs little, though, and the crawl that builds it shows things worth knowing: pages no link reaches, redirects your menus still point to, and sections that are mostly noindex.

Who benefits most from a sitemapPages on the site
120≈5004995,000182,340

may not need one

about 500 pages or fewer, well linked

benefits most

  • large sites
  • new sites, few links from elsewhere
  • many images or videos
  • 5 pages only the sitemap reaches
Numbers from an example crawl of www.example.org, a made-up WordPress shop with a blog, a shop and a stale sitemap.

Sitemap errors in Search Console, and how to fix them

Most Search Console sitemap errors come down to a URL the sitemap may not list, a character that is not escaped, a date without a time zone, or a file over the limits. Each case below shows the line that causes it.

Six errors, the line behind each, and the fix

URL not allowed

sitemap: https://www.example.org/sitemap.xml
<loc>http://example.org/about/</loc>
List only URLs on the sitemap's own host and protocol, in its folder or below.

Parsing error

<loc>https://www.example.org/search?q=soil&page=2</loc>
Escape & as &amp; inside every URL.

Invalid date

<lastmod>2026-09-14T08:30:00</lastmod>
→ 2026-09-14T08:30:00+00:00
A time needs a time zone, or leave the time out.

Unsupported format

<urlset xmlns=“http://www.sitemaps.org/schemas/sitemap/.9”>
Use the exact namespace, with straight quotes.

Too many URLs

<url> × 50,001
At most 50,000 per file: split them into an index.

Sitemap contains urls which are blocked by robots.txt

robots.txt: Disallow: /search/
<loc>https://www.example.org/search/tomato/</loc>
Take the blocked URLs out, or unblock them.

Also: Couldn't fetch (blocked, 404, a server error, a manual action or low crawl demand), Compression error (re-gzip it) and Incomplete URL (each file in an index needs its full URL).

Can AI create a sitemap?

AI can sketch a site's structure for planning, but a sitemap is a list of facts about live URLs: which ones answer 200, which are noindex, which redirect. Only fetching each URL tells you that.

A model asked for the sitemap of an existing site guesses URLs from patterns. It cannot see that a product page now answers 404, that a tag archive is noindex or that an old post redirects, and every such URL in the file is one Search Console may report. Use AI for the plan, then crawl for the file.

Sources

The same five URLs: guessed, then crawled
URLGuessedCrawled
/blog/raised-care/includeIn sitemap200
/product/fern-varieties/include4xx404
/tag/native-bed/includenoindexmeta
/2019/07/raised-care/includeRedirect301 → /blog/raised-care/
/blog/pollinator-kit/amp/includeCanonical elsewhere→ /blog/pollinator-kit/
Numbers from an example crawl of www.example.org, a made-up WordPress shop with a blog, a shop and a stale sitemap.

Sitemap generator FAQ

Is this XML sitemap generator free?

Yes. This sitemap maker crawls up to 5,000 pages a run from our server, with no sign-up and no daily quota, and it builds sitemaps of up to 200,000 URLs, from a pasted or uploaded list. The file is written in your browser and nothing is stored. Download it as XML, gzip, ZIP, TXT, an HTML sitemap or a CSV report, and the site tree as SVG or PNG.

Why are some of my pages missing from the sitemap?

Because they should not be listed: they redirect, are noindex, name another URL as canonical, answer an error, are blocked by robots.txt or are not HTML. Open Left out to see every URL with its reason and what to do about it. A page that no link reaches is only found if it is in your current sitemap, so keep that option on when you run the crawl.

Where do I put the sitemap.xml file?

In your site's root, at https://www.example.org/sitemap.xml. A sitemap may only list URLs in its own folder and below, so a file in /blog/ cannot list your products, and the root covers everything. Then add a Sitemap: line with the full URL to robots.txt, anywhere in the file and as often as you need, so every crawler finds it without being told.

How many URLs can one sitemap have?

At most 50,000 URLs and 50 MB uncompressed per file. Above whichever limit you cross first, split the URLs into several files and list them in a sitemap index, which may itself name up to 50,000 sitemaps. This generator splits automatically and writes the index for you. Naver Search Advisor refuses files over 10 MB, so choose that limit in More options for a Korean site.

Does Google use priority and changefreq?

No. Google ignores both, and Bing said in 2025 that it ignores them too; only Yandex still reads them. That is why they are off by default here, and why you can turn them on in More options if you need them for Yandex. lastmod is different: Google and Bing both use it to schedule crawls, but only while the dates stay accurate.

Why do some pages get no lastmod date?

Because we only write dates we can stand behind: the page's JSON-LD dateModified, its article:modified_time, your current sitemap's dates when they vary, or a Last-Modified header that is not simply the time of the request. Without one of those, lastmod is left out, which is perfectly valid. A date that is always today teaches Google and Bing to ignore it altogether.

Should a sitemap include redirects or noindex pages?

No. List the final URL a redirect leads to, never the redirecting one, and leave noindex pages out: a sitemap that says “index this” about a page that says “do not” is a mixed message. Search Console also reports sitemaps that list URLs robots.txt blocks. This generator leaves all of them out and names the reason next to each URL.

How do I submit my sitemap to Google?

Open the Sitemaps report in Google Search Console for your property, enter the file's path and submit it, or simply add a Sitemap: line to robots.txt, which needs no account at all. Submitting is a hint: Google decides what to crawl. The old ping address no longer works, as Google announced in June 2023, so ignore any tool that offers it.

My CMS already makes a sitemap. Do I need this one?

Usually you should keep your CMS's sitemap, which updates itself, and use this to fix what it lists. Run a crawl with “Also check the URLs in my current sitemap” on: the Current sitemap view shows the entries that redirect, are noindex or answer errors, the indexable pages it misses, and the pages no link reaches. Upload a static file only if you turn the CMS's off.

Does this sitemap crawler obey robots.txt?

Yes. It reads robots.txt first as DNSRobotSitemap, falling back to the * rules, and it also leaves out URLs Googlebot may not crawl. If robots.txt answers a server error or 429, the site counts as closed to crawlers, as the standard says, and nothing is crawled. A Crawl-delay is honoured too, so a crawl of a site that sets one runs slower.

Can it crawl a site built with JavaScript?

It reads the HTML the server sends, so a site that adds its links with JavaScript after loading may show only one or two links. The tool says so when that happens, instead of handing you a sitemap of one page, and it offers two ways on: use the URLs in the site's current sitemap, or paste or upload your own list of addresses.

What is IndexNow, and do I still need a sitemap with it?

IndexNow is a way to tell search engines about new or changed URLs the moment they change. One submission reaches Bing, Yandex, Naver, Seznam and others, though not Google, which does not take part. It complements a sitemap rather than replacing it: IndexNow for recent changes, the sitemap for the full list of pages a crawler should know about.

Missing something?Suggest a feature or a new tool