
What is a sitemap index?
A sitemap index is a parent XML file that doesn't list your URLs directly; instead it lists the locations of your child sitemaps, letting you group tens of thousands of URLs into manageable chunks. It matters because a single sitemap is capped at 50,000 URLs and 50 MB uncompressed, so any site bigger than that needs an index to stay within Google's limits and get everything discovered.
Think of it as a table of contents for your sitemaps. You submit one index URL to Google, and it fans out to read every child sitemap listed inside. This keeps large sites organized, makes debugging faster, and lets you split sitemaps by section, post type, or freshness.
A real sitemap index file
The parent uses <sitemapindex> and <sitemap> entries (not <urlset> / <url>). Here's a valid example:
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap-posts.xml</loc>
<lastmod>2026-07-01T09:00:00+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-pages.xml</loc>
<lastmod>2026-06-28T14:30:00+00:00</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap-products.xml</loc>
<lastmod>2026-07-05T18:12:00+00:00</lastmod>
</sitemap>
</sitemapindex>Each <loc> must be a full, absolute URL, and <lastmod> should reflect when that child sitemap actually changed. You submit the index itself (say /sitemap.xml) in Search Console and reference it in robots.txt with Sitemap: https://example.com/sitemap.xml.
The limits you have to respect
These caps are hard rules from the sitemaps protocol and Google. Blow past them and the file gets rejected or truncated:
| Limit | Value | What breaks if you exceed it |
|---|---|---|
| URLs per single sitemap | 50,000 | Extra URLs are ignored; split into more child sitemaps |
| Uncompressed size per sitemap | 50 MB | File rejected; split it or trim it down |
| Sitemaps per index file | 50,000 | Extra entries ignored; use multiple index files |
| Nesting depth | 1 level (index → sitemaps) | An index can't point to another index; it's flattened |
| Compression | gzip allowed | 50 MB limit is measured uncompressed, not zipped |
| Encoding | UTF-8, URL-encoded entities | Unescaped &, <, > break parsing |
One thing that trips people up: an index cannot reference another index. It's a single layer. If you somehow need more than 50,000 child sitemaps, you publish multiple index files and submit each one.
How to check it on your own site
- Open the file in a browser. Load your index URL directly. Confirm the root element is
<sitemapindex>, not<urlset>, and that each entry points to a child sitemap. - Verify every child loads. Click through each
<loc>. A child that 404s, 403s, or redirects means those URLs never get crawled from the sitemap. - Check the counts. Make sure no single child sitemap exceeds 50,000 URLs or 50 MB uncompressed. Most sitemap plugins auto-split, but verify after big content imports.
- Submit and read the report. In Google Search Console's Sitemaps report, submit the index URL. Google expands it and reports discovered/indexed counts per child, which is where you'll spot problems.
- Match declared vs. real. Cross-check the URL count Google reports against what you expect. Big gaps point to blocked, noindexed, or erroring child sitemaps.
- Validate the XML. Run it through a validator such as the XML Sitemap Validator to catch unescaped characters, bad dates, or malformed structure before Google chokes on it.
Common mistakes and how to fix them
- Using
<urlset>tags in the index file. Fix: the parent must use<sitemapindex>and<sitemap>elements; child files use<urlset>and<url>. Mixing them invalidates the file. - Nesting an index inside another index. Fix: flatten it. An index can only point to regular sitemaps, so publish multiple indexes if you truly need to.
- Listing child sitemaps with relative URLs. Fix: every
<loc>must be a full absolute URL on the same host, includinghttps://. - Leaving dead or noindexed URLs in child sitemaps. Fix: sitemaps should list canonical, indexable, 200-status URLs only; prune 404s, redirects, and noindexed pages so you don't waste crawl budget.
- Forgetting to reference the index in robots.txt. Fix: add a
Sitemap:line pointing to the index URL and submit it in Search Console so discovery doesn't rely on one channel.
Frequently asked questions
What's the difference between a sitemap index and a regular sitemap?
A regular sitemap lists your actual page URLs inside <url> elements. A sitemap index lists other sitemaps inside <sitemap> elements. You use an index when you have more URLs than one file can legally hold, or when you just want to organize sitemaps by section.
Do I need a sitemap index if my site is small?
No. If you're comfortably under 50,000 URLs, a single sitemap is fine and simpler. An index only becomes necessary once you cross the per-file limits or want to split sitemaps by type for easier debugging.
Can a sitemap index point to another sitemap index?
No. The protocol allows exactly one level of nesting: index to sitemaps. If you need to reference more than 50,000 child sitemaps, publish several index files and submit each separately, rather than nesting indexes.
Should I submit the index or each child sitemap to Google?
Submit the index. Google reads it and automatically discovers every child sitemap listed inside, so you get one clean entry in the Sitemaps report and per-child stats underneath. For the full picture, see the complete XML sitemaps reference.
Can I mix content types, like images, across child sitemaps?
Yes. An index can reference sitemaps of different kinds, including a dedicated image sitemap, as long as each child is valid on its own. Splitting by type actually makes it easier to see which content set has indexing problems, because Search Console reports discovered and indexed counts per child sitemap rather than lumping everything together.
How often should the sitemap index update?
Whenever a child sitemap's contents change, bump that child's <lastmod> in the index. Most CMS and plugin-generated sitemaps handle this automatically on publish. Don't fake fresh <lastmod> dates to bait recrawls; Google learns to distrust the signal and you gain nothing.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







