HTML lang Attribute

Apa HTML lang attribute melakukan, mengapa Google ignores ini untuk language detection tetapi Bing menggunakan ini, bagaimana ini differs dari hreflang, dan mengapa ini masih penting untuk accessibility dan browser auto-translate prompt.

Pertama kali diterbitkan: 2 Jul 2026 · Terakhir diperbarui: 22 Agu 2026 · Advanced
Bahasa
1 sinyal bukti di halaman ini

HTML lang attribute — set pada root sebagai <html lang="en"> (atau sebuah region variant like en-US) — declares natural language dari ini document's konten menggunakan sebuah BCP 47 tag. ini adalah tidak yang sama sebagai hreflang: lang mendeskripsikan halaman ini adalah pada; hreflang declares alternate-language URLs untuk lainnya halaman. Google adalah blunt itu ini ignores lang untuk language detection ('kami jangan gunakan itu di semua… hampir selalu wrong' — Mueller); ini menggunakan konten algorithms alih-alih. Bing adalah opposite: -nya 2011 Webmaster Blog names <html lang> sebagai sebuah fallback document-location sinyal, behind konten-language meta tag. Regardless dari penelusuran weight, lang adalah sebuah diperlukan accessibility attribute (WCAG 3.1.1) — ini drives screen-reader pronunciation dan browser's auto-translate prompt, dan 'missing document language' adalah masih sebuah top-six WebAIM Million failure. satu Google carve-out: labeling machine-translated blocks dengan lang="es-x-mtfrom-en" _(terjemahan)_ “es-x-mtfrom-en”. Set sebuah valid nilai, pertahankan ini consistent dengan hreflang, dan jangan leave sebuah boilerplate lang="en" _(terjemahan)_ “en” pada non-English konten.

TL;DR — lang declares natural language dari ini document (<html lang="en">, atau sebuah region variant like en-US) menggunakan sebuah BCP 47 tag. ini adalah sebuah berbeda mechanism dari hreflang, yang declares alternate-language URLs — Google’s own docs group dua together sebagai hal ini melakukan tidak gunakan untuk detect sebuah halaman’s language. Mueller: “we jangan gunakan itu di all… hampir selalu wrong.” (terjemahan) “kami jangan gunakan itu di semua… hampir selalu wrong.” Regardless dari penelusuran weight, sebuah programmatically determinable halaman language adalah sebuah WCAG 3.1.1 tingkat sebuah requirement, dan HTML lang attribute adalah standard technique. ini mendukung screen-reader pronunciation dan browser auto-translate prompt, dan “missing document language” (terjemahan) “missing document language” adalah masih sebuah top-six WebAIM Million failure. satu Google carve-out: labeling machine-translated blocks dengan lang="es-x-mtfrom-en". Set sebuah valid nilai, pertahankan ini consistent dengan hreflang, dan kill boilerplate lang="en" pada non-English halaman.

Apa lang attribute sebenarnya declares

HTML lang attribute adalah sebuah global attribute — ini dapat technically go pada apa pun element — tetapi satu itu penting sebagian besar sits pada root: <html lang="en">. -nya nilai adalah sebuah BCP 47 language tag, either sebuah language subtag pada -nya own (en, es, de) atau sebuah language-plus-region pair (en-US, en-GB, pt-BR, zh-Hans).

Apa ini declares adalah sempit dan spesifik: * natural language dari text konten pada document ini adalah set pada.* Tidak language dari Anda alternate halaman, tidak country Anda’re targeting — hanya “itu words pada ini halaman adalah di ini language.” (terjemahan) “ kata pada ini halaman adalah di ini language.”

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 Page

