On this page
A safety net next to your links
A sitemap usually lives at /sitemap.xml: a list in XML with, per page, the full address and optionally the date it last really changed. Google and Bing read that list and know which pages exist, even before a single link points to them.
Google finds pages mainly by following links, from your home page to your services and from other sites to yours. The sitemap is the safety net: a new page, a product deep in your shop or a guide that hangs in no menu yet still shows up. It is not a promise. Google says a sitemap helps crawling but does not guarantee every page in it gets indexed.
XML sitemap or HTML sitemap. The XML sitemap is for machines. An HTML sitemap is an ordinary page linking to all your pages, for visitors who cannot find something in the menu. When anyone in SEO says sitemap, they almost always mean the XML file.
A standard Google, Yahoo and Microsoft agreed on
The Sitemaps protocol appeared in 2005, to help search engines discover new addresses faster. It became a shared standard at sitemaps.org, version 0.90, supported by Google, Yahoo! and Microsoft and free to use under a Creative Commons licence. Open any sitemap and you still see that history in its first line: the address sitemaps.org/schemas/sitemap/0.9. In June 2023 Google retired sitemap pings, an address you could call to say your sitemap had changed, because most pings turned out to be spam. Today you submit it in Search Console or with a line in robots.txt. WordPress has built its own sitemap since version 5.5, at /wp-sitemap.xml, with at most 2,000 addresses per file.
Who needs one, and who does not
Google says a small site of about 500 pages or fewer, where every page is reachable through links, can often do without. We still always add one: it costs nothing, and it is the one place where you state which addresses count.
| Situation | Sitemap needed? | Why |
|---|---|---|
| 15-page site, everything in the menu | Useful, not needed | Google finds it all through your links |
| New site, no links from other sites yet | Yes | There is no path from outside to your pages |
| Online store with 3,000 products | Yes | Products deep in filters and categories get missed otherwise |
| Site in three or more languages | Yes | Every language version has to be found on its own; see multilingual website development |
| Lots of video, images or news | Yes | Google names these sites itself as cases where a sitemap helps |
Having a sitemap does not put a new site in Google overnight. How long it takes is in how long until my website shows on Google.
Set up and submit in four steps
- Generate itYour CMS or build writes it: WordPress at /wp-sitemap.xml, a custom site on every release. Never maintain it by hand.
- Clean itOnly addresses that return 200, carry no noindex, do not redirect and are the preferred version. Full https addresses.
- Submit itIn Search Console under Sitemaps, and with a line Sitemap: plus the full address in your robots.txt, so Bing finds it too.
- Follow it upSearch Console shows per sitemap how many addresses it found and which are not indexed, with the reason.
Four fields, two of which Google ignores
An XML sitemap has only two required parts per page: a url block with loc inside, the full address. The rest is optional, and Google uses only one of it.
| Element | Required | What Google does with it |
|---|---|---|
| loc | Yes | The address Google visits; always complete, with https and domain |
| lastmod | No | Used to schedule its next visit, but only if your dates are honest |
| changefreq | No | Ignored |
| priority | No | Ignored; 0.5 by default in the protocol |
| sitemap index | Only above the limit | A list of sitemaps, at most 50,000 |
One file holds at most 50,000 addresses and 50 MB, in UTF-8. Grow past that and you split it, with a sitemap index pointing to the parts. Take an online store in Utrecht selling 3,000 products in Dutch, German and French, with 200 category pages per language: 9,600 addresses, so one file would do. We still split a store like that per language and per page type, because Search Console then tells you at once that 1,100 German products are not indexed, instead of one vague number for the whole site. Building the store itself is webshop development.
For lastmod, honesty is the rule. Google puts it plainly: set a new date every day while the page did not change, and in time it stops believing you. Change the date only when the text, the data or the links really changed.
Next to robots.txt, noindex and a 301
The sitemap invites, the rest steers. Robots.txt says which parts Google may not visit; our AI crawler checker shows what yours allows. Noindex keeps a page out of the results. A 301 redirect sends an old address to a new one. List an address in your sitemap that carries noindex or redirects, and you give Google two conflicting signals. Google calls sitemap inclusion a weak signal that this is the preferred version; a canonical or a redirect weighs more. So keep the list clean: only the pages you want in Google, each at its final address, each with its own title tag.
Free in any system, work on a large site
In money, close to nothing. WordPress builds it for free, a custom site writes it on every build, and Search Console is free. The work is in cleaning and following up: the sitemap of an old site is often full of redirecting addresses, test pages and duplicate versions with and without www. To see what your site hands Google now, our SEO checker shows the status code, canonical and any noindex per page. If pages are missing from Google, the website not showing on Google check looks for the cause.
The file taken apart: four lines that matter
example.com/sitemap.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
- <url>
- <loc>https://example.com/heat-pumps</loc>
- <lastmod>2026-10-14</lastmod>
- <changefreq>weekly</changefreq>
- <priority>0.8</priority>
- </url>
- <url>
- <loc>https://example.com/contact</loc>
- </url>
- </urlset>
locrequired
The full address, with https and domain. Only the version you want in Google.
lastmodcounts when honest
Google schedules its next visit with it, as long as your dates are true.
3changefreqignored
How often the page would change. Google does not read it.
4priorityignored
How important you find the page. Google does not read it.
Per file
at most 50,000 addresses or 50 MB
Above that: a sitemap index
- sitemap-de.xml
- sitemap-en.xml
- sitemap-products.xml
What site owners ask
What is the difference between an XML sitemap and an HTML sitemap?
An XML sitemap is a file for search engines, with only addresses and optionally a date. An HTML sitemap is a normal page of links for visitors. For Google the XML version counts; an HTML sitemap only helps when your menu falls short.
Where do I find my website's sitemap?
Try your domain with /sitemap.xml after it, or /wp-sitemap.xml on WordPress. Check your robots.txt too: it often holds a Sitemap: line with the full address. In Search Console, under Sitemaps, you see which ones Google already knows.
Do I need to resubmit my sitemap after every change?
No. Submit it once and Google rereads it by itself. The old ping no longer works since late 2023. What does help is an honest lastmod, so Google knows which pages really changed.
Why are pages from my sitemap not in Google?
A sitemap is an invitation, not a guarantee. Search Console gives the reason per address: a duplicate where Google picked another version, a noindex, a redirect, or a page Google crawled but did not (yet) find worth indexing.
