Hreflang: cos'è, come si scrive e gli errori da evitare
Capitolo 3 di 6 della guida SEO tecnica
Hreflang con esempi di codice per head, sitemap e HTTP: x-default, canonical, codici validi, errori comuni e come verificarlo oggi. Leggi la guida.
Fondatore di SEO SRL
Pubblicato il Aggiornato l'12 min di lettura

L'hreflang è un'annotazione HTML che collega le versioni della stessa pagina in lingue o per paesi diversi e indica a Google quale mostrare a ciascun utente; non serve a far riconoscere la lingua del testo.
Indice dei contenuti (13 sezioni)
- Cos’è l’hreflang (e cosa non fa)
- Quando serve l’hreflang
- Come si scrive il valore hreflang
- I tre metodi per inserirlo, con il codice
- x-default: la pagina per tutti gli altri
- Hreflang e canonical: come convivono
- Gli errori più comuni (e come correggerli)
- Hreflang su WordPress e sugli altri CMS
- Come verificare l’hreflang
- Oltre l’hreflang: cosa serve a un sito multilingua
- Checklist hreflang
- Domande frequenti
- Fonti
L’hreflang è un’annotazione HTML che collega tra loro le versioni della stessa pagina in lingue diverse, o per paesi diversi, e dice a Google a quale pubblico è rivolta ciascuna. Serve a far comparire nei risultati la versione giusta per ogni utente: l’italiano a chi cerca in italiano, la pagina per la Svizzera a chi cerca dalla Svizzera.
È anche uno dei tag che si sbagliano più spesso. In uno studio di Ahrefs su 374.756 domini che usano l’hreflang, il 67% aveva almeno un problema (Ahrefs, 2023). Qui trovi come si scrive, i tre modi per inserirlo con il codice completo, gli errori più comuni e come controllarlo ora che Search Console non lo segnala più.
Cos’è l’hreflang (e cosa non fa)

L’hreflang è un attributo che si usa insieme a rel="alternate". In ogni versione della pagina dichiari: “questa pagina esiste anche in queste lingue, a questi indirizzi”. Google usa l’insieme di queste dichiarazioni per scegliere quale URL mostrare a chi cerca (Google Search Central).
Tre cose che l’hreflang non fa, e che spesso gli si attribuiscono:
- Non dice a Google in che lingua è il testo. Google la riconosce con i propri algoritmi e dichiara di non usare per questo né l’hreflang né l’attributo
lang. - Non fa posizionare una pagina in un paese. Aiuta a sostituire, nei risultati, una versione con un’altra. Se la pagina tedesca non si posiziona in Germania, l’hreflang non la fa salire.
- Non risolve una traduzione scarsa. Una pagina tradotta in automatico e mai rivista resta una pagina scarsa, in qualunque lingua.
Quando serve l’hreflang
Serve quando hai la stessa pagina in più versioni e vuoi che ogni utente veda la sua:
- siti multilingua: la stessa pagina in italiano, inglese, tedesco;
- siti multiregionali nella stessa lingua: inglese per Regno Unito e Stati Uniti, italiano per Italia e Svizzera, con prezzi, valute o spedizioni diverse. È il caso in cui serve di più, perché le pagine sono quasi identiche e Google rischia di trattarle come duplicati;
- siti con template tradotto e contenuto principale non tradotto (per esempio forum o recensioni degli utenti): anche qui le versioni sono simili e l’hreflang aiuta.
Non serve a un sito in una sola lingua per un solo mercato. E non è obbligatorio: senza annotazioni Google prova a capire da solo quale versione mostrare. Il punto è che a volte sbaglia, e l’utente svizzero si ritrova sulla pagina italiana con i prezzi in euro.
Come si scrive il valore hreflang