Three precision poin worth internalizing, drawn dari MDN reference:

  • Valid nilai hanya. sebuah BCP 47 tag — tidak sebuah dibuat-up three-letter code (eng), tidak sebuah penuh language name, dan tidak en-UK ( region subtag untuk United Kingdom adalah GB). Tidak valid nilai mendapatkan treated sebagai Tidak nilai. Syntactically well-formed tidak yang sama sebagai correct, either: lang="en" adalah sebuah perfectly valid tag itu’s masih wrong pada sebuah French halaman. Validity adalah sebuah floor, tidak sebuah jaminan nilai sebenarnya matches konten (lebih pada itu di boilerplate-default trap di bawah).
  • Empty adalah tidak yang sama sebagai absent. sebuah jelas lang="" berarti “unknown language” (terjemahan) “unknown language” — sebuah deliberate state. sebuah genuinely missing attribute adalah sebuah berbeda failure mode, dan accessibility alat flag ini sebagai absent alih-alih explicitly-unknown.
  • ** root nilai adalah sebuah default, tidak sebuah lock.** <html lang> sets apa setiap descendant inherits unless ini adalah overridden — reset lang locally pada apa pun element containing sebuah nyata language perubahan (see “Set it on the element that changes, too” (terjemahan) “Set ini pada element itu perubahan, too” di bawah). jangan confuse ini di-document declaration dengan HTTP Content-Language respons header: itu header mendeskripsikan transport metadata tentang respons, tidak parsed document, dan ini tidak sebuah substitute untuk lang ketika ini muncul untuk element-tingkat inheritance atau accessibility.

lang vs. hreflang: confusion, resolved

jika Anda landed di sini dari sebuah hreflang pertanyaan, ini adalah bagian Anda ingin. ini dua mendapatkan conflated constantly karena mereka’re keduanya language-related, keduanya langsung di atau near top dari document, dan keduanya gunakan similar-looking codes. tetapi mereka melakukan unrelated jobs.

paling bersih articulation muncul straight dari Google’s own documentation pada localized versi dari Anda halaman, yang groups dua together precisely untuk say ini menggunakan neither untuk detection:

“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.” (terjemahan) “Google tidak menggunakan hreflang atau atribut lang HTML untuk mendeteksi bahasa halaman; sebagai gantinya, Google menggunakan algoritme untuk menentukan bahasanya.”

Baca itu dengan hati-hati. Google names keduanya lang dan hreflang di satu breath — sebagai dua terpisah hal ini melakukan tidak gunakan untuk figure out apa language sebuah halaman adalah di. ini detects language dari dirender, terlihat konten alih-alih.

So apa sebenarnya perbedaan?

  • lang adalah sebuah self-deskripsi: satu nilai, pada <html> (atau apa pun element), saying “this document’s content is in this language.” (terjemahan) “ini document’s konten adalah di ini language.” Baca oleh browser, screen readers, spell-checkers; digunakan oleh Bing; ignored oleh Google untuk detection.
  • hreflang adalah sebuah cross-halaman map: sebuah set dari <link rel="alternate"> annotations (atau sitemap/header equivalent) listing lainnya URLs itu adalah alternate language/region versi dari ini halaman, dan yang language setiap targets. ini adalah sebuah routing sinyal Google melakukan gunakan — untuk sajikan right URL variant di hasil — tidak sebuah detection sinyal.

mereka dapat dan sering seharusnya coexist. sebuah Mexican-Spanish halaman carries <html lang="es-MX"> describing -nya own konten dan sebuah set dari hreflang tags pointing untuk -nya en-US, en-GB, dan lainnya siblings. penuh implementation dari hreflang — three metode, reciprocal-linking aturan, self-referential aturan, dan scale dari bagaimana sering ini breaks — adalah -nya own deep dive; ini artikel dengan sengaja tidak re-derive ini. satu hal untuk carry di seluruh: lang adalah sederhana half dari ini pair (satu nilai, satu element, Tidak reciprocity) precisely karena ini tidak carry hreflang’s cross-halaman hubungan complexity — yang John Mueller setelah called “satu dari itu paling complex aspects dari SEO.” (terjemahan) “satu dari paling kompleks aspects dari SEO.” Easy untuk set, though, adalah tidak sama sebagai commonly correct.

`lang` describes this document for browsers and assistive technology; hreflang maps alternate URLs for search-result routing. Sumber: Google Search Central

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 ·

adalah lang attribute sebuah Google peringkat factor?

pendek jawaban: Tidak, dan Google memiliki telah unusually blunt tentang ini. definitive statement adalah John Mueller’s, reported oleh Barry Schwartz di mesin pencari Roundtable di Google: kami Ignore HTML lang Attribute. ditanyakan bagaimana penting ini adalah untuk declare sebuah halaman’s language di HTML, Mueller mengatakan:

“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.” (terjemahan) “Kami sama sekali tidak menggunakannya. Kami memakai tautan hreflang bila tersedia untuk versi bahasa yang berbeda. Namun, atribut bahasa dalam markup HTML tidak kami gunakan karena markup bahasa itu hampir selalu keliru, sehingga cenderung kami abaikan.”

itu “almost always wrong” (terjemahan) “hampir selalu wrong” adalah key phrase. Google’s alasan untuk ignoring lang tidak “it’s unimportant” (terjemahan) “ini adalah unimportant” — ini adalah itu sinyal adalah unreliable di web scale. Orang leave boilerplate lang="en" defaults di place setelah localizing konten; CMS dan kerangka kerja templates ship sebuah default itu tidak pernah mendapatkan diperbarui (Vue CLI’s generated boilerplate, misalnya, hard-codes lang="en" regardless dari apa Anda bangun dengan ini). Ketika sebuah sinyal adalah wrong itu sering, sane engineering move adalah untuk berhenti trusting ini dan detect language dari konten secara langsung — yang adalah persis apa Google says ini melakukan. itu 2016 quote adalah old, tetapi saat ini (2026) Penelusuran Central doc quoted di atas independently restates yang sama policy, so treat ini sebagai panjang-standing, unretracted guidance alih-alih sebuah stale satu kali.

satu exception: machine-translated konten

ada sebuah single, sempit place di mana Google’s docs melakukan care tentang sebuah lang-style nilai. jika Anda publish machine-translated konten, Google’s translated-hasil guidance menanyakan Anda untuk mark itu blocks dengan sebuah special nilai format — lang="<target>-x-mtfrom-<source>", e.g. lang="es-x-mtfrom-en" untuk konten machine-translated dari English ke Spanish. itu’s exception itu proves aturan: Google ignores lang untuk umum language detection, tetapi ini spesifik labeling convention adalah satu ini didefinisikan dan membaca. ( related lever, jika Anda ingin untuk opt out dari translation fitur entirely, adalah notranslate aturan — “Untuk opt out dari all translation features di Google Search, gunakan itu notranslate rule, yang dapat menjadi implemented sebagai a meta tag atau an HTTP header,” (terjemahan) “untuk opt out dari semua translation fitur di Google Search, gunakan notranslate aturan, yang dapat menjadi implemented sebagai sebuah meta tag atau sebuah header HTTP,” per yang sama doc.)

melakukan Bing gunakan lang attribute?

Ya — dan ini adalah di mana lang mendapatkan genuinely lebih consequential daripada “Google ignores it” (terjemahan) “Google ignores ini” story suggests. Bing’s stance adalah opposite dari Google’s, dan ini adalah di bawah-covered hampir di mana-mana.

di -nya 2011 Webmaster Blog post cara Tell Bing Anda situs web’s Country dan Language, Bing lays out sebuah priority order dari “document location” (terjemahan) “document location” sinyal ini menggunakan untuk relevance. order, top untuk bottom:

  1. content-language meta tag di <head> (<meta http-equiv="konten-language" konten="en-us">).
  2. <html lang="en-us"> attribute, lalu <title lang="en-us"> attribute, sebagai fallbacks — “the priority order for these tags is: <meta>, <html>, <title>.” (terjemahan) “Urutan prioritas tag tersebut adalah <meta>, <html>, lalu <title>.”
  3. ccTLD.
  4. Reverse-IP lookup — digunakan hanya ketika lebih tinggi sinyal adalah inconclusive.

Bing’s advice adalah untuk pick satu dan menjadi consistent: “ini best itu Anda gunakan satu option, alih-alih dari multiple options di sini.” (terjemahan) “ini adalah best itu Anda gunakan satu option, alih-alih multiple options di sini.” So unlike Google, Bing explicitly menggunakan <html lang> sebagai sebuah nyata (jika lebih rendah-priority) targeting sinyal. untuk sebuah situs dengan bermakna Bing traffic, itu perubahan recommended tindakan: set lang correctly, dan pertimbangkan sebuah matching content-language meta tag pada top.

Caveat: ini adalah sebuah 2011 post, now delisted dari Bing’s saat ini blog archive. I’m citing ini melalui Wayback Machine capture; Tidak newer Bing statement supersedes ini itu I dapat temukan, so I treat mechanism sebagai masih saat ini — tetapi -nya age adalah worth flagging honestly alih-alih presenting ini sebagai fresh guidance.

