L'attributo lang in HTML
Cosa fa l'attributo lang in HTML, perché Google lo ignora per il rilevamento della lingua mentre Bing lo usa, come differisce da hreflang, e perché conta ancora per l'accessibilità e per il prompt di traduzione automatica del browser.
Lingue
1 segnale di evidenza in questa pagina
- Strumento live correlatoOn-Page SEO Checker
L'attributo lang in HTML — impostato sull'elemento radice come <html lang="en"> (o una variante regionale come en-US) — dichiara la lingua naturale del contenuto di QUESTO documento usando un tag BCP 47. Non è la stessa cosa di hreflang: lang descrive la pagina in cui si trova; hreflang dichiara URL in lingue alternative per altre pagine. Google è categorico nell'affermare che ignora lang per il rilevamento della lingua ('non lo usiamo affatto… quasi sempre sbagliato' — Mueller); usa invece algoritmi basati sul contenuto. Bing è l'opposto: il suo Webmaster Blog del 2011 nomina <html lang> come segnale di posizione del documento di riserva, dietro al meta tag content-language. Indipendentemente dal peso nei motori di ricerca, lang è un attributo di accessibilità obbligatorio (WCAG 3.1.1) — guida la pronuncia dello screen reader e il prompt di traduzione automatica del browser, e 'lingua del documento mancante' è ancora uno dei primi sei errori nel WebAIM Million. L'unica eccezione di Google: etichettare blocchi tradotti automaticamente con lang="es-x-mtfrom-en". Imposta un valore valido, mantienilo coerente con hreflang, e non lasciare un lang="en" di default su contenuti non in inglese.
TL;DR — L’attributo HTML
lang— illang="en"nel tag di apertura<html>della tua pagina — dice ai browser e agli screen reader in quale lingua è scritto il contenuto della tua pagina. È facile confonderlo con hreflang, ma sono diversi:langdescrive questa pagina; hreflang punta alle tue altre versioni linguistiche. Google non usalangper rilevare la lingua di una pagina, mentre l’attributo conta ancora per l’accessibilità e per decidere se il browser offre di tradurre una pagina.
Cos’è l’attributo lang
Quasi all’inizio della maggior parte delle pagine web c’è un tag che assomiglia a questo:
<html lang="en">Quel lang="en" è l’attributo HTML lang. Il suo unico compito è dichiarare la
lingua in cui è scritto il contenuto della pagina — en per l’inglese, es per lo spagnolo,
de per il tedesco. Puoi essere più specifico con una regione: en-US per l’inglese americano,
en-GB per l’inglese britannico, pt-BR per il portoghese brasiliano.
È una piccola cosa, ma alcuni sistemi diversi la leggono:
- Gli screen reader la usano per pronunciare correttamente le tue parole — una voce inglese che legge testo francese suona come un nonsenso. Evidence for this claim WCAG 2.2 success criterion 3.1.1 requires the default human language of a page to be programmatically determinable, and W3C lists lang on the html element as a sufficient HTML technique. Scope: WCAG 2.2 Level A language-of-page requirement for HTML documents. Confidence: high · Verified: W3C: Understanding Language of Page
- I browser la usano (insieme al testo effettivo) per decidere se mostrare il messaggio “Tradurre questa pagina?”
- Google per lo più la ignora (maggiori dettagli nella scheda Avanzate).
lang non è hreflang
Questa è la confusione che porta la maggior parte delle persone a una pagina come questa. Ecco la differenza in una riga:
lang= “il contenuto di questa pagina è in questa lingua.” Un valore, impostato sul tuo tag<html>.- hreflang = “ecco gli altri URL che sono le versioni tedesca, spagnola e francese di questa pagina.” Un insieme di link che puntano ad altre pagine.
lang è un’autodescrizione. Hreflang è una mappa verso le tue pagine alternative. Un semplice
sito monolingue ha bisogno di un lang corretto e di nessun hreflang. Se gestisci un
sito multilingue, avrai entrambi — e dovrebbero essere coerenti tra loro.
Quale valore dovresti usare?
Usa un codice lingua reale, non qualcosa di inventato:
- Solo la lingua se non ti interessano le varianti regionali:
en,es,fr. - Lingua più regione se ti interessano:
en-US,en-GB,pt-BR.
Non inventare codici come eng o en-UK (il codice corretto per il Regno Unito è GB,
non UK). E non lasciare il lang="en" predefinito su una pagina il cui contenuto
non è effettivamente in inglese — questo è l’errore più comune in assoluto, e causa
problemi reali con i prompt di traduzione e gli screen reader.
Vuoi la versione più approfondita — esattamente perché Google lo ignora, come lo usa Bing, le regole di accessibilità e la storia della traduzione automatica del browser? Passa alla scheda Avanzate.
TL;DR —
langdichiara la lingua naturale di questo documento (<html lang="en">, o una variante regionale comeen-US) usando un tag BCP 47. È un meccanismo diverso da hreflang, che dichiara URL in lingue alternative — i documenti di Google raggruppano i due come cose che non usa per rilevare la lingua di una pagina. Mueller: “we don’t use that at all… almost always wrong.” (traduzione) «non lo usiamo affatto… quasi sempre sbagliato.» Indipendentemente dal peso nella ricerca, una lingua di pagina determinabile a livello di programma è un requisito di livello A WCAG 3.1.1, e l’attributo HTMLlangè la tecnica standard. Supporta la pronuncia dello screen reader e il prompt di traduzione automatica del browser, e “lingua del documento mancante” è ancora un errore tra i primi sei nel WebAIM Million. L’unica eccezione di Google: etichettare i blocchi tradotti automaticamente conlang="es-x-mtfrom-en". Imposta un valore valido, mantienilo coerente con hreflang e elimina illang="en"di default sulle pagine non in inglese.
Cosa dichiara effettivamente l’attributo lang
L’attributo HTML lang è un attributo globale — tecnicamente può andare su qualsiasi
elemento — ma quello che conta di più sta sulla radice: <html lang="en">. Il suo
valore è un tag lingua BCP 47, o un subtag lingua da solo (en,
es, de) o una coppia lingua-più-regione (en-US, en-GB, pt-BR, zh-Hans).
Ciò che dichiara è ristretto e specifico: il linguaggio naturale del contenuto testuale nel documento su cui è impostato. Non la lingua delle tue pagine alternative, non il paese che stai targettizzando — solo “le parole su questa pagina sono in questa lingua.”
Evidence for this claim The HTML lang attribute specifies an element's language using a valid BCP 47 language tag; on the root html element it establishes the document's default language. Scope: WHATWG HTML language semantics and IETF BCP 47 tag syntax. Confidence: high · Verified: WHATWG: The lang attribute IETF RFC 5646 Evidence for this claim WCAG 2.2 success criterion 3.1.1 requires the default human language of a page to be programmatically determinable, and W3C lists lang on the html element as a sufficient HTML technique. Scope: WCAG 2.2 Level A language-of-page requirement for HTML documents. Confidence: high · Verified: W3C: Understanding Language of PageTre punti di precisione che vale la pena interiorizzare, tratti dalla riferimento MDN:
- Solo valori validi. Un tag BCP 47 — non un codice di tre lettere inventato (
eng), non un nome di lingua completo, e nonen-UK(il subtag di regione per il Regno Unito èGB). I valori non validi vengono trattati come nessun valore. Sintatticamente ben formato non è lo stesso di corretto, né:lang="en"è un tag perfettamente valido che è comunque sbagliato su una pagina francese. La validità è un pavimento, non una garanzia che il valore corrisponda effettivamente al contenuto (più su questo nella trappola del default boilerplate qui sotto). - Vuoto non è lo stesso di assente. Un
lang=""esplicito significa “lingua sconosciuta” — uno stato deliberato. Un attributo mancante genuinamente è un diverso modo di fallimento, e gli strumenti di accessibilità lo segnalano come assente piuttosto che esplicitamente-sconosciuto. - Il valore radice è un default, non un blocco.
<html lang>imposta ciò che ogni discendente eredita a meno che non venga sovrascritto — reimpostalanglocalmente su qualsiasi elemento che contiene un vero cambio di lingua (vedi “Impostalo anche sull’elemento che cambia” sotto). Non confondere questa dichiarazione nel documento con l’header di risposta HTTPContent-Language: quell’header descrive metadati di trasporto sulla risposta, non il documento analizzato, e non è un sostituto perlangquando si tratta di ereditarietà a livello di elemento o accessibilità.
lang vs. hreflang: la confusione, risolta
Se sei arrivato qui da una domanda su hreflang, questa è la sezione che fa per te. Questi due vengono confusi costantemente perché entrambi sono legati alla lingua, entrambi vivono in cima o vicino alla cima del documento, ed entrambi usano codici dall’aspetto simile. Ma fanno lavori non correlati.
L’articolazione più chiara arriva direttamente dalla documentazione di Google su versioni localizzate delle tue pagine, che raggruppa i due insieme proprio per dire che non usa nessuno dei due per il rilevamento:
“Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page; instead, we use algorithms to determine the language.” (traduzione) «Google non usa hreflang o l’attributo lang HTML per rilevare la lingua di una pagina; invece, usiamo algoritmi per determinare la lingua.»
Leggilo attentamente. Google nomina sia lang che hreflang in un fiato — come due
cose separate che non usa per capire in che lingua è una pagina. Rileva
la lingua dal contenuto renderizzato e visibile invece.
Quindi qual è la differenza effettiva?
langè una auto-descrizione: un valore, su<html>(o su qualsiasi elemento), che dice “il contenuto di questo documento è in questa lingua.” Letto da browser, screen reader, correttori ortografici; usato da Bing; ignorato da Google per il rilevamento.- hreflang è una mappa tra pagine: un insieme di annotazioni
<link rel="alternate">(o l’equivalente in sitemap/header) che elenca gli altri URL che sono versioni alternative in lingua/regione di questa pagina, e a quale lingua ciascuno mira. È un segnale di routing che Google usa — per servire la variante URL giusta nei risultati — non un segnale di rilevamento.
Possono e spesso dovrebbero coesistere. Una pagina in spagnolo messicano porta <html lang="es-MX"> che descrive il proprio contenuto e un insieme di tag hreflang che puntano alle
sue versioni sorelle en-US, en-GB e altre. L’implementazione completa di hreflang —
i tre metodi, la regola del collegamento reciproco, la regola autoreferenziale e la
scala di quanto spesso si rompe — è un approfondimento a sé; questo articolo deliberatamente
non la riscrive. L’unica cosa da portare con sé: lang è la metà semplice
di questa coppia (un valore, un elemento, nessuna reciprocità) proprio perché non
porta la complessità delle relazioni tra pagine di hreflang — che John Mueller una volta
ha chiamato “uno degli aspetti più complessi della SEO.” Facile da impostare, però, non è
la stessa cosa che essere comunemente corretto.
The root lang attribute gives one page a BCP 47 language self-description used by browsers and screen readers. Hreflang is a reciprocal cross-page map between alternate URLs, such as en-US and es-MX versions. Google detects a page's language from visible content rather than either annotation, but the lang value should remain accurate and consistent with the hreflang entry for the same URL.
© Patrick Stox LLC · CC BY 4.0 ·
L’attributo lang è un fattore di ranking di Google?
Risposta breve: no, e Google è stato insolitamente diretto al riguardo. La dichiarazione definitiva è quella di John Mueller, riportata da Barry Schwartz su Search Engine Roundtable in Google: We Ignore The HTML lang Attribute. Alla domanda su quanto sia importante dichiarare la lingua di una pagina nell’HTML, Mueller ha detto:
“We don’t use that at all. So we use the hreflang links if you have that if you have different language versions. But the language attribute within the HTML markup is something we don’t use at all. We’ve found that this language markup is something that is almost always wrong. So we tend to ignore that.” (traduzione) «Non lo usiamo affatto. Quindi usiamo i link hreflang se li hai, se hai versioni linguistiche diverse. Ma l’attributo language nel markup HTML è qualcosa che non usiamo affatto. Abbiamo scoperto che questo markup linguistico è quasi sempre sbagliato. Quindi tendiamo a ignorarlo.»
Quel “quasi sempre sbagliato” è la frase chiave. La ragione di Google per ignorare lang
non è “non è importante” — è che il segnale è inaffidabile su scala web.
Le persone lasciano i default boilerplate lang="en" dopo aver localizzato i contenuti;
i template di CMS e framework includono un default che non viene mai aggiornato (il
boilerplate generato da Vue CLI, per esempio, hard-coda lang="en" indipendentemente da ciò
che ci costruisci). Quando un segnale è sbagliato così spesso, la mossa ingegneristica sensata
è smettere di fidarsene e rilevare la lingua direttamente dal contenuto — che è
esattamente ciò che Google dice di fare. Quella citazione del 2016 è vecchia, ma l’attuale (2026)
documento di Search Central citato sopra ristabilisce indipendentemente la stessa politica, quindi trattala
come una guida di lunga data e non ritirata piuttosto che un caso isolato obsoleto.
L’unica eccezione: contenuti tradotti automaticamente
C’è un unico, ristretto punto in cui i documenti di Google si preoccupano di un valore in stile lang.
Se pubblichi contenuti tradotti automaticamente, la
guida sui risultati tradotti
di Google ti chiede di contrassegnare quei blocchi con un formato di valore speciale —
lang="<target>-x-mtfrom-<source>", es. lang="es-x-mtfrom-en" per contenuti
tradotti automaticamente dall’inglese allo spagnolo. Questa è l’eccezione che conferma la
regola: Google ignora lang per la rilevazione generale della lingua, ma questa
convenzione di etichettatura specifica è una che ha definito e legge. (La leva correlata, se vuoi
rinunciare completamente alle funzionalità di traduzione, è la regola notranslate — “To opt
out of all translation features in Google Search, use the notranslate rule, which
can be implemented as a meta tag or an HTTP header,” secondo lo stesso documento.)
Bing usa l’attributo lang?
Sì — ed è qui che lang diventa genuinamente più consequenziale di quanto la storia “Google
lo ignora” suggerisca. La posizione di Bing è l’opposto di quella di Google, ed è
sottovalutata quasi ovunque.
Nel suo post del 2011 sul Webmaster Blog How To Tell Bing Your Website’s Country and Language, Bing espone un ordine di priorità dei segnali di “posizione del documento” che usa per la rilevanza. L’ordine, dall’alto verso il basso:
- Il meta tag
content-languagenel<head>(<meta http-equiv="content-language" content="en-us">). - L’attributo
<html lang="en-us">, poi l’attributo<title lang="en-us">, come fallback — “l’ordine di priorità per questi tag è:<meta>,<html>,<title>.” - ccTLD.
- Reverse-IP lookup — usato solo quando i segnali più forti sono inconcludenti.
Il consiglio di Bing è di sceglierne uno ed essere coerenti: “It’s best that you use one
option, instead of multiple options here.” Quindi, a differenza di Google, Bing usa esplicitamente
<html lang> come segnale di targeting reale (anche se di priorità inferiore). Per un sito con
traffico significativo da Bing, questo cambia l’azione consigliata: imposta lang
correttamente e considera di aggiungere anche un meta tag content-language corrispondente.
Questo chiude anche il cerchio con il lato hreflang: Bing usa a malapena
hreflang come fa Google — content-language più lang è il meccanismo parallelo di Bing.
Perché l’attributo lang è importante comunque: accessibilità
Anche mettendo da parte del tutto la ricerca, lang merita il suo posto. È un attributo di
accessibilità obbligatorio — il Criterio di Successo WCAG 3.1.1 (Livello A) richiede che la
lingua umana predefinita di ogni pagina sia determinabile a livello di programma, il che in
pratica significa un <html lang> valido. Un criterio separato, 3.1.2, copre la marcatura dei
cambi di lingua all’interno di una pagina.
Gli effetti a valle sono concreti e ben documentati (Adrian Roselli’s
On Use of Lang Attribute
cataloga molti): gli screen reader usano lang per scegliere il motore di pronuncia corretto
e la voce (il motore fonetico di JAWS, il cambio automatico di voce di VoiceOver), il CSS
hyphens: auto dipende da esso, il comportamento di spellcheck si basa su di esso, il
rendering delle virgolette e la selezione predefinita dei font CJK lo seguono, e i display
Braille si comportano diversamente con esso. Esattamente come ciascuno di questi si manifesta
varia a seconda dello screen reader, del browser e della voce installata — i test di Roselli
stessi mostrano che JAWS e VoiceOver non si comportano in modo identico — quindi tratta un
valore lang corretto come abilitazione del comportamento giusto, non come garanzia di
un’esperienza identica su ogni stack di tecnologie assistive.
E non è un problema risolto. Secondo l’attuale rapporto
WebAIM Million, “missing document
language” si attesta al 13,5% delle home page — il sesto errore di accessibilità
automatizzato più comune sul web. Il tasso sta migliorando (in calo dal 15,8%
dell’anno precedente, e dal 17,1% e 18,6% prima ancora), ma “un problema grande e in
shrink” è comunque un problema. Gli strumenti di Google riflettono questa impostazione: i
controlli html-has-lang e html-lang-valid di Lighthouse vivono nella categoria
Accessibilità, non in quella SEO — un chiaro indizio che anche gli strumenti per sviluppatori
di Google classificano lang come una questione di a11y, non di ranking. Questi controlli si
basano sulla regola axe-core con lo stesso nome di Deque,
che classifica un lang mancante come problema “Serious” di Livello A WCAG 2,0/2.1.
Comportamento del browser: il prompt di traduzione automatica
C’è un altro comportamento visibile che lang governa: il prompt “Translate this
page?” del browser. Chrome (e altri) valutano lang insieme all’analisi effettiva del testo
visibile quando decidono se offrire la traduzione. Un valore errato o mancante può
fallire in entrambe le direzioni — offrendo falsamente di tradurre una pagina che è già
nella lingua del lettore, o non offrendola su una pagina genuinamente straniera.
L’esempio reale e vivido è quello di Manuel Matuzovic
the lang attribute: browsers telling lies, telling sweet little lies:
il broadcaster austriaco ORF.at ha pubblicato contenuti in tedesco con lang="en", quindi
il traduttore automatico di Chrome ha trattato il testo tedesco come inglese e lo ha “tradotto”,
trasformando il nome del distretto viennese “Liesing” nella parola inglese “lies.” Questa è
trappola del default boilerplate che produce un bug visibile all’utente — esattamente la classe di
problema che Mueller descriveva con “quasi sempre sbagliato”.
Come impostarlo correttamente
- Usa un tag BCP 47 valido. Solo il subtag della lingua (
en,es,fr) se non hai bisogno di distinzioni regionali; lingua-regione (en-US,en-GB,pt-BR) se invece ne hai bisogno. Prendi i codici dall’IANA Language Subtag Registry; non inventarli, e ricordaGB, nonUK. - Impostalo anche sull’elemento che cambia. Per una frase straniera incorporata in
una pagina altrimenti monolingue, reimposta
langlocalmente:<span lang="fr">c'est la vie</span>. I discendenti senza impostazione ereditano illangdell’antenato più vicino, quindi il valore radice copre tutto ciò che non sovrascrivi. - Elimina il default boilerplate. Il
lang="en"che il tuo template o CMS ha fornito è corretto solo se il tuo contenuto è effettivamente in inglese. Questo è il fallimento che Mueller ha evidenziato e il bug ORF.at in miniatura — controllalo. - Mantieni coerenti lang e hreflang. Se il
langdi una pagina dicees-MXma la sua annotazione hreflang per lo stesso URL diceen, c’è una discrepanza. È esattamente il problema “Hreflang e HTML lang mismatch” che ho documentato in Ahrefs’ hreflang guide — dove l’ho detto chiaramente: “Google doesn’t use the HTML language attribute, but other search engines and browsers do. It’s important to keep these two attributes consistent with one another.” (traduzione) «Google non usa l’attributo linguistico HTML, ma altri motori di ricerca e browser lo usano. È importante mantenere questi due attributi coerenti tra loro.» Google ignora la partelangdi quel confronto, ma una discrepanza segnala comunque che qualcosa è configurato male — ed è per questo che gli strumenti di audit del sito la segnalano.
Miti comuni
- “Un
langcorretto migliorerà il mio posizionamento su Google.” No. Google afferma di non usare affattolangper il rilevamento della lingua. Può essere importante per Bing e aiutare indirettamente tramite accessibilità e comportamento di traduzione, ma un beneficio diretto per il posizionamento su Google non è supportato. - “
lange hreflang sono sostanzialmente la stessa cosa.” No —langdescrive la pagina su cui si trova; hreflang punta ad altri URL. Una pagina può avere unlangcorretto e nessun hreflang, oppure un hreflang corretto e unlangsbagliato. - “Nessun motore di ricerca si interessa a
lang.” Bing lo fa esplicitamente (come fallback dietrocontent-language). Per qualsiasi sito con traffico reale da Bing, questa non è una situazione “a nessuno importa”. - “Lasciare il default
lang="en"è innocuo se il mio contenuto non è in inglese.” È quasi parola per parola il fallimento che Mueller ha chiamato “quasi sempre sbagliato,” ed è ciò che innesca prompt di traduzione errati e pronunce errate dello screen reader. - “Un
langcorretto dà un aumento del 22% del CTR” / “I crawler AI elaborano le pagine con lang-tag il 40% più velocemente.” Queste cifre specifiche circolano su una manciata di blog di marketing SEO senza uno studio, una metodologia o una fonte primaria rintracciabile. Non ho potuto confermare nessuna delle due contro alcuna dichiarazione ufficiale o dato di prima parte — trattale come il tipo di folklore sicuro di sé e infondato che si accumula attorno a argomenti tecnici poco controllati. - “Un
lang=""vuoto è uguale a non averlo.” No — un valore vuoto esplicito significa “lingua sconosciuta,” uno stato distinto da un attributo realmente assente.
Dove si colloca
Questo è l’approfondimento a livello di attributo del sottocluster HTML SEO — il fratello
del trattamento a livello di elemento di <article>, <nav> e <main> nell’articolo
sull’HTML semantico, e dell’hub HTML-SEO più ampio che li sovrasta. Per la storia completa
del targeting cross-page — i tre metodi di implementazione, le regole reciproche
e quanto spesso i cluster si rompono su larga scala — l’approfondimento su hreflang è il posto giusto;
il compito di questo articolo è solo tenere distinti i due concetti nella tua testa.
Riepilogo AI
Una sintesi della versione Advanced:
langdichiara la lingua di questo documento (<html lang="en">, o una variante regionale comeen-US) usando un tag BCP 47. È un’autodescrizione, non un meccanismo di targeting o routing.- Non è hreflang. La documentazione di Google raggruppa entrambi come cose che non
usa per il rilevamento della lingua: “Google doesn’t use hreflang or the HTML
lang attribute to detect the language of a page… we use algorithms.”
langdescrive la pagina su cui si trova; hreflang punta a URL in altre lingue. - Google ignora
langper il rilevamento — Mueller: “we don’t use that at all… almost always wrong,” perché i default di boilerplate/CMS lo rendono inaffidabile su larga scala. Un’eccezione: etichettare i blocchi tradotti automaticamente conlang="es-x-mtfrom-en". - Bing fa l’opposto: il suo Webmaster Blog del 2011 indica
<html lang>come segnale di fallback per la posizione del documento, dietro il meta tagcontent-language(ordine: meta > html > title). Per il traffico da Bing, impostalangcorrettamente. - L’accessibilità è la posta in gioco reale: WCAG 3.1.1 lo richiede; guida
la pronuncia dello screen reader,
hyphens: auto, il controllo ortografico e i font CJK. “Missing document language” è ancora ~13,5 % delle home page — un fallimento tra i primi sei del WebAIM Million, anche se in calo. - I browser lo usano per il prompt di traduzione automatica — un valore errato causa malfunzionamenti (il
bug ORF.at
lang="en"su pagina tedesca che “traduceva” un nome di distretto in “lies”). - Fallo bene: tag BCP 47 valido (
GB, nonUK), reimpostalangsu frasi straniere incorporate, elimina illang="en"di boilerplate su pagine non in inglese e mantienilangcoerente con hreflang (il problema di audit “Hreflang and HTML lang mismatch”).
Documentazione ufficiale
Documentazione di fonti primarie e riferimenti agli standard.
- Localized Versions of your Pages — la frase “Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page”.
- Translated Google Search Results — la convenzione di etichettatura per la traduzione automatica
lang="x-mtfrom-"e l’opt-outnotranslate. - Managing Multi-Regional and Multilingual Sites — contesto adiacente sui segnali di lingua/regione.
Bing / Microsoft
- How To Tell Bing Your Website’s Country and Language (Bing Webmaster Blog, 2011) — l’ordine di priorità per la posizione del documento
meta > html > title. L’URL originale è stato rimosso; il testo è confermato tramite la cattura della Wayback Machine.
Standard / riferimenti tecnici
- MDN — attributo globale
lang— requisito BCP 47, comportamento di stringa vuota vs. assente, ereditarietà, riferimenti WCAG. - W3C Internationalization — Dichiarare la lingua in HTML — linee guida BCP 47 / registro IANA e regole per elementi annidati in contenuti multilingua.
- Deque University — regola axe
html-has-lang— la classificazione WCAG 2,0/2.1 Livello A dietro l’audit di accessibilità di Lighthouse. - WebAIM Million — il sondaggio annuale sull’accessibilità con il tasso di errore “lingua del documento mancante”.
Citazioni dalla fonte
Dichiarazioni pubbliche. Ogni link collega direttamente al passaggio citato dove la pagina sorgente lo supporta.
Google — non usa lang per il rilevamento
- “Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page; instead, we use algorithms to determine the language.” (traduzione) «Google non usa hreflang o l’attributo HTML lang per rilevare la lingua di una pagina; invece, usiamo algoritmi per determinare la lingua.» — Documentazione di Google Search Central. Vai alla citazione
Google — l’eccezione per la traduzione automatica e notranslate
- “To opt out of all translation features in Google Search, use the notranslate rule, which can be implemented as a meta tag or an HTTP header.” (traduzione) «Per disattivare tutte le funzionalità di traduzione in Google Search, usa la regola notranslate, che può essere implementata come meta tag o intestazione HTTP.» — Risultati di ricerca tradotti di Google. Vai alla citazione
John Mueller, Google — “quasi sempre sbagliato”
- “We don’t use that at all. So we use the hreflang links if you have that if you have different language versions. But the language attribute within the HTML markup is something we don’t use at all. We’ve found that this language markup is something that is almost always wrong. So we tend to ignore that.” (traduzione) «Non lo usiamo affatto. Quindi usiamo i link hreflang se li hai, se hai versioni in lingue diverse. Ma l’attributo language nel markup HTML è qualcosa che non usiamo affatto. Abbiamo scoperto che questo markup linguistico è quasi sempre sbagliato. Quindi tendiamo a ignorarlo.» — tramite la copertura di Search Engine Roundtable di un hangout di Google Webmaster del 2016. Leggi la copertura Riportato tramite il resoconto di Barry Schwartz dell’hangout del 2016 (il video originale non è raggiungibile in modo indipendente). La politica di base “non usiamo lang per il rilevamento” è riconfermata in modo indipendente dal documento attuale di Search Central citato sopra, quindi tratto la posizione come ancora accurata nonostante l’età della citazione.
Bing / Microsoft — lang è un segnale di targeting di fallback
- Ordine di priorità per i segnali di posizione del documento: “the priority order for these tags is:
<meta>,<html>,<title>,” con una raccomandazione di “use one option, instead of multiple options here.” (traduzione) «l’ordine di priorità per questi tag è:<meta>,<html>,<title>,» e «usa un’opzione, invece di più opzioni qui.» — Bing Webmaster Blog, “How To Tell Bing Your Website’s Country and Language,” 2011. Citato dal post del 2011 tramite la sua cattura su Wayback Machine — l’URL originale è stato rimosso dall’archivio attuale del blog di Bing, e nessuna dichiarazione più recente di Bing sostituisce il meccanismo che ho potuto trovare. La sua età (2011) è una vera avvertenza; lo cito come di lunga data ma vecchio.
Io — mantenere lang e hreflang coerenti
- “Google doesn’t use the HTML language attribute, but other search engines and browsers do. It’s important to keep these two attributes consistent with one another.” (traduzione) «Google non usa l’attributo language di HTML, ma altri motori di ricerca e browser lo fanno. È importante mantenere questi due attributi coerenti tra loro.» — dalla guida hreflang di Ahrefs, sul problema di audit “Hreflang e HTML lang non corrispondenti”. Leggilo
Quale tag di lingua mi serve davvero?
Una rapida panoramica quando stai guardando una pagina e non sei sicuro di cosa impostare.
1. Devi solo dichiarare in che lingua è questa pagina?
Questo è l’attributo lang. Imposta <html lang="…">. Vai al passaggio 2.
2. Devi distinguere varianti regionali (inglese americano vs. britannico, portoghese brasiliano vs. europeo)?
- No → usa solo il subtag della lingua:
<html lang="en">,lang="es",lang="pt">. - Sì → usa lingua-regione:
<html lang="en-US">,lang="en-GB">,lang="pt-BR">. (La regione èGB, nonUK.)
3. La pagina contiene passaggi in una lingua diversa (una citazione in francese in un articolo in inglese)?
- Sì → avvolgili e reimposta localmente:
<span lang="fr">c'est la vie</span>. Tutto il resto eredita il<html lang>radice. - No → il valore radice copre l’intera pagina.
4. Hai anche la stessa pagina in altre lingue ad altri URL?
- Sì → hai inoltre bisogno di hreflang — un meccanismo separato che punta a
quegli URL alternativi. Mantieni il
langdi ogni pagina coerente con la sua voce hreflang. (Vedi l’approfondimento su hreflang; è un discorso a parte.) - No → hai finito con il solo
lang.
5. Il contenuto è tradotto automaticamente?
- Sì → secondo Google, etichetta il blocco tradotto:
lang="<target>-x-mtfrom-<source>"(es.lang="es-x-mtfrom-en"). - No → un semplice tag BCP 47 è tutto ciò che ti serve.
6. Il traffico da Bing è importante per te?
- Sì → imposta
langcorrettamente e considera un tag metacontent-languagecorrispondente — Bing pesa il meta più di<html lang>. Scegli un valore coerente; non impostarne di contrastanti. - No →
langsu<html>più la correttezza per l’accessibilità è sufficiente.
Cheat sheet dell’attributo lang
lang vs. hreflang — la differenza in una riga
lang | hreflang | |
|---|---|---|
| Dichiara | La lingua del contenuto di questa pagina | Gli altri URL che sono versioni in lingue alternative |
| Forma | Un valore su <html> (o su qualsiasi elemento) | Un insieme di annotazioni <link rel="alternate"> (o sitemap/intestazione) |
| Google lo usa? | No (ignorato per il rilevamento) | Sì — per instradare la variante URL corretta |
| Bing lo usa? | Sì — segnale di targeting di fallback | Appena |
| Accessibilità / prompt di traduzione? | Sì | No |
Chi legge <html lang>
| Consumatore | Cosa ne fa |
|---|---|
| Lo ignora per il rilevamento della lingua (usa invece algoritmi) | |
| Bing | Segnale di targeting di fallback, dietro il meta content-language |
| Screen reader | Pronuncia / selezione della voce (WCAG 3.1.1) |
| Browser | Un input per il prompt di traduzione automatica |
| CSS / controllo ortografico | hyphens: auto, controllo ortografico, virgolette, font CJK |
Valori validi
- Solo lingua:
en,es,fr,de - Lingua-regione:
en-US,en-GB,pt-BR,zh-Hans - Non validi:
eng(tre lettere),en-UK(usaGB), nomi completi di lingua lang=""= “sconosciuto” (uno stato reale, diverso da assente)- Blocco tradotto automaticamente:
lang="es-x-mtfrom-en"
Fatti rapidi
- Mueller:
langè “quasi sempre sbagliato” — Google lo ignora per il rilevamento. - Ordine di priorità di Bing: meta
content-language><html lang>><title lang>. - “Lingua del documento mancante” ≈ 13,5 % delle home page (WebAIM Million, sesto errore più comune, in tendenza al ribasso).
- Il controllo
html-has-langdi Lighthouse si trova sotto Accessibilità, non SEO. - Mantieni
langcoerente con hreflang — il problema di audit “Hreflang e HTML lang non corrispondenti”.
Errori comuni con HTML lang
- Lasciare
lang="en"in ogni template localizzato. Imposta la lingua dalla locale effettiva del documento e testa le rotte non inglesi. - Usare
langinvece di hreflang.langdescrive questo documento; hreflang collega URL alternativi. Implementa ciascuno per il proprio compito. - Aggiungere un codice paese che non corrisponde al contenuto. Usa un tag BCP 47 valido e aggiungi una regione solo quando la variante linguistica è realmente regionale.
- Mettere l’attributo su un wrapper invece che sull’elemento radice
<html>. Dichiara la lingua primaria della pagina sull’elemento del documento; usa attributilanglocali per passaggi in un’altra lingua. - Presumere che Google abbia bisogno di
langper rilevare la lingua. Tienilo per accessibilità, browser, Bing e standard—non come leva per il ranking di Google.
Uno screen reader usa la pronuncia sbagliata
Causa probabile: lingua radice mancante, non valida o errata; anche i passaggi in lingua straniera potrebbero non essere marcati. Correzione: imposta il valore BCP 47 corretto su <html> e override locali dove la lingua cambia. Conferma: ispeziona l’albero di accessibilità e testa con la voce dello screen reader pertinente.
Ogni pagina localizzata dice lang="en"
Causa probabile: un template di base hard-coded o una mappatura delle locale che non raggiunge mai il guscio del documento. Correzione: deriva il valore radice dalla locale della rotta/contenuto sul server o in fase di build. Conferma: esegui il crawl di URL rappresentativi delle locale e confronta la lingua dichiarata con il contenuto visibile.
lang e hreflang non concordano
Causa probabile: mappe delle locale separate, codici regione non validi o un fallback del template. Correzione: usa una configurazione delle locale normalizzata preservando i diversi scopi dei due segnali. Conferma: ogni pagina dichiara la propria lingua del contenuto e i suoi link alternativi puntano alle varianti reciproche corrette.
I prompt di traduzione del browser sono sbagliati
Causa probabile: la lingua dichiarata è in conflitto con il contenuto visibile dominante o i blocchi in lingua mista non sono delimitati. Correzione: correggi la dichiarazione radice e marca i passaggi sostanziali con il proprio lang. Conferma: i controlli del browser e di accessibilità identificano la lingua primaria intesa.
Strumenti per le dichiarazioni di lingua
- On-Page SEO Checker mostra la lingua grezza del documento insieme ad altri segnali HTML.
- hreflang Generator + Linter controlla i codici e le relazioni delle lingue alternative; usalo insieme, non al posto, dell’audit della radice
lang. - Browser DevTools mostra il valore radice
<html lang>e l’albero di accessibilità usato dalla tecnologia assistiva. - Un crawler con estrazione XPath può confrontare la dichiarazione tra i template delle locale:
string(/html/@lang).
Risorse che meritano il tuo tempo
I miei scritti correlati
- Hreflang: The Easy Guide for Beginners — l’approfondimento su hreflang di cui sono accreditato, incluso il problema di audit “Hreflang and HTML lang mismatch” che collega
lange hreflang. - The Beginner’s Guide to Technical SEO — dove markup e segnali internazionali si inseriscono nel quadro più ampio.
I miei interventi
- How Search Works (SlideShare) — la mia spiegazione di crawling, rendering, indicizzazione e ranking, incluso come Google legge (e normalizza) il tuo markup. (Vale la mia dichiarazione standard: “This is my understanding of systems… not going to be 100% complete or accurate.” (traduzione) «Questa è la mia comprensione dei sistemi… non sarà completa o accurata al 100%.»)
Ufficiale
- Google — Localized Versions of your Pages e Translated Google Search Results.
- Bing — How To Tell Bing Your Website’s Country and Language (2011, via Wayback Machine).
Dal settore
- MDN — attributo globale
lang— il riferimento tecnico definitivo: BCP 47, vuoto vs assente, ereditarietà. - W3C — Dichiarare la lingua in HTML — la guida dell’ente di standardizzazione, incluse le pagine multilingua.
- Deque — regola axe
html-has-lang— la regola di accessibilità dietro l’audit di Lighthouse. - WebAIM Million — il sondaggio annuale con l’attuale tasso di errore “lingua del documento mancante”.
- Adrian Roselli — On Use of Lang Attribute — il catalogo approfondito di accessibilità su cosa
langinfluisce realmente. - Manuel Matuzovic — l’attributo lang: i browser che dicono bugie — il caso di studio ORF.at con
lang="en"su traduzione automatica in tedesco. - Google: We Ignore The HTML lang Attribute (Search Engine Roundtable) — la citazione completa di Mueller “quasi sempre sbagliato”.
- r/TechSEO — la community per markup, internazionalizzazione e debug degli audit.
Mettiti alla prova: l’attributo HTML lang
Cinque domande rapide su cosa fa lang e su come differisce da hreflang. Scegli una
risposta per ciascuna, poi controlla.
Cronologia modifiche
Aggiornato il 18 lug 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.