Guide : The HTML lang Attribute

Ce que le HTML lang attribut fait, pourquoi Google ignores il pour langue detection mais Bing utilise il, comment il differs depuis hreflang, et pourquoi il encore matters pour accessibility et le navigateur auto-translate prompt.

Première publication : 2 juil. 2026 · Dernière mise à jour : 3 août 2026 · Avancé
1 indice probant sur cette page

Le HTML lang attribut — définir on le root as <html lang="en"> (or a region variant comme en-US) — declares le natural langue de CE document's contenu en utilisant a BCP 47 balise. Il n’est pas le même as hreflang: lang décrit lune page c’est on; hreflang declares alternate-langue URLs pour autre pages. Google est blunt que il ignores lang pour langue detection ('nous ne pas utiliser que à tout… presque toujours incorrect' — Mueller); il utilise contenu algorithms à la place. Bing est le opposite: son 2011 Webmaster Blog noms <html lang> as a fallback document-location signal, behind le contenu-langue meta balise. Regardless de recherche weight, lang est a requis accessibility attribut (WCAG 3.1.1) — il drives screen-lecteur pronunciation et le navigateur's auto-translate prompt, et 'manquant document langue' est encore a top-six WebAIM Million échec. Le un Google carve-out: labeling machine-translated bloque avec lang="es-x-mtfrom-en". Définir a valide valeur, garder il consistent avec hreflang, et ne pas laisser a boilerplate lang="en" on non-English contenu.

TL;DR — lang declares le natural langue de ce document (<html lang="en">, or a region variant like en-US) en utilisant a BCP 47 balise. Il est a différent mechanism depuis hreflang, qui declares alternate-langue URLs — Google’s propre docs groupe le deux ensemble as choses il fait pas utiliser à detect une page’s langue. Mueller: “nous ne pas utiliser ce à tous… presque toujours wrong.” Regardless de recherche weight, a programmatically determinable page langue est a WCAG 3.1.1 Level A requirement, et le HTML lang attribut est le standard technique. Il prend en charge screen-lecteur pronunciation et le navigateur auto-translate prompt, et “manquant document langue” est encore a top-six WebAIM Million échec. Le un Google carve-out: labeling machine-translated bloque avec lang="es-x-mtfrom-en". Définir a valide valeur, garder il consistent avec hreflang, et kill le boilerplate lang="en" on non-English pages.

Ce que the lang attribute en réalité declares

Le HTML lang attribut est a mondial attribut — il peut technically go on quelconque element — mais le un que matters la plupart sits on le root: <html lang="en">. Son valeur est a BCP 47 langue balise, soit a langue subtag on son propre (en, es, de) or a langue-plus-region pair (en-US, en-GB, pt-BR, zh-Hans).

«What it declares is narrow and specific: the natural language of the text content on the document it’s set on. Not the language of your alternate pages, not the country you’re targeting — just “the words on this page are in this language.”

Preuve à l’appui de cette affirmation 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. Portée : WHATWG HTML language semantics and IETF BCP 47 tag syntax. Niveau de confiance : élevé · Vérifié : WHATWG: The lang attribute IETF RFC 5646 Preuve à l’appui de cette affirmation 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. Portée : WCAG 2.2 Level A language-of-page requirement for HTML documents. Niveau de confiance : élevé · Vérifié : W3C: Understanding Language of Page

» (Traduction) (Résumé en français de la section vingt-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Three precision points worth internalizing, drawn depuis le MDN référence:

  • Valide valeurs seulement. A BCP 47 balise — pas a fait-up three-letter code (eng), pas a complet langue nom, et pas en-UK (le region subtag pour le United Kingdom est GB). Invalide valeurs obtenir treated as aucun valeur. Syntactically well-formed n’est pas le même as correct, soit: lang="en" est a perfectly valide balise c’est encore incorrect on a French page. Validity est a floor, pas a guarantee le valeur en réalité matches le contenu (plus on que dans le boilerplate-default trap ci-dessous).
  • Vide n’est pas le même as absent. An explicit lang="" signifie “unknown language” — a deliberate state. A genuinely manquant attribut est a différent échec mode, et accessibility outils flag il as absent plutôt que explicitly-unknown.
  • Le root valeur est a par défaut, pas a lock. <html lang> sets ce que chaque descendant inherits unless c’est overridden — reset lang locally on quelconque element containing a réel langue modifier (voir “Définir il on le element que changements, aussi” ci-dessous). ne pas confuse ce dans-document declaration avec le HTTP Content-Language réponse header: que header décrit transport metadata à propos de la réponse, pas le parsed document, et il n’est pas a substitute pour lang quand il comes à element-level inheritance or accessibility.

lang vs. hreflang: le confusion, resolved

Si vous landed ici depuis a hreflang question, ce est le section vous vouloir. Ces deux obtenir conflated constantly parce que ils sont les deux langue-related, les deux actif à or near le top de le document, et les deux utiliser similar-looking codes. Mais ils faire unrelated jobs.

Le cleanest articulation comes straight depuis Google’s propre documentation on localized versions de votre pages, qui groupes le deux ensemble precisely à dire il utilise aucun pour detection:

“Google ne fait pas utiliser hreflang or le HTML lang attribut à detect le langue de une page; à la place, nous utiliser algorithms à determine le langue.”

Lire que carefully. Google noms les deux lang et hreflang dans un breath — as deux séparé choses il fait pas utiliser à figure out ce que langue une page est dans. Il detects langue depuis le rendu, visible contenu à la place.

So what’s the réel difference?

«- lang is a self-description: one value, on <html> (or any element), saying “this document’s content is in this language.” Read by browsers, screen readers, spell-checkers; used by Bing; ignored by Google for detection. » (Traduction) (Résumé en français de la section trente-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- hreflang is a cross-page map: a set of <link rel="alternate"> annotations (or the sitemap/header equivalent) listing the other URLs that are alternate language/region versions of this page, and which language each targets. It’s a routing signal Google does use — to serve the right URL variant in results — not a detection signal. » (Traduction) (Résumé en français de la section trente-trois, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)

Ils peut et souvent devrait coexist. A Mexican-Spanish page carries <html lang="es-MX"> describing son propre contenu et a définir de hreflang balises pointing à son en-US, en-GB, et autre siblings. Le complet implementation de hreflang — le three méthodes, le reciprocal-linking règle, le self-referential règle, et le scale de comment souvent il breaks — est son propre deep dive; ce article deliberately ne fait pas re-derive il. Le un chose à carry à travers: lang est le simple half de ce pair (un valeur, un element, aucun reciprocity) precisely parce que il ne fait pas carry hreflang’s cross-page relationship complexity — qui John Mueller une fois appelé “un de le la plupart complexe aspects de SEO.” Facile à définir, though, n’est pas le même as commonly correct.

`lang` décrit ce document pour navigateurs et assistive technology; hreflang maps alternate URLs pour recherche-résultat routing. Source : Google Search Central

Le root lang attribut donne un page a BCP 47 langue self-description utilisé par navigateurs et screen lecteurs. Hreflang est a reciprocal cross-page map entre alternate URLs, tel as en-US et es-MX versions. Google detects une page's langue depuis visible contenu plutôt que soit annotation, mais le lang valeur devrait remain précis et consistent avec le hreflang entry pour le même URL.

© Patrick Stox LLC · CC BY 4.0 ·

Est le lang attribut a Google facteur de classement?

Court réponse: aucun, et Google a été unusually blunt à propos de il. Le definitive statement est John Mueller’s, reported par Barry Schwartz à Moteur de recherche Roundtable dans Google: Nous Ignore Le HTML lang Attribut. Asked comment important il est à declare une page’s langue dans le HTML, Mueller said:

“Nous ne pas utiliser que à tout. Donc nous utiliser le hreflang liens si vous ont que si vous ont différent langue versions. Mais le langue attribut dans le HTML markup est quelque chose nous ne pas utiliser à tout. nous avons trouvé que ce langue markup est quelque chose que est presque toujours incorrect. Donc nous tend à ignore que.”

Que “almost always wrong” est le clé phrase. Google’s raison pour ignoring lang n’est pas “it’s unimportant” — c’est que le signal est unreliable à web scale. Personnes laisser boilerplate lang="en" defaults dans placer après localizing contenu; CMS et framework templates ship a par défaut que jamais obtient mis à jour (Vue CLI’s generated boilerplate, pour instance, difficile-codes lang="en" regardless de ce que vous construire avec il). Quand a signal est incorrect que souvent, le sane engineering déplacer est à arrêter trusting il et detect langue depuis le contenu directement — qui est exactly ce que Google dit il fait. Que 2016 citation est old, mais le actuel (2026) Recherche Central doc quoted ci-dessus independently restates le même policy, donc treat il as long-standing, unretracted guidance plutôt que a stale un-off.

The un exception: machine-translated content

«There’s a single, narrow place where Google’s docs do care about a lang-style value. If you publish machine-translated content, Google’s translated-results guidance asks you to mark those blocks with a special value format — lang="<target>-x-mtfrom-<source>", e.g. lang="es-x-mtfrom-en" for content machine-translated from English into Spanish. That’s the exception that proves the rule: Google ignores lang for general language detection, but this specific labeling convention is one it defined and reads. (The related lever, if you want to opt out of translation features entirely, is the notranslate rule — “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,” per the same doc.) » (Traduction) (Résumé en français de la section quarante et un, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

Fait Bing utiliser the lang attribute?

Oui — et ce est où lang obtient genuinely plus consequential que le “Google ignores il” story suggests. Bing’s stance est le opposite de Google’s, et c’est under-covered presque everywhere.

Dans son 2011 Webmaster Blog post Comment Tell Bing Votre Site web’s Country et Langue, Bing lays out a priority order de “document location” signaux il utilise pour pertinence. Le order, top à bottom:

  1. Le content-language meta balise dans le <head> (<meta http-equiv="content-language" contenu="en-us">).
  2. Le <html lang="en-us"> attribut, alors le <title lang="en-us"> attribut, as fallbacks — “le priority order pour ces balises est: <meta>, <html>, <title>.”
  3. ccTLD.
  4. Reverse-IP lookup — utilisé seulement quand le plus élevé signaux sont inconclusive.

Bing’s advice est à pick un et être consistent: “c’est meilleur que vous utiliser un option, au lieu de plusieurs options ici.” Donc unlike Google, Bing explicitly utilise <html lang> as a réel (si lower-priority) targeting signal. Pour a site avec meaningful Bing trafic, que changements le recommended action: définir lang correctement, et considérer a matching content-language meta balise on top.

Caveat: ce est a 2011 post, maintenant delisted depuis Bing’s actuel blog archive. Je’m citing il via le Wayback Machine capture; aucun newer Bing statement supersedes il que Je pourrait trouver, donc Je treat le mechanism as encore actuel — mais son age est worth flagging honestly plutôt que presenting il as fresh guidance.

Ce aussi closes le loop avec le hreflang side de choses: Bing barely utilise hreflang le façon Google fait — content-language plus lang est Bing’s parallel mechanism.

Pourquoi le lang attribut matters anyway: accessibility

Même setting search aside entirely, lang earns its placer. It is a requis accessibility attribute — WCAG Success Criterion 3.1.1 (Level A) exige the par défaut human language of chaque page to be programmatically determinable, qui in pratique signifie a valid <html lang>. A separate criterion, 3.1.2, covers marking language changements dans une page.

Preuve à l’appui de cette affirmation 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. Portée : WCAG 2.2 Level A language-of-page requirement for HTML documents. Niveau de confiance : élevé · Vérifié : W3C: Understanding Language of Page

Le downstream effects sont concrete et well-documented (Adrian Roselli’s On Utiliser de Lang Attribut catalogs nombreux): screen lecteurs utiliser lang à pick le correct pronunciation moteur et voice (JAWS’s phonetic moteur, VoiceOver’s automatic voice switching), CSS hyphens: auto dépend on il, spellcheck behavior keys off il, quotation-mark rendu et par défaut CJK font selection suivre il, et Braille displays behave differently avec il. Exactly comment chaque de ces plays out varies par screen lecteur, navigateur, et installed voice — Roselli’s propre tests montrer JAWS et VoiceOver ne pas behave identically — donc treat a correct lang valeur as enabling le correct behavior, pas guaranteeing an identical experience à travers chaque assistive-technology stack.

Et c’est pas a solved problème. Per le actuel WebAIM Million rapport, “manquant document langue” sits à 13,5% de home pages — le sixth la plupart courant automated accessibility échec on le web. Le rate est improving (bas depuis 15,8% le prior année, et 17,1% et 18,6% avant que), mais “a large, shrinking problem” est encore a problème. Google’s propre tooling reflects le framing: Lighthouse’s html-has-lang et html-lang-valid vérifications actif sous son Accessibility category, pas son SEO category — a nice tell que même Google’s developer outils bucket lang as an a11y concern, pas a classement un. Ceux vérifications sont construit on Deque’s axe-core règle de le même nom, qui classifies a manquant lang as a WCAG 2,0/2,1 Level A “Serious” problème.

il y a un plus visible behavior lang governs: le navigateur’s “Translate ce page?” prompt. Chrome (et others) weigh lang alongside réel visible-texte analysis quand deciding si à offer traduction. A incorrect or manquant valeur peut misfire dans les deux directions — falsely offering à translate une page c’est déjà dans le lecteur’s langue, or failing à offer il on a genuinely foreign un.

«The vivid real-world example is Manuel Matuzovic’s the lang attribute: browsers telling lies, telling sweet little lies: the Austrian broadcaster ORF.at shipped German content with lang="en", so Chrome’s auto-translate treated the German text as English and “translated” it, turning the Vienna district name “Liesing” into the English word “lies.” That’s the boilerplate-default trap producing a user-facing bug — the exact class of problem Mueller’s “almost always wrong” was describing. » (Traduction) (Résumé en français de la section cinquante-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)

How to définir it correctement

  • Utiliser a valide BCP 47 balise. Langue subtag alone (en, es, fr) si vous ne pas besoin regional distinction; langue-region (en-US, en-GB, pt-BR) si vous faire. Pull codes depuis le IANA Langue Subtag Registry; ne pas invent les, et remember GB, pas UK.
  • Définir il on le element que changements, aussi. Pour an embedded foreign phrase dans an sinon unique-langue page, reset lang locally: <span lang="fr">c'est la vie</span>. Unset descendants inherit the nearest ancestor’s lang, donc le root valeur covers tout vous ne pas override.
  • Kill le boilerplate par défaut. Le lang="en" votre template or CMS shipped avec est seulement correct si votre contenu est en réalité dans English. Ce est le échec Mueller appelé out et le ORF.à bug dans miniature — audit pour il.
  • Garder lang et hreflang consistent. Si une page’s lang dit es-MX mais son hreflang annotation pour que même URL dit en, c’est a mismatch. c’est exactly le “Hreflang et HTML lang mismatch” problème Je documented dans Ahrefs’ hreflang guide — où Je put il plainly: “Google ne fait pas utiliser le HTML langue attribut, mais autre recherche moteurs et navigateurs faire. c’est important à garder ces deux attributs consistent avec un un autre.” Google ignores le lang half de que comparaison, mais a mismatch encore signaux que quelque chose est misconfigured — qui est pourquoi site audit outils flag il.

Courant myths

«- “Correct lang will improve my Google rankings.” No. Google states it doesn’t use lang for language detection at all. It can matter for Bing and indirectly help via accessibility and translation behavior, but a direct Google ranking benefit isn’t supported. » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.) «- “lang and hreflang are basically the same.” No — lang describes the page it’s on; hreflang points to other URLs. A page can have a correct lang and no hreflang, or correct hreflang and a wrong lang. » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.) «- “No search engine cares about lang.” Bing explicitly does (as a fallback behind content-language). For any site with real Bing traffic, this isn’t a “nobody cares” situation. » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Leaving the default lang="en" is harmless if my content isn’t English.” It’s close to word-for-word the failure Mueller called “almost always wrong,” and it’s what triggers wrong translate prompts and wrong screen-reader pronunciation. » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.) «- “Correct lang gives a 22% CTR lift” / “AI crawlers process lang-tagged pages 40% faster.” These specific figures circulate on a handful of SEO marketing blogs with no traceable study, methodology, or primary source. I couldn’t corroborate either against any official statement or first-party data — treat them as the kind of confident-sounding, baseless folklore that accretes around low-scrutiny technical topics. » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.) «- “An empty lang="" is the same as not having one.” No — an explicit empty value means “unknown language,” a distinct state from a genuinely absent attribute. » (Traduction) (Résumé en français de la section cinquante-neuf, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.)

Où ce fits

Ce est le attribut-level deep dive de le HTML SEO subcluster — le sibling à le element-level treatment de <article>, <nav>, et <main> dans le semantic HTML article, et à le broader HTML-SEO hub ci-dessus les. Pour le complet cross-page targeting story — le three implementation méthodes, reciprocal règles, et comment souvent clusters break à scale — le hreflang deep dive est le placer à go; ce article’s job est simplement à garder le deux straight dans votre head.

Ajouter une note d’expert

Épingler une citation d’expert

Nouvelle personne ? Créez son profil non revendiqué à /admin/experts/ → Épingler une citation d’expert d’abord.