ini juga closes loop dengan hreflang side dari hal: Bing barely menggunakan hreflang cara Google melakukan — content-language plus lang adalah Bing’s parallel mechanism.

Mengapa lang attribute penting anyway: accessibility

bahkan setting penelusuran aside entirely, lang earns -nya place. ini adalah sebuah diperlukan accessibility attribute — WCAG Success Criterion 3.1.1 (tingkat sebuah) memerlukan default human language dari setiap halaman untuk menjadi programmatically determinable, yang di practice berarti sebuah valid <html lang>. sebuah terpisah criterion, 3.1.2, covers marking language perubahan di dalam sebuah halaman.

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

downstream effects adalah concrete dan well-terdokumentasi (Adrian Roselli’s pada gunakan dari Lang Attribute catalogs banyak): screen readers gunakan lang untuk pick correct pronunciation mesin dan voice (JAWS’s phonetic mesin, VoiceOver’s automatic voice switching), CSS hyphens: auto bergantung pada ini, spellcheck perilaku keys off ini, quotation-mark rendering dan default CJK font selection ikuti ini, dan Braille displays behave differently dengan ini. Persis bagaimana setiap dari ini plays out varies oleh screen reader, browser, dan installed voice — Roselli’s own tests tampilkan JAWS dan VoiceOver jangan behave identically — so treat sebuah correct lang nilai sebagai enabling right perilaku, tidak guaranteeing sebuah identical experience di seluruh setiap assistive-technology stack.

dan ini adalah tidak sebuah solved masalah. Per saat ini WebAIM Million report, “missing document language” (terjemahan) “missing document language” sits di 13,5% dari home halaman — sixth sebagian besar umum automated accessibility failure pada web. rate adalah improving (down dari 15,8% prior tahun, dan 17,1% dan 18,6% sebelum itu), tetapi “a large, shrinking problem” (terjemahan) “sebuah besar, shrinking masalah” adalah masih sebuah masalah. Google’s own tooling reflects framing: Lighthouse’s html-has-lang dan html-lang-valid memeriksa langsung di bawah -nya Accessibility category, tidak -nya SEO category — sebuah nice tell itu bahkan Google’s developer alat bucket lang sebagai sebuah a11y concern, tidak sebuah peringkat satu. itu memeriksa adalah dibangun pada Deque’s axe-core aturan dari yang sama name, yang classifies sebuah missing lang sebagai sebuah WCAG 2,0/2.1 tingkat sebuah “Serious” (terjemahan) “masalah berlevel serius.”

browser perilaku: auto-translate prompt

ada satu lebih terlihat perilaku lang governs: browser’s “Translate ini halaman?” (terjemahan) “Translate ini halaman?” prompt. Chrome (dan others) weigh lang alongside sebenarnya terlihat-text analysis ketika deciding apakah untuk offer translation. sebuah wrong atau missing nilai dapat misfire di keduanya directions — falsely offering untuk translate sebuah halaman itu’s sudah di reader’s language, atau failing untuk offer ini pada sebuah genuinely foreign satu.

vivid dunia nyata contoh adalah Manuel Matuzovic’s lang attribute: browser telling lies, telling sweet little lies: Austrian broadcaster ORF.di shipped German konten dengan lang="en", so Chrome’s auto-translate treated German text sebagai English dan “translated” (terjemahan) “translated” ini, mengubah Vienna district name “Liesing” (terjemahan) “Liesing” ke English kata “lies.” (terjemahan) “lies.” itu’s boilerplate-default trap producing sebuah pengguna-facing bug — tepat class dari masalah Mueller’s “almost always wrong” (terjemahan) “hampir selalu wrong” adalah describing.

