Free tool, no signup required

Sitemap Index Generator

Paste your child sitemap URLs, one per line, and get a valid sitemap_index.xml back with optional lastmod dates. Copy it or download it, ready to upload to your root and submit to Search Console.

Short answer

A sitemap index is a sitemap of sitemaps: an XML file that lists child sitemap files instead of pages, wrapped in a sitemapindex element. Each child sitemap may hold up to 50,000 URLs and 50MB uncompressed, and one index may list up to 50,000 child sitemaps. You upload the index to your root, submit it once in Search Console, and Google discovers every child through it. Sites past 50,000 URLs must use one; sites that split their sitemaps by section should.

When you need a sitemap index, and when you do not

The hard rule comes from the sitemaps.org protocol: a single sitemap file may hold at most 50,000 URLs and 50MB uncompressed. Past either limit, search engines stop reading. A site with 80,000 pages that keeps one sitemap file is not warned about the overflow; the entries past the cap are simply ignored, and 30,000 pages lose their discovery signal without anyone noticing. At that scale a sitemap index is not an optimisation, it is the only way to declare the whole site.

Below the limit, an index is still the right structure for any site that splits its sitemaps by section: one child for posts, one for pages, one for products, one for categories. The payoff is the lastmod date on each child. When you publish three blog posts, only sitemap-posts.xml changes, its lastmod moves, and Google can re-fetch that one file instead of re-reading every URL you have. On a site with a large stable catalogue and a fast-moving blog, that difference decides how quickly new content gets found.

The case where you do not need one is just as clear. A site with a few hundred pages and a single sitemap file gains nothing from wrapping that one file in an index. One extra fetch, one extra file to keep in sync, no new information for the crawler. Keep the single sitemap, declare it in robots.txt, and revisit the question when the site grows or the sitemap splits. If you have not built the child files yet, the sitemap generator will crawl your site and produce them.

The rules a sitemap index has to follow

An index file is small and simple, which makes its failure modes easy to memorise. Every rule below comes from the sitemaps.org 0.9 protocol or from how Google documents its own handling, and breaking any of them costs you silently rather than loudly.

RuleLimitWhat it means in practice
Max child sitemaps per index50,000Entries past the cap are ignored. If one index is not enough, submit a second index rather than nesting
Max URLs per child sitemap50,000The cap applies per file, so the index buys capacity by adding children, not by growing them
Max size per child sitemap50MB uncompressedGzip is allowed and worth using, but the limit is measured on the uncompressed content
NestingOne level onlyAn index lists sitemaps, and sitemaps list pages. An index that lists another index is rejected
LocationSame host, own directory or belowChildren must live on the same host as the index, and an index at /sitemaps/ can only reference files at or below that path unless the index is declared in robots.txt
Formatloc required, lastmod optionalEach sitemap element needs a loc. lastmod is the only optional field, and the only one worth setting

Why the silence matters

None of these failures produce an error page. A nested index, a cross-host child or an over-limit file just stops being read, and the first visible symptom is pages that never appear in the index coverage report. Checking the file before you submit it is cheaper than diagnosing it afterwards.

How to set up a sitemap index

Seven steps, and only the first one takes real effort. The order matters: the child files have to exist at their final URLs before the index that references them goes live, or Google fetches an index full of 404s.

  1. 01

    Split your URLs into child sitemaps

    Divide your URLs by section, such as posts, pages and products, or into blocks of up to 50,000. If you do not have the files yet, the sitemap generator can build them for you.

  2. 02

    Upload the child sitemap files

    Put each child sitemap on your site, on the same host the index will live on. Note the full URL of every file, because those URLs are what the index lists.

  3. 03

    Paste the child URLs here and generate

    One URL per line. The tool validates each line, removes duplicates, adds an optional lastmod date, and produces a valid sitemapindex XML file.

  4. 04

    Upload sitemap_index.xml to your root

    The root is the safest home for the index because a sitemap can only reference files at or below its own directory unless it is declared in robots.txt.

  5. 05

    Declare the index in robots.txt

    Add a line reading Sitemap: https://yourdomain.com/sitemap_index.xml. Every crawler that reads robots.txt finds the index without you submitting it anywhere.

  6. 06

    Submit the index alone in Search Console

    Open Indexing, then Sitemaps, and submit only sitemap_index.xml. Google discovers every child through it and reports per-child results under the same entry.

  7. 07

    Validate the result

    Run the finished index through the sitemap validator to confirm the file parses, the namespace is right, and every child URL resolves on the same host.

Once the index is live, run it through the sitemap validator to confirm the file parses and the namespace is exact, or through the sitemap checker to test the file and a sample of the URLs inside it in one pass.

Common sitemap index mistakes