Il valore ha una parte obbligatoria e due facoltative, separate da un trattino:
| Parte | Standard | Obbligatoria | Esempi |
|---|---|---|---|
| Lingua | ISO 639-1 | Sì | it, en, de |
| Scrittura | ISO 15924 | No | zh-Hant, zh-Hans |
| Paese | ISO 3166-1 Alpha 2 | No | it-IT, it-CH, en-GB |
Maiuscole e minuscole sono indifferenti. Gli errori di valore più frequenti, tutti esclusi dalla documentazione di Google:
- Solo il paese:
hreflang="ch"non vuol dire Svizzera, vuol dire lingua chamorro. Google non deduce la lingua dal paese. - Codici riservati:
en-UKè sbagliato, il Regno Unito èGB. AncheEUeUNnon valgono: Google ignora quella parte. - Codici regionali non supportati, come
es-419per l’America Latina. - Underscore al posto del trattino:
it_ITè il formato di alcuni CMS, non quello dell’hreflang.
I tre metodi per inserirlo, con il codice
Google considera equivalenti i tre metodi. Usarne più di uno insieme non dà vantaggi e moltiplica le cose da tenere allineate: scegline uno. In tutti e tre valgono le stesse due regole:
- ogni versione elenca tutte le versioni, compresa sé stessa (autoreferenza);
- i collegamenti sono reciproci: se la pagina italiana indica quella inglese, quella inglese deve indicare quella italiana. Senza link di ritorno, Google può ignorare le annotazioni.
Gli URL devono essere assoluti, con https://. Possono stare su domini o sottodomini diversi.
1. Nell’head della pagina
È il metodo più usato. Lo stesso blocco, identico, va nell’head di tutte le versioni:
<link rel="alternate" hreflang="it" href="https://www.esempio.it/noleggio-bici/">
<link rel="alternate" hreflang="it-CH" href="https://www.esempio.it/ch/noleggio-bici/">
<link rel="alternate" hreflang="en" href="https://www.esempio.it/en/bike-rental/">
<link rel="alternate" hreflang="de" href="https://www.esempio.it/de/fahrradverleih/">
<link rel="alternate" hreflang="x-default" href="https://www.esempio.it/en/bike-rental/">
Qui c’è una versione italiana generica (it), una per la Svizzera italiana (it-CH), una inglese, una tedesca e una di riserva per tutti gli altri. Il blocco deve stare in un head valido: un’immagine o un iframe inseriti prima, magari dentro un noscript, possono far ignorare tutto quello che segue.
2. Nella sitemap XML
È il metodo più comodo quando le lingue o le pagine sono tante, perché tieni tutto in un file e non appesantisci l’HTML. Serve il namespace xhtml, e ogni URL elenca tutte le varianti, sé stesso compreso:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://www.esempio.it/noleggio-bici/</loc>
<xhtml:link rel="alternate" hreflang="it" href="https://www.esempio.it/noleggio-bici/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://www.esempio.it/en/bike-rental/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.esempio.it/en/bike-rental/"/>
</url>
<url>
<loc>https://www.esempio.it/en/bike-rental/</loc>
<xhtml:link rel="alternate" hreflang="it" href="https://www.esempio.it/noleggio-bici/"/>
<xhtml:link rel="alternate" hreflang="en" href="https://www.esempio.it/en/bike-rental/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.esempio.it/en/bike-rental/"/>
</url>
</urlset>
Gli elementi xhtml:link non contano nel limite di 50.000 URL per file. Tutto il resto delle regole della sitemap vale anche qui: solo URL canonici, con risposta 200.
3. Nell’intestazione HTTP
Serve per i file che non hanno un head, come i PDF. Il server risponde con un’intestazione Link che elenca tutte le versioni:
Link: <https://www.esempio.it/listino.pdf>; rel="alternate"; hreflang="it",
<https://www.esempio.it/en/price-list.pdf>; rel="alternate"; hreflang="en"
x-default: la pagina per tutti gli altri
Il valore x-default indica la pagina da mostrare quando la lingua o il paese dell’utente non corrispondono a nessuna versione. Di solito è un selettore di lingua, oppure la versione inglese se è quella che funziona meglio per un pubblico internazionale.
Non è obbligatorio, ma è l’assenza più comune: nello studio di Ahrefs il 56,3% dei domini aveva pagine senza x-default. Il mio consiglio è metterlo sempre. Costa una riga, e decide cosa vede un utente brasiliano che cerca il tuo brand quando il portoghese non ce l’hai.
Hreflang e canonical: come convivono
È il punto in cui si fanno i danni maggiori. Le regole:
- ogni versione linguistica ha il proprio canonical autoreferenziale;
- gli hreflang puntano solo a URL canonici, indicizzabili e con risposta 200;
- il canonical di una pagina tradotta non deve mai puntare a un’altra lingua. Se la pagina tedesca ha il canonical verso quella italiana, stai dicendo a Google che la tedesca è un duplicato da non mostrare, e gli hreflang perdono senso.
<!-- In https://www.esempio.it/de/fahrradverleih/ -->
<link rel="canonical" href="https://www.esempio.it/de/fahrradverleih/">
<link rel="alternate" hreflang="it" href="https://www.esempio.it/noleggio-bici/">
<link rel="alternate" hreflang="de" href="https://www.esempio.it/de/fahrradverleih/">
<link rel="alternate" hreflang="x-default" href="https://www.esempio.it/noleggio-bici/">
Un caso particolare sono le versioni nella stessa lingua per paesi diversi (en-GB ed en-US) con testo quasi identico. Google può scegliere una sola canonica tra le due. Con gli hreflang corretti, però, mostra comunque l’URL giusto a ciascun paese: è uno dei casi in cui l’annotazione lavora di più.
Gli errori più comuni (e come correggerli)
I dati dello studio Ahrefs del 2023 danno un’idea di dove si sbaglia. Li riporto con la correzione:
| Errore | Domini con il problema | Correzione |
|---|---|---|
| Manca x-default | 56,3% | Aggiungi una riga x-default verso il selettore o la versione principale |
| Manca l’autoreferenza | 18% | Ogni pagina deve elencare anche sé stessa |
| Hreflang verso pagine con redirect o non funzionanti | 16,9% | Punta all’URL finale, che risponde 200 |
| Manca il link di ritorno | 15,3% | Rendi i collegamenti reciproci in tutte le versioni |
| Hreflang verso URL non canonici | 8% | Usa lo stesso URL indicato nel canonical |
| Valori sbagliati | 4,6% | Lingua ISO 639-1 obbligatoria, paese ISO 3166-1 facoltativo, trattino |
| Lingua dichiarata diversa da quella della pagina | 3,2% | Controlla le corrispondenze nel plugin o nel template |
| Più pagine per la stessa lingua | 2,5% | Un solo URL per ogni valore hreflang |
A questi aggiungo due errori di impostazione che nessun crawler segnala:
- Redirect automatici in base alla lingua o alla posizione. Google li sconsiglia: Googlebot scansiona di solito da indirizzi statunitensi e senza una lingua preferita, e rischia di non vedere mai le altre versioni. Meglio URL separati e un selettore di lingua visibile, magari con un banner che suggerisce la versione giusta senza imporla (Google, siti multiregionali e multilingue).
- La lingua nei parametri o nei cookie. Ogni versione deve avere un URL proprio (sottocartella, sottodominio o dominio). Se la lingua cambia con un cookie sullo stesso URL, per Google esiste una sola versione.
Hreflang su WordPress e sugli altri CMS

