SEO
Sitemap index o sitemap unico: quando cambiare
Un sitemap unico basta fino a 50.000 URL e 50 MB. Oltre quella soglia serve un indice che elenca più file, con lastmod verificabili e nessun file vuoto.
In sintesi
- Un file regge 50.000 URL e 50 MB: oltre serve un indice a due livelli.
- lastmod va pubblicato solo se è vero, altrimenti Google lo ignora.
- L'indice rende leggibile ciò che cambia, non aumenta il crawl budget.
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.
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
- Sotto i 5.000 URL un indice aggiunge una richiesta e non risolve niente.
- Se tutte le pagine cambiano insieme, un solo lastmod è onesto e leggibile.
- Un file unico si controlla a mano in un minuto, e gli errori si vedono subito.
Quando serve un indice
- Oltre i 50.000 URL, o quando un file supera i 50 MB non compressi.
- Quando le sezioni hanno cadenze diverse: blog giornaliero, catalogo mensile.
- Quando una sezione va esclusa senza riscrivere tutto il file.
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.
Domande frequenti
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.