New format
Sitemap: XML and HTML — why you need them and how to make one
A sitemap helps search engines learn about important URLs faster. Most often that means `sitemap.xml` for bots; an HTML map is an orientation aid for people. It’s not a ranking switch — crawl hygiene next to solid structure and internal links.
Below: the difference between formats, how to build XML, how to tell Yandex and Google, and what to avoid. Treat this as the main take on sitemaps among related posts.
XML and HTML: two different maps
An XML sitemap is a machine-readable URL list (often with lastmod). The bot uses it as a hint of what to crawl. An HTML map is a normal page linking sections; useful for people and as extra internal links, but it doesn’t replace XML on a large site.
Don’t confuse it with a ten-link “map in the footer” or a visual IA diagram for design.
Who needs what:
- XML — index and crawl
- HTML — human orientation
- neither fixes duplicates or thin content
Why you need sitemap.xml
New sections, deep nesting, weak internal linking — the bot may take long to reach a URL. A sitemap speeds discovery. On a five-page brochure site the effect is smaller than on a catalog of thousands.
A sitemap doesn’t guarantee indexing: robots-blocked, noindex, soft 404s, and duplicates still get filtered.
Especially useful if:
- many landings and product cards
- you publish new URLs often
- media/docs live on separate URLs
- some pages are weakly linked from the menu
How to create an XML sitemap
On a CMS — built-in module or plugin (generate + auto-update). On static/custom — generate on deploy or a script over canonical URLs. Confirm the file has https addresses without redirect chains.
Sitemap index: products, blog, categories separately — easier to diagnose errors by type.
Mini requirements for URLs in the map:
- canonical (one www/https variant)
- 200 response
- allowed for indexing
- no sessions or UTM
- current, not deleted
How to tell search engines
In `robots.txt`: a `Sitemap: https://example.com/sitemap.xml` line. Plus add the file in Yandex Webmaster and Google Search Console. After a domain/HTTPS change, update the paths.
Recrawl isn’t instant: a sitemap is a queue, not a command to “index everything tomorrow.”
After publishing:
- open the sitemap in a browser — valid XML
- check error reports in the panels
- reconcile URL count with expectations
- remove from the map what you closed from the index
HTML map: when it makes sense
For people: a large portal, public services, a catalog with unclear structure. Make a readable hierarchy — not a sheet of 5,000 links on one page; use sections.
For SEO an HTML map is a weak substitute for a normal menu and breadcrumbs. Don’t spawn a separate “seo-sitemap.html” with spammy anchors.
Practice:
- a “Sitemap” link in the footer
- grouping by section
- only important public URLs
Typical mistakes and control
Broken XML, http on an https site, redirects inside the map, a stale file after migration, mixing indexable and closed URLs, one giant file without an index.
Quarterly reconcile: crawler vs sitemap vs pages in search. A gap is a reason to clean the generator.
Control:
- sitemap errors in Search Console / webmaster tools
- share of 404/301 among map URLs
- last file update time
- no test subdomain on production
FAQ
Are XML and HTML sitemaps the same?
No. XML is for bots (a URL list). HTML is a page of links for people. For SEO a correct XML plus internal linking matters more.
Is a sitemap required?
Not the only way to discover URLs, but on mid-size and large sites it greatly helps crawling new and deep pages.
Where should I put the file?
Usually `/sitemap.xml` at the root or a sitemap index `/sitemap_index.xml`. Point to it in robots.txt and Search Console / webmaster panels.
Do I need priority and changefreq?
Engines have long relied on them weakly. What matters more is an up-to-date list of canonical URLs without junk.
What not to include?
Utility pages, cart, filter duplicates, noindex pages, test URLs, redirect chains — only final 200 canonicals.
How do I update it?
CMS/plugin auto-generation or a script when URLs appear. After large sections — resubmit in the panels.
How many URLs per file?
Protocol limits: about 50k URLs or ~50 MB per file; more — use a sitemap index. In practice split by section for convenience.
Does a sitemap replace the menu?
No. Navigation and internal links matter more for people and often for crawl. XML is a complement.
Sitemap full of filter URLs — and Search Console filled with crawl noise?
We’ll ship a clean canonical XML and submit it properly — map after structure, not instead of it.
Discuss the task