The same handful of mistakes accounts for nearly every broken index. All of them fail silently, which is why they survive for months.

  • Listing pages in the index. An index lists sitemap files, not URLs of pages. A page URL wrapped in a sitemap element makes Google fetch an HTML document where it expects XML, and that entry contributes nothing.
  • Nesting one index inside another. The protocol allows one level. An index pointing at a second index is rejected, and every sitemap below the nested one goes unread.
  • Mixing hosts. Children on www when the index lives on the bare domain, or children on a CDN subdomain, are ignored. Host means the full hostname, so protocol and subdomain both have to match.
  • Stamping every child with the same fresh lastmod. If every build writes today's date on every child, the field carries no information, Google learns to distrust it, and you lose the one mechanism that lets a crawler skip the sections that did not change.
  • Submitting every child separately as well as the index. Google tolerates it, but the Sitemaps report now counts every URL twice under different rows, and the duplicate entries obscure which submission a problem belongs to. Submit the index alone.

Inheriting an index someone else built? Pull its full contents with the sitemap extractor, which follows every child and lists the URLs inside, so you can see exactly what the index actually declares before you change it.

What this tool does

Valid sitemapindex XML

The exact structure and namespace the sitemaps.org 0.9 protocol requires

Optional lastmod

One date applied to every child, in the ISO format Google reads

Duplicate removal

Repeated lines are dropped and counted before the XML is built

URL validation

Every line must be an absolute http(s) URL, with bad lines listed for fixing

50,000 cap warning

Flags lists that exceed the protocol limit for children per index

Cross-host warning

Flags URL lists that span multiple hosts, which Google ignores

Copy or download

The XML as text on your clipboard or as a ready sitemap_index.xml file

Runs in your browser

Nothing is uploaded. Your URL list never leaves your machine

Frequently asked questions

What is a sitemap index?

A sitemap index is a sitemap of sitemaps: an XML file that lists other sitemap files instead of pages. Each entry is a sitemap element holding the loc of a child sitemap and an optional lastmod date, and the whole file is wrapped in a sitemapindex root element. You submit the index once and search engines discover every child sitemap through it.

Do I need a sitemap index?

You need one once any single sitemap would exceed 50,000 URLs or 50MB uncompressed, because the protocol forces a split at that point. Below the limit it is still the right structure for sites that split sitemaps by section, since per-section lastmod dates tell Google exactly which part of the site changed. A small site with one sitemap file does not need one.

How many sitemaps can a sitemap index list?

Up to 50,000 child sitemaps per index file. Since each child can itself hold 50,000 URLs, one index covers 2.5 billion URLs, which is more headroom than any real site needs.

Can a sitemap index list another sitemap index?

No. The protocol allows exactly one level: an index lists sitemaps, and those sitemaps list pages. Google rejects nested indexes, so if one index is not enough you submit multiple index files instead of stacking them.

Do the child sitemaps need to be on the same host as the index?

Yes. Google ignores child sitemaps hosted on a different domain from the index that lists them. Cross-host submissions only work in the special case where both hosts prove ownership through robots.txt or Search Console, so the safe rule is one host for the index and all of its children.

Where should the sitemap index file live?

At the root of the site, as /sitemap_index.xml or /sitemap.xml. A sitemap can only reference files at or below its own directory, so an index buried in a subfolder can miss children elsewhere on the site unless the index is declared in robots.txt, which lifts the restriction.

Do I submit the index or each child sitemap in Search Console?

Submit the index alone. Google reads it, fetches every child, and reports per-child status under the one entry. Submitting the children separately as well creates duplicate rows that report the same URLs twice and make the Sitemaps report harder to read.

Does lastmod on a sitemap index matter?

Yes, and it is the only optional field in an index worth setting. The lastmod on a sitemap entry tells Google when that child file last changed, so a crawler can re-fetch only the children that moved. Google trusts the dates only while they are accurate: stamping every child with today's date on every build teaches Google to ignore the field entirely.

Does WordPress already generate a sitemap index?

Usually, yes. WordPress core and the common SEO plugins emit a sitemap index automatically, typically at /sitemap_index.xml or /wp-sitemap.xml, with children split by post type. If your platform already publishes one, submit that file rather than building a second index by hand. This tool is for sites that manage their sitemap files themselves.

What happens if I go past 50,000 URLs without an index?

Entries beyond the cap are ignored. A single sitemap holding 80,000 URLs does not fail loudly; search engines simply stop reading at the limit, so 30,000 pages silently lose their discovery signal. Splitting into children under an index is the only fix.

Can the child sitemaps be gzipped?

Yes. A child listed as sitemap-posts.xml.gz is valid, and compression is worth it on large files. The 50,000 URL and 50MB limits still apply to the uncompressed content, so gzip buys transfer speed, not extra capacity.

Does a sitemap index improve rankings?

No. Sitemaps of any kind affect discovery and recrawl efficiency, not ranking. An index gets new pages found sooner and changed sections recrawled faster, which is valuable on a large site, but it does not move an already indexed page up the results.

Does this tool upload my URLs anywhere?

No. Everything runs in your browser. The URLs you paste are validated and turned into XML locally, nothing is sent to a server, and the file you download is assembled on your own machine.

An index gets pages discovered. Then what?

Discovery is step one. CrawlRaven joins your crawl with your Search Console and GA4 data into one ranked plan, so you can see which of the pages your sitemaps declare Google actually indexed, and what every one of them earns in clicks.