# Sitemap index or a single sitemap: when to switch

A single sitemap holds up to 50,000 URLs and 50 MB. Past that mark you need an index listing several files, with honest lastmod values and no empty file.

> Page: https://ui.eneawork.it/blog/sitemap-index-vs-unico
> Markdown: https://ui.eneawork.it/blog/sitemap-index-vs-unico.md

*2026-11-01*

Un sitemap unico basta finché il sito resta sotto i 50.000 URL e i 50 MB non compressi; oltre quella soglia serve un sitemap index, un file che elenca gli altri sitemap e non contiene URL di pagine. Il limite è del protocollo, non del server.

Il catalogo EneUI conta 111.985 componenti, 1.556 blocchi e 12.808 icone da 1.472 librerie, letti da /api/stats il 1 novembre 2026. Con 111.985 URL di componenti un file unico non è possibile: il generatore in backend/commercial.js divide i componenti in blocchi da 45.000 URL, sotto il limite di 50.000, e pubblica i primi 2.000 in un file separato. Le liste Autocomplete registrate il 31 ottobre 2026 non contengono la parola sitemap.

## I due limiti del protocollo

Il protocollo fissa 50.000 URL e 50 MB non compressi per file. Un indice accetta fino a 50.000 sitemap, e un indice non può elencare un altro indice: la gerarchia è profonda due livelli, non tre. Il gzip riduce il peso, non il numero di URL.

La forma è <sitemapindex> con un elemento <sitemap><loc> per figlio. Il lastmod è opzionale a ogni livello, e Google lo ignora quando è sempre la data di oggi: un valore che non cambia mai è peggio di nessun valore.

## Quando un file unico è la scelta giusta

## Quando serve un indice

## Leggere un indice prima di pubblicarlo

cat > check-sitemap.mjs ([^/g)].map((m) => m[1]); console.log(children.length + " child sitemaps"); for (const url of children) { const xml = await (await fetch(url)).text(); const urls = (xml.match(//g) || []).length; if (!urls) console.log("EMPTY " + url); else console.log(String(urls).padStart(6) + " " + url); } EOF node check-sitemap.mjs

Lo script scarica l'indice, elenca i figli e conta le occorrenze di <loc> in ognuno. Un figlio con zero URL è un errore da correggere: Google legge un file vuoto e riduce la fiducia nel resto dell'indice. Un figlio con 49.000 URL è una bomba a orologeria, perché la prossima aggiunta supera il limite.

## Come lo fa il catalogo EneUI

L'indice parte con /sitemap-core.xml, che contiene hub, guide e librerie, poi elenca i file dei componenti. Le 1.556 sezioni e le 12.808 icone stanno nel core; i singoli record come sidebar di 21st stanno nei file dei componenti, quelli che un file unico non potrebbe contenere. Dati verificati il 1 novembre 2026.

## La limitazione

Un indice non aumenta il crawl budget. Se il sito pubblica 111.985 URL e ne cambia mille al giorno, Google ne leggerà una frazione: la divisione in file rende leggibile ciò che è cambiato, non convince un crawler a leggere tutto. L'unica leva resta smettere di pubblicare pagine che nessuno cerca.

## Dove continuare

La sequenza per entrare nell'indice è in indicizzare un sito su Google; come si dichiarano le versioni linguistiche è in hreflang: gli errori comuni. Se la base del sito è ancora da scegliere, il confronto è in WordPress, Wix o componenti React.

## FAQ

### Quanti URL entrano in un sitemap?

50.000 per file, con un massimo di 50 MB non compressi. Oltre il limite si divide in più file e si pubblica un indice.

### Un sitemap index può elencare un altro index?

No. La gerarchia è profonda due livelli: un indice elenca sitemap di URL, non altri indici.

### Il sitemap deve essere dichiarato in robots.txt?

Non è obbligatorio, ma conviene: una riga Sitemap con l'URL assoluto dell'indice evita che Google debba indovinare il percorso.

### Serve il lastmod in ogni URL?

Solo se è vero. Un lastmod sempre uguale alla data di oggi viene ignorato, e un lastmod sbagliato è peggio della sua assenza.

### Posso pubblicare la sitemap in gzip?

Sì, il protocollo ammette file .gz. Il limite di 50 MB si applica al contenuto non compresso.