WordPress da solo non gestisce più lingue: l’hreflang lo inserisce il plugin multilingua (WPML, Polylang, TranslatePress e simili), in base alle traduzioni collegate tra loro. Shopify, con i mercati e le lingue attivate, lo genera in automatico; molti altri CMS fanno lo stesso con il modulo delle lingue.
Il problema dei CMS non è inserire il tag, ma inserirlo su pagine che non hanno ancora la traduzione. Se una pagina esiste solo in italiano, non deve comparire negli hreflang delle altre lingue. Plugin configurati male indicano a volte la home della lingua come alternativa di ogni pagina non tradotta: è un collegamento sbagliato, meglio nessun collegamento.
Come verificare l’hreflang
Search Console aveva un report “Targeting internazionale” che mostrava gli errori hreflang. Google lo ha rimosso il 22 settembre 2022, insieme all’impostazione del paese di destinazione (Guida di Search Console). Gli hreflang restano supportati, ma oggi i controlli vanno fatti in altro modo.
- Codice sorgente di ogni versione (Ctrl+U, cerca “hreflang”): il blocco deve essere identico in tutte, con l’autoreferenza.
- Controllo URL di Search Console sulla versione straniera: verifica che la canonica scelta da Google sia la pagina stessa e non quella in un’altra lingua.
- Crawler come Screaming Frog o i site audit dei tool SEO: controllano reciprocità, codici, redirect e URL non canonici su tutto il sito. Su siti grandi è l’unico modo serio.
- Strumenti di test di terze parti, citati anche da Google, per controllare una pagina alla volta.
- Prestazioni per paese in Search Console: se la pagina italiana prende impressioni in Svizzera mentre esiste la versione
it-CH, qualcosa non funziona.
Oltre l’hreflang: cosa serve a un sito multilingua

L’hreflang sistema la parte tecnica. Il resto è lavoro di mercato:
- Parole chiave per ogni lingua. Le persone non cercano le traduzioni delle tue keyword: un tedesco cerca “Fahrrad mieten”, non “noleggio bici” tradotto. La ricerca delle parole chiave va rifatta per ogni mercato.
- Traduzioni rivedute da chi conosce la lingua, con URL tradotti quando ha senso.
- Struttura chiara degli URL: sottocartelle (
/en/), sottodomini o domini nazionali. Le sottocartelle sono la soluzione più semplice da gestire; i domini nazionali danno il segnale geografico più forte ma moltiplicano il lavoro. - Attributo
langcorretto nel taghtml. Google non lo usa per la lingua, ma serve all’accessibilità e ad altri motori: Bing, nelle sue indicazioni, cita come segnali di lingua il metacontent-languagee l’attributolang.
Checklist hreflang
- Ogni versione ha un URL proprio, raggiungibile senza cookie o redirect automatici.
- Ogni pagina elenca tutte le versioni, compresa sé stessa, con URL assoluti.
- I collegamenti sono reciproci in tutte le versioni.
- Valori corretti: lingua ISO 639-1 obbligatoria, paese ISO 3166-1 facoltativo (
GB, nonUK), trattino. - C’è un
x-default. - Gli hreflang puntano solo a URL canonici, con risposta 200.
- Ogni versione ha il canonical verso sé stessa, mai verso un’altra lingua.
- Un solo metodo (head, sitemap o HTTP), applicato in modo coerente.
- Le pagine non tradotte non compaiono negli hreflang delle altre lingue.
Gli hreflang sono uno dei controlli fissi del nostro audit SEO per i siti in più lingue, insieme a canonical e indicizzazione delle versioni straniere. La procedura completa è nella guida all’audit SEO; se il sito è ancora da costruire, conviene pensarci in fase di progettazione.
Il tuo sito è in più lingue e non sai se Google mostra la versione giusta in ogni paese? Richiedi l’audit SEO gratuito: controllo a mano hreflang, canonical e indicizzazione delle versioni e ti mando le 5 cose da sistemare per prime, entro 2 giorni lavorativi.
Domande frequenti
L'hreflang è obbligatorio per un sito multilingua?
No, ma è fortemente consigliato. Senza annotazioni Google deve capire da solo quale versione mostrare e può proporre la pagina nella lingua o nel paese sbagliati. Serve soprattutto quando le versioni sono nella stessa lingua per paesi diversi.
Serve davvero l'x-default?
Non è obbligatorio, ma conviene sempre. Indica la pagina da mostrare a chi cerca in una lingua che il sito non ha, di solito un selettore di lingua o la versione inglese. Nello studio Ahrefs del 2023 è l'assenza più comune: 56,3% dei domini.
Meglio l'hreflang nell'head o nella sitemap?
Per Google i metodi sono equivalenti. L'head è il più semplice su siti piccoli; la sitemap è più comoda con molte lingue o molte pagine, perché tiene tutto in un file. L'intestazione HTTP serve per i PDF. Conviene sceglierne uno solo.
Che rapporto c'è tra hreflang e canonical?
Ogni versione linguistica deve avere il canonical verso sé stessa, e gli hreflang devono puntare a URL canonici. Un canonical che punta a una pagina in un'altra lingua dice a Google che la pagina è un duplicato e annulla l'effetto dell'hreflang.
Come si controlla se l'hreflang funziona?
Dal 2022 Search Console non ha più il report Targeting internazionale. Si verifica il codice sorgente di ogni versione, si usa il Controllo URL per vedere quale canonica sceglie Google e, sui siti grandi, un crawler che controlla reciprocità, codici e redirect.
L'hreflang serve anche per Bing?
Le indicazioni ufficiali di Bing sulla lingua, pubblicate nel 2011, citano come segnali il meta content-language e l'attributo lang, non l'hreflang. Non avendo una documentazione più recente da citare, il consiglio prudente è avere sia gli hreflang sia un attributo lang corretto in ogni versione.
Fonti
- Google Search Central, “Informare Google dell'esistenza di versioni localizzate di una pagina”, aggiornata il 24 settembre 2026. developers.google.com/search/docs/specialty/international/localized-versions?hl=it
- Google Search Central, “Gestione dei siti multiregionali e multilingue”. developers.google.com/search/docs/specialty/international/managing-multi-regional-sites?hl=it
- Guida di Search Console, “The International Targeting report is deprecated”. support.google.com/webmasters/answer/12474899?hl=en
- Search Engine Land, “Google Search Console to remove International Targeting report”, 24 agosto 2022. searchengineland.com/google-search-console-to-remove-international-targeting-report-387477
- Ahrefs (Patrick Stox), studio sui problemi hreflang di 374.756 domini, 10 agosto 2023. ahrefs.com/blog/hreflang-study
- Bing Webmaster Blog, “How To Tell Bing Your Website's Country and Language”, marzo 2011. blogs.bing.com/webmaster/March-2011/How-To-Tell-Bing-Your-Website-s-Country-and-Langua
Tutte le pagine sono state aperte e verificate l’8 ottobre 2026.