cara set ini correctly

  • gunakan valid BCP 47 tag. Language subtag alone (en, es, fr) jika Anda jangan perlu regional pembedaan; language-region (en-US, en-GB, pt-BR) jika Anda melakukan. Pull codes dari IANA Language Subtag Registry; jangan invent them, dan remember GB, tidak UK.
  • Set ini pada element itu perubahan, too. untuk sebuah embedded foreign phrase di sebuah jika tidak single-language halaman, reset lang locally: <span lang="fr">c'est la vie</span>. Unset descendants inherit nearest ancestor’s lang, so root nilai covers semuanya Anda tidak override.
  • Kill boilerplate default. lang="en" Anda template atau CMS shipped dengan adalah hanya correct jika Anda konten adalah sebenarnya di English. ini adalah failure Mueller called out dan ORF.di bug di miniature — audit untuk ini.
  • pertahankan lang dan hreflang consistent. jika sebuah halaman’s lang says es-MX tetapi -nya hreflang annotation untuk itu sama URL says en, itu’s sebuah mismatch. ini adalah persis “Hreflang and HTML lang mismatch” (terjemahan) “Hreflang dan HTML lang mismatch” issue I terdokumentasi di Ahrefs’ hreflang guide — di mana I put ini plainly: “Google tidak gunakan itu HTML language attribute, tetapi other penelusuran engines dan browsers lakukan. ini important untuk keep ini dua attributes consistent dengan satu another.” (terjemahan) “Google tidak gunakan HTML language attribute, tetapi lainnya penelusuran mesin dan browser melakukan. ini adalah penting untuk pertahankan ini dua attributes consistent dengan satu lainnya.” Google ignores lang half dari itu perbandingan, tetapi sebuah mismatch masih sinyal itu sesuatu adalah misconfigured — yang adalah mengapa situs audit alat flag ini.

umum myths

  • “Correct lang will improve my Google rankings.” (terjemahan) “Correct lang akan meningkatkan my Google rankings.” Tidak. Google status ini tidak gunakan lang untuk language detection di semua. ini dapat penting untuk Bing dan indirectly help melalui accessibility dan translation perilaku, tetapi sebuah direct Google peringkat benefit tidak didukung.
  • lang and hreflang are basically the same.” (terjemahan)lang dan hreflang adalah basically yang sama.” Tidak — lang mendeskripsikan halaman ini adalah pada; hreflang poin untuk lainnya URLs. sebuah halaman dapat memiliki sebuah correct lang dan Tidak hreflang, atau correct hreflang dan sebuah wrong lang.
  • “Tidak ada mesin pencari yang memedulikan lang.” Bing secara eksplisit menggunakannya sebagai fallback setelah content-language. Untuk situs dengan trafik Bing nyata, atribut ini tetap relevan.
  • “Membiarkan nilai default lang="en" tidak berbahaya meskipun kontennya bukan bahasa Inggris.” ini adalah close untuk kata-untuk-kata failure Mueller called “almost always wrong,” (terjemahan) “hampir selalu wrong,” dan ini adalah apa triggers wrong translate prompts dan wrong screen-reader pronunciation.
  • “Correct lang gives a 22% CTR lift” / “AI crawlers process lang-tagged pages 40% faster.” (terjemahan) “Correct lang memberikan sebuah 22% CTR lift” / “AI crawlers process lang-tagged pages 40% faster.” (terjemahan) “AI crawler proses lang-tagged halaman 40% lebih cepat.” ini spesifik figures circulate pada sebuah handful dari SEO marketing blogs dengan Tidak traceable study, methodology, atau utama sumber. I tidak dapat corroborate either terhadap apa pun official statement atau pertama-party data — treat them sebagai jenis dari confident-sounding, baseless folklore itu accretes sekitar rendah-scrutiny teknis topics.
  • “An empty lang="" is the same as not having one.” (terjemahan) “sebuah empty lang="" adalah yang sama sebagai tidak memiliki satu.” Tidak — sebuah jelas empty nilai berarti “unknown language,” (terjemahan) “unknown language,” sebuah distinct state dari sebuah genuinely absent attribute.

Di mana ini fits

ini adalah attribute-tingkat deep dive dari HTML SEO subcluster — sibling untuk element-tingkat treatment dari <article>, <nav>, dan <main> di semantic HTML artikel, dan untuk lebih luas HTML-SEO hub di atas them. untuk penuh cross-halaman targeting story — three implementation metode, reciprocal aturan, dan bagaimana sering clusters break di scale — hreflang deep dive adalah place untuk go; ini artikel’s job adalah hanya untuk pertahankan dua straight di Anda head.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.