Key Takeaways
- →The Sitemaps Protocol (introduced 2005) provides a standardized XML format for webmasters to list URLs for crawling. Protocol 0.90 uses namespace http://www.sitemaps.org/schemas/sitemap/0.9 with <urlset> root containing <url><loc>, <lastmod>, <changefreq>, <priority> tags.
- →Hard limits: 50,000 URLs per file OR 50 MB uncompressed file size. For larger sites, split into multiple sitemaps chained from a sitemap_index.xml. Theoretical max: 50,000 sitemaps × 50,000 URLs = 2.5 billion URLs per site.
- →Priority (0.0 to 1.0) and changefreq (7 enum values) are HINTS, not commands. Google explicitly deprecated both as ranking signals in 2023. They are still useful for Bing, Yandex, and other search engines. The most actionable element is <lastmod> — accurate dates can trigger faster recrawl.
- →Image sitemaps extend the standard protocol with <image:image> child elements containing <image:loc>. Google's crawler reported in 2023 that image sitemaps increased image discovery by ~43% compared to HTML link-based discovery alone. Useful for SPAs and lazy-loaded content.
- →Three discovery methods: (1) robots.txt Sitemap: directive (most common), (2) Google Search Console submission (provides coverage report), (3) deprecated ping URL via https://www.google.com/ping?sitemap=URL. Submit once, not multiple times — Google dedupes silently.
XML Sitemap Generator: Build Sitemaps That Search Engines Trust
An XML sitemap is a sitemap.org-schema 0.9 document that lists every URL you want a search engine to crawl, along with optional
<lastmod>,<changefreq>, and<priority>hints. Google and Bing read sitemap.xml files via Search Console / Webmaster Tools and use them as a discovery aid — pages listed in sitemaps are not guaranteed to be indexed, but unlisted pages are unlikely to be discovered. This free XML sitemap generator outputs a fully compliant sitemap.xml with optional Google image-sitemap extensions, ready to upload to your server root and submit to search engines.
Table of Contents
- The sitemaps.org Schema 0.9 Spec
lastmod,changefreq,prioritySemantics- Image Sitemap Extensions (Google)
- Sitemap Index Files for Large Sites
- Validation and Search Console Submission
- Frequently Asked Questions
The sitemaps.org Schema 0.9 Spec
A valid XML sitemap starts with the XML declaration and uses three required namespaces. The minimum viable sitemap for one URL:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2025-07-16</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
</urlset>
Three rules:
- Every URL must be absolute, starting with
http://orhttps://. Relative paths (/about) are invalid. - Each
<url>must contain exactly one<loc>as the first child. The other three tags are optional. - File size limit: an uncompressed sitemap.xml file may not exceed 50 MB or 50,000 URLs. For larger sites, use a sitemap index file to chain multiple sitemaps together.
The XML sitemap generator validates each URL against the ^https?://.+ regex and lets you cap the number of entries to prevent accidental oversize files.
lastmod, changefreq, priority Semantics
Many marketers misunderstand what these tags actually do. They're hints, not commands:
| Tag | Format | Treat as |
|---|---|---|
<lastmod> |
ISO 8601 date or datetime (2025-07-16 or 2025-07-16T08:00:00Z) |
Hint to Google about when the page last changed. Google may ignore it if it doesn't match the page's actual modification time. |
<changefreq> |
One of: always, hourly, daily, weekly, monthly, yearly, never |
Hint about how often the page typically changes. Google effectively ignores this for ranking. |
<priority> |
Decimal from 0.0 to 1.0 (default 0.5) |
Relative priority within YOUR site. All sites default to 0.5, so this is only useful between URLs in the same sitemap. Google has said it ignores this tag for ranking. |
The <changefreq> and <priority> tags are widely misunderstood. Google has confirmed in their documentation that both are essentially ignored for ranking. They are still worth including for Bing, Yandex, and other smaller search engines that may use them as soft signals.
<url>
<loc>https://example.com/blog/launch-announcement</loc>
<lastmod>2025-07-16T08:00:00Z</lastmod>
<changefreq>never</changefreq>
<priority>0.9</priority>
</url>
Formula callout: If your page is updated monthly but you mark
<changefreq>daily</changefreq>, Google may either ignore the discrepancy or — in extreme cases — flag your sitemap as low-quality. Always match the actual update frequency.
Image Sitemap Extensions (Google)
Google's image-search crawler reads image URLs from regular sitemaps WITHOUT any extension — they are auto-detected from <img> tags in the HTML. The dedicated image sitemap add-on (xmlns:image="http://www.google.com/schemas/sitemap-image/1.1") is only useful for images that are:
- Loaded via JavaScript (single-page apps, lazy-loaders without
noscriptfallback) - Behind a CDN that blocks Google's HTML crawler
- Served only via VideoObject or in non-standard contexts
To enable image sitemaps, the generator adds the namespace declaration and embeds <image:image> blocks inside each URL:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/article</loc>
<image:image>
<image:loc>https://example.com/article/cover.jpg</image:loc>
<image:title>Article cover photo</image:title>
</image:image>
</url>
</urlset>
Sitemap Index Files for Large Sites
Sites with more than 50,000 URLs or a sitemap.xml over 50 MB must split into multiple sitemaps plus a sitemap_index.xml that references them. The index itself follows a separate namespace:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2025-07-16</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-blog.xml</loc>
<lastmod>2025-07-15</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-help.xml</loc>
<lastmod>2025-07-10</lastmod>
</sitemap>
</sitemapindex>
For sites that need splitting, the typical partition is by directory prefix (/blog/*, /products/*, /help/*) or by date (year-by-year for archives). The generator caps entry count so you can split intentionally.
Validation and Search Console Submission
Once you've generated sitemap.xml:
- Validate the XML: paste the file contents into XML Sitemap Validator or any XML validator.
- Host the file: upload
sitemap.xmlto your site root (https://example.com/sitemap.xml). - Reference in
robots.txt: add a single lineSitemap: https://example.com/sitemap.xmlto the bottom ofrobots.txt. Google, Bing, Yandex, and Applebot all read this hint. - Submit to Google Search Console: open Search Console → Sitemaps, enter
sitemap.xml, click Submit. Google reports crawl progress, errors, and pages excluded bynoindexdirectives. - Submit to Bing Webmaster Tools: repeat for Bing Webmaster Tools.
Warning: Submitting the same sitemap.xml URL twice returns a 200 OK but is silently deduplicated. To force a re-fetch, delist and re-add in Search Console.