hreflang: il nostro setup in 12 lingue e 5 errori da evitare

Di SEOgrinder · Pubblicato il · Aggiornato il · 9 min di lettura

Risposta breve: hreflang è un’indicazione nel codice della pagina che dice a Google quali pagine sono versioni linguistiche o regionali dello stesso contenuto, così la ricerca può mostrare a ciascuno la versione giusta. Ogni versione deve elencare se stessa e tutte le altre, e ogni coppia deve rimandarsi a vicenda: altrimenti le indicazioni possono essere ignorate. Qui sotto trovi come seogrinder.com imposta hreflang per dodici lingue e cinque errori hreflang tratti dalla documentazione di Google.

Che cosa fa hreflang e quando serve?

Google spiega l’idea nella pagina Tell Google about localized versions of your page: se hai più versioni di una pagina per lingue o regioni diverse, segnalarle serve a «help Google Search point users to the most appropriate version of your page by language or region», cioè a indirizzare gli utenti verso la versione più adatta per lingua o regione.

Google indica tre situazioni in cui la segnalazione è consigliata:

  • Il contenuto principale resta in una sola lingua e traduci soltanto il template, cioè navigazione e footer.
  • Hai piccole varianti regionali di contenuti simili nella stessa lingua, per esempio inglese per Stati Uniti, Regno Unito e Irlanda.
  • Il contenuto è tradotto per intero, per esempio una versione tedesca e una inglese di ogni pagina.

Google può trovare le versioni alternative anche da solo, ma dice che di solito è meglio indicarle in modo esplicito. Una pagina tradotta non è un duplicato: le versioni localizzate «are only considered duplicates if the main content of the page remains untranslated» (Google), cioè sono considerate duplicati solo se il contenuto principale resta non tradotto.

Due cose che hreflang non è. Non è il modo in cui Google riconosce la lingua di una pagina: Google scrive che «doesn’t use hreflang or the HTML lang attribute to detect the language of a page» (Google), cioè non usa né hreflang né l’attributo lang per capire la lingua. La pagina sui siti multilingue aggiunge che usa il contenuto visibile. E non è una promessa di posizionamento: Google indica un solo scopo, mostrare a ogni persona che cerca la versione corrispondente.

Come seogrinder.com collega dodici lingue

Questa sezione descrive il blog di seogrinder.com così come l’abbiamo trovato il 5 novembre 2026. La home page / non contiene tag hreflang. Ogni articolo è una pagina a sé, in una sola lingua. Leggi i tag direttamente:

curl -sS https://seogrinder.com/it/blog/checklist-audit-seo | grep '<link rel="alternate" hreflang'

Il risultato sono 13 righe, le stesse su tutte e dodici le versioni dell’articolo sulla checklist:

<link rel="alternate" hreflang="en" href="https://seogrinder.com/en/blog/seo-audit-checklist">
<link rel="alternate" hreflang="ar" href="https://seogrinder.com/ar/blog/qaimat-tadqiq-seo">
<link rel="alternate" hreflang="de" href="https://seogrinder.com/de/blog/seo-audit-checkliste">
<link rel="alternate" hreflang="es" href="https://seogrinder.com/es/blog/checklist-seo-auditoria">
<link rel="alternate" hreflang="fr" href="https://seogrinder.com/fr/blog/checklist-audit-seo-gratuite">
<link rel="alternate" hreflang="hi" href="https://seogrinder.com/hi/blog/seo-audit-checklist-hindi">
<link rel="alternate" hreflang="it" href="https://seogrinder.com/it/blog/checklist-audit-seo">
<link rel="alternate" hreflang="ja" href="https://seogrinder.com/ja/blog/seo-chekkurisuto">
<link rel="alternate" hreflang="ko" href="https://seogrinder.com/ko/blog/seo-chekeuliseuteu-jeomgeom">
<link rel="alternate" hreflang="nl" href="https://seogrinder.com/nl/blog/seo-audit-checklist-uitvoeren">
<link rel="alternate" hreflang="pl" href="https://seogrinder.com/pl/blog/checklista-seo-audyt">
<link rel="alternate" hreflang="pt" href="https://seogrinder.com/pt/blog/checklist-de-auditoria-seo">
<link rel="alternate" hreflang="x-default" href="https://seogrinder.com/en/blog/seo-audit-checklist">

Che cosa mostra questo blocco:

  • Un solo metodo. I tag stanno nell’head dell’HTML. Queste pagine non inviano hreflang in un header HTTP, e sitemap.xml non ha voci xhtml:link. Google definisce equivalenti i tre metodi e non vede alcun vantaggio nell’usarli tutti.
  • Codici lingua semplici. Dodici codici, nessuna regione, perché di ogni lingua esiste una sola versione dell’articolo.
  • La pagina elenca se stessa. Nella versione italiana la riga it è l’indirizzo della pagina stessa. Tutte e dodici le versioni portano le stesse righe.
  • Tag semplici. Stanno nel <head>, un <link> ciascuno, senza attributi aggiuntivi. Google chiede un head ben formato e sconsiglia di mescolare hreflang con attributi come media nello stesso tag.
  • Il canonical punta a se stesso. Ogni versione indica come canonical il proprio indirizzo, non quello inglese: coerente con l’affermazione di Google secondo cui le versioni tradotte non sono duplicati.
  • Un indirizzo separato per lingua, nessun reindirizzamento automatico. /de/blog/seo-audit-checkliste ha uno slug tedesco. Google consiglia indirizzi diversi per lingua invece di cookie o impostazioni del browser e sconsiglia di reindirizzare i visitatori in base alla lingua presunta. Una richiesta alla pagina inglese con Accept-Language: de risponde 200 e resta lì (verificato il 5 novembre 2026). Ogni articolo ha inoltre un menu delle lingue con semplici link alle altre versioni.

Come è costruito. Ogni file di articolo indica il suo argomento in una riga group. Il codice del blog raccoglie tutti i file con lo stesso group, stampa un <link> per ogni membro (prima l’inglese, poi in ordine di codice lingua) e imposta x-default sulla versione inglese. Una lingua senza file non ottiene nessuna riga: un argomento che esiste solo in inglese e in tedesco porta quindi tre righe, en, de e x-default. Google ammette insiemi incompleti: «you can omit some languages on some pages; Google will still process the ones that point to each other» (Google), cioè puoi omettere alcune lingue su alcune pagine, e Google elabora comunque quelle che si rimandano a vicenda.

Come abbiamo contato. Questo ciclo legge tutti gli indirizzi degli articoli dalla sitemap e conta le righe hreflang di ogni pagina:

for u in $(curl -sS https://seogrinder.com/sitemap.xml | grep -o 'https://seogrinder.com/[a-z][a-z]/blog/[^<]*'); do
  curl -sS "$u" | grep -c '<link rel="alternate" hreflang'
done | sort | uniq -c

Il 5 novembre 2026 ha stampato 408 13: 408 pagine con 13 righe (dodici lingue più x-default). Poi un piccolo script ha scaricato le stesse 408 pagine e ha confrontato i tag: ogni pagina elenca se stessa, ogni indirizzo elencato risponde 200 e rimanda alla pagina, e x-default coincide con l’indirizzo inglese. Il nostro controllo del blog (check:blog) verifica queste regole per ogni pagina degli articoli a ogni modifica del blog.

A che cosa serve x-default?

Google definisce x-default «recommended for specifying the fallback page for users whose language settings don’t match any of your site’s localized versions» (Google): la pagina di ripiego per chi ha impostazioni di lingua che non corrispondono a nessuna versione. Non è obbligatorio.

Google aggiunge che qualsiasi pagina può portare questo valore, ma che è stato «designed for language selector pages and so it will work best with those», cioè pensato per le pagine di scelta della lingua. Per gli articoli non abbiamo una pagina di scelta, quindi la nostra pagina di ripiego è la versione inglese dello stesso articolo; per le pagine indice del blog è /en/blog. È una nostra decisione, non una regola.

Errori comuni: 5 errori hreflang dalla documentazione di Google

La pagina di Google ha una sezione «Common Mistakes» con tre voci, e le linee guida indicano altri due requisiti con «must». Sono i cinque qui sotto. Google non dice quanto spesso ognuno si presenti. Solo due hanno una conseguenza dichiarata: i link di ritorno mancanti (i tag vengono ignorati) e i codici di regione riservati (quella parte viene ignorata). Per gli altri c’è solo la regola.

Se la pagina X nomina la pagina Y, la pagina Y deve nominare la pagina X. La regola nelle parole di Google: «If two pages don’t both point to each other, the tags will be ignored» (Google), cioè se due pagine non si rimandano a vicenda, i tag vengono ignorati. Il motivo lo dà Google stesso: un altro sito non deve poter dichiarare la propria pagina come versione alternativa della tua. Si risolve stampando lo stesso blocco di link su ogni versione, da un’unica fonte. Se un insieme completo è difficile da mantenere, Google consente di omettere alcune lingue su alcune pagine, ma dice che le lingue aggiunte di recente dovrebbero rimandare nei due sensi alla versione originale o dominante.

2. Una versione che non elenca se stessa

La linea guida per tutti i metodi: «Each language version must list itself as well as all other language versions» (Google). Per il metodo HTML significa un link per ogni variante, «including itself», con lo stesso insieme su ogni versione. Google non dice che cosa succede senza l’auto-riferimento: trattalo come un errore e aggiungi la riga.

3. Codici lingua non validi

La prima parte del valore è una lingua in formato ISO 639-1, seguita facoltativamente da una regione. Google scrive: «Specifying the region alone is not valid». Nell’esempio del Belgio be è sbagliato perché è il codice della lingua bielorussa; quelli giusti sono de-BE, nl-BE e fr-BE. I codici che non compaiono in queste norme, come es-419, non sono supportati (i codici di scrittura come zh-Hans sono ammessi). Maiuscole e minuscole non contano, ma la regione si scrive in maiuscolo secondo la norma.

4. Codici di regione non validi

La regione deve essere un codice ISO 3166-1 Alpha 2 assegnato ufficialmente. Per i codici riservati ad altro, «Google Search ignores that part of the annotation», cioè Google ignora quella parte dell’indicazione. Google cita EU, UN e UK come privi di effetto. Per il Regno Unito il codice è GB, come nell’esempio di Google stessa en-GB.

5. Indirizzi relativi o incompleti

«Alternate URLs must be fully-qualified, including the transport method (http/https)» (Google): gli indirizzi alternativi devono essere completi, protocollo incluso. L’esempio di Google: https://example.com/foo, non //example.com/foo né /foo.

Come controllare hreflang

A mano: esegui il comando curl qui sopra su una delle tue pagine e verifica che la pagina elenchi se stessa. Poi esegui lo stesso comando su ogni indirizzo dell’output e cerca la prima pagina: è il test dei link di ritorno. Google elenca anche strumenti di test di terzi e dice che «are not maintained or checked by Google», cioè non sono gestiti né controllati da Google.

Con SEOgrinder, che è il nostro strumento e che costruiamo noi: analizza una pagina, apri la sezione «Pagina su Google» e cerca la scheda «Lingue (hreflang)». Controlla i codici, l’auto-riferimento, x-default, se le destinazioni rispondono e se rimandano indietro. Quando tutto è a posto mostra una sola riga; altrimenti elenca ogni controllo con il suo esito, e i problemi finiscono nell’elenco delle attività.

ErroreChe cosa mostra SEOgrinder (testo di esempio)
1. Link di ritorno mancanti«2 destinazioni non rimandano indietro»
2. Nessun auto-riferimento«La pagina non rimanda a se stessa»
3 e 4. Codici non validi«1 codice lingua non valido» (lingua e regione vengono confrontate con le norme citate da Google)
5. Indirizzi relativiNessuna riga propria: SEOgrinder risolve un indirizzo relativo rispetto alla pagina prima di controllare, quindi cerca questo errore nel codice sorgente

Due limiti. Scarica al massimo dieci destinazioni per pagina; sulle nostre pagine con 13 voci ne controlla dieci e lo dice («10 voci su 13 scaricate e verificate»). E giudica la pagina che inserisci; per un intero sito percorri gli indirizzi con un ciclo, come sopra.

Domande frequenti

Mi serve hreflang se ogni lingua ha un indirizzo proprio?

Non è obbligatorio. Google può trovare le versioni anche senza, ma dice che di solito è meglio indicarle in modo esplicito.

hreflang migliora il mio posizionamento?

La pagina di Google non lo afferma. Descrive lo scopo come indirizzare gli utenti alla versione più adatta per lingua o regione. Nessuno può promettere una posizione.

Quale dei tre metodi devo usare?

Per Google sono equivalenti, e usarne più d’uno insieme non porta vantaggi. Google osserva che i tag HTML vanno bene per i siti senza sitemap o senza la possibilità di gestire gli header, e che l’header HTTP serve per i file che non sono HTML, come i PDF. Noi usiamo i tag HTML.

Il prossimo passo

Esegui il comando curl su una delle tue pagine e verifica che elenchi se stessa e che una destinazione rimandi indietro. Poi analizza la pagina con SEOgrinder, apri «Pagina su Google», correggi la prima riga della scheda «Lingue (hreflang)» che segnala un problema e premi Ricontrolla. Per il quadro generale, la nostra checklist audit SEO mostra dove si colloca hreflang tra otto gruppi di controlli.

Per approfondire

Altri articoli del blog