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.
Bahasa
1 sinyal bukti di halaman ini
- Alat aktif terkaitOn-Page SEO Checker
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 — HTML
langattribute —lang="en"pada Anda halaman’s opening<html>tag — tells browser dan screen readers apa language Anda halaman’s konten adalah ditulis di. ini adalah easy untuk mix up dengan hreflang, tetapi mereka’re berbeda:langmendeskripsikan ini halaman; hreflang poin untuk Anda lainnya language versi. Google tidak gunakanlanguntuk detect sebuah halaman’s language, sementara attribute masih penting untuk accessibility dan untuk apakah Anda browser offers untuk translate sebuah halaman.
Apa lang attribute adalah
Near very top dari sebagian besar halaman web adalah sebuah tag itu looks like ini:
<html lang="en">itu lang="en" adalah HTML lang attribute. -nya satu job adalah untuk declare
language halaman’s konten adalah ditulis di — en untuk English, es untuk Spanish,
de untuk German. Anda dapat mendapatkan lebih spesifik dengan sebuah region: en-US untuk American
English, en-GB untuk British English, pt-BR untuk Brazilian Portuguese.
ini adalah sebuah kecil hal, tetapi sebuah sedikit berbeda sistem baca ini:
- Screen readers gunakan ini untuk pronounce Anda kata correctly — sebuah English voice reading French text sounds like nonsense.
- browser gunakan ini (along dengan sebenarnya text) untuk decide apakah untuk pop up “Translate ini halaman?” (terjemahan) “Translate ini halaman?”
- Google mostly ignores ini (lebih pada mengapa di Advanced tab).
lang adalah tidak hreflang
ini adalah confusion itu mengirim sebagian besar orang untuk sebuah halaman like ini satu. Di sini’s satu-line perbedaan:
lang= “itu konten pada ini halaman adalah di ini language.” (terjemahan) “ konten pada ini halaman adalah di ini language.” Satu nilai, set pada Anda<html>tag.- hreflang = “di sini adalah itu other URLs itu adalah itu German, Spanish, dan French versions dari ini halaman.” (terjemahan) “di sini adalah lainnya URLs itu adalah German, Spanish, dan French versi dari ini halaman.” sebuah set dari tautan pointing untuk lainnya halaman.
lang adalah sebuah self-deskripsi. Hreflang adalah sebuah map untuk Anda alternate halaman. sebuah sederhana
single-language situs perlu sebuah correct lang dan Tidak hreflang di semua. jika Anda jalankan sebuah
multilingual situs, Anda’ll memiliki keduanya — dan mereka seharusnya agree dengan setiap lainnya.
Apa nilai seharusnya Anda gunakan?
gunakan nyata language code, tidak sesuatu Anda dibuat up:
- hanya language jika Anda tidak care tentang regional variants:
en,es,fr. - Language plus region jika Anda melakukan:
en-US,en-GB,pt-BR.
jangan invent codes like eng atau en-UK ( correct code untuk UK adalah GB,
tidak UK). dan jangan leave default lang="en" sitting pada sebuah halaman milik siapa konten
tidak sebenarnya di English — itu’s single sebagian besar umum mistake, dan ini penyebab
nyata masalah dengan translation prompts dan screen readers.
ingin deeper versi — persis mengapa Google ignores ini, bagaimana Bing menggunakan ini, accessibility aturan, dan browser auto-translate story? Switch untuk Advanced tab.
TL;DR —
langdeclares natural language dari ini document (<html lang="en">, atau sebuah region variant likeen-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 HTMLlangattribute 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 denganlang="es-x-mtfrom-en". Set sebuah valid nilai, pertahankan ini consistent dengan hreflang, dan kill boilerplatelang="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 PageThree 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 tidaken-UK( region subtag untuk United Kingdom adalahGB). 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 — resetlanglocally 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 HTTPContent-Languagerespons header: itu header mendeskripsikan transport metadata tentang respons, tidak parsed document, dan ini tidak sebuah substitute untuklangketika 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?
langadalah 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.
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:
content-languagemeta tag di<head>(<meta http-equiv="konten-language" konten="en-us">).<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>.”- ccTLD.
- 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.
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.
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 rememberGB, tidakUK. - Set ini pada element itu perubahan, too. untuk sebuah embedded foreign phrase di
sebuah jika tidak single-language halaman, reset
langlocally:<span lang="fr">c'est la vie</span>. Unset descendants inherit nearest ancestor’slang, 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
langsayses-MXtetapi -nya hreflang annotation untuk itu sama URL saysen, 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 ignoreslanghalf dari itu perbandingan, tetapi sebuah mismatch masih sinyal itu sesuatu adalah misconfigured — yang adalah mengapa situs audit alat flag ini.
umum myths
- “Correct
langwill improve my Google rankings.” (terjemahan) “Correctlangakan meningkatkan my Google rankings.” Tidak. Google status ini tidak gunakanlanguntuk 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. - “
langand hreflang are basically the same.” (terjemahan) “langdan hreflang adalah basically yang sama.” Tidak —langmendeskripsikan halaman ini adalah pada; hreflang poin untuk lainnya URLs. sebuah halaman dapat memiliki sebuah correctlangdan Tidak hreflang, atau correct hreflang dan sebuah wronglang. - “Tidak ada mesin pencari yang memedulikan
lang.” Bing secara eksplisit menggunakannya sebagai fallback setelahcontent-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
langgives a 22% CTR lift” / “AI crawlers process lang-tagged pages 40% faster.” (terjemahan) “Correctlangmemberikan 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 emptylang=""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.
AI summary
sebuah condensed take pada Advanced versi:
langdeclares language dari ini document (<html lang="en">, atau sebuah region variant likeen-US) menggunakan sebuah BCP 47 tag. ini adalah sebuah self-deskripsi, tidak sebuah targeting atau routing mechanism.- ini adalah tidak hreflang. Google’s own docs group keduanya together sebagai hal ini melakukan
tidak gunakan untuk language detection: “Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page… we use algorithms.” (terjemahan) “Google tidak menggunakan hreflang atau atribut lang HTML untuk mendeteksi bahasa halaman… kami menggunakan algoritme.”
langmendeskripsikan halaman ini adalah pada; hreflang poin untuk alternate-language URLs. - Google ignores
languntuk detection — Mueller: “we don’t use that at all… almost always wrong,” (terjemahan) “kami sama sekali tidak menggunakannya… hampir selalu keliru,” karena boilerplate/CMS defaults membuat ini unreliable di scale. Satu carve-out: labeling machine-translated blocks denganlang="es-x-mtfrom-en". - Bing melakukan opposite: -nya 2011 Webmaster Blog names
<html lang>sebagai sebuah fallback document-location sinyal, behindcontent-languagemeta tag (order: meta > html > judul). untuk Bing traffic, setlangcorrectly. - Accessibility adalah nyata stakes: WCAG 3.1.1 memerlukan ini; ini drives
screen-reader pronunciation,
hyphens: auto, spellcheck, dan CJK fonts. “Missing document language” (terjemahan) “Missing document language” adalah masih ~13,5% dari home halaman — sebuah top-six WebAIM Million failure, though shrinking. - browser gunakan ini untuk auto-translate prompt — sebuah wrong nilai misfires (
ORF.di
lang="en"-pada-German bug itu “translated” (terjemahan) “translated” sebuah district name ke “lies” (terjemahan) “lies”). - Mendapatkan ini right: valid BCP 47 tag (
GB, tidakUK), resetlangpada embedded foreign phrases, kill boilerplatelang="en"pada non-English halaman, dan pertahankanlangconsistent dengan hreflang ( “Hreflang and HTML lang mismatch” (terjemahan) “Hreflang dan HTML lang mismatch” audit issue).
Dokumentasi resmi
Utama-sumber documentation dan standards references.
- Localized versi dari Anda halaman — “Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page” (terjemahan) “Google tidak gunakan hreflang atau HTML lang attribute untuk detect language dari sebuah halaman” line.
- Translated Google hasil pencarian —
lang="x-mtfrom-"machine-translation labeling convention dannotranslateopt-out. - Managing Multi-Regional dan Multilingual situs — berdekatan context pada language/region sinyal.
Bing / Microsoft
- cara Tell Bing Anda situs web’s Country dan Language (Bing Webmaster Blog, 2011) —
meta > html > titledocument-location priority order. Original URL adalah delisted; text confirmed melalui Wayback Machine capture.
Standards / teknis references
- MDN —
langglobal attribute — BCP 47 requirement, empty-string vs. absent perilaku, inheritance, WCAG references. - W3C Internationalization — Declaring language di HTML — BCP 47 / IANA registry guidance dan nested-element aturan untuk mixed-language konten.
- Deque University — axe aturan
html-has-lang— WCAG 2,0/2.1 tingkat sebuah classification behind Lighthouse’s accessibility audit. - WebAIM Million — annual accessibility survey dengan “missing document language” (terjemahan) “missing document language” failure rate.
Quotes dari sumber
pada—record statements. setiap tautan deep-tautan untuk quoted passage di mana sumber halaman mendukung ini.
Google — ini tidak gunakan lang 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 menentukan bahasa halaman dengan algoritme, bukan melalui hreflang ataupun atribut lang HTML.” — Google Search Central docs. Jump untuk quote
Google — machine-translation carve-out dan 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.” (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.” — Translated Google hasil pencarian. Jump untuk quote
John Mueller, Google — “almost always wrong” (terjemahan) “hampir selalu wrong”
- “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) “Google mengandalkan tautan hreflang untuk versi bahasa yang berbeda dan tidak memakai atribut bahasa dalam markup HTML, sebab nilai tersebut sangat sering salah dan akhirnya diabaikan.” — melalui mesin pencari Roundtable’s coverage dari sebuah 2016 Google Webmaster hangout. Baca coverage Relayed melalui Barry Schwartz’s tulis-up dari 2016 hangout ( original video tidak independently reachable). underlying “we don’t use lang for detection” (terjemahan) “kami jangan gunakan lang untuk detection” policy adalah independently reconfirmed oleh saat ini Penelusuran Central doc quoted di atas, so I treat position sebagai masih accurate despite quote’s age.
Bing / Microsoft — lang adalah sebuah fallback targeting sinyal
- Priority order untuk document-location sinyal: “the priority order for these tags is:
<meta>,<html>,<title>,” (terjemahan) “ priority order untuk ini tags adalah:<meta>,<html>,<title>,” dengan sebuah recommendation untuk “use one option, instead of multiple options here.” (terjemahan) “gunakan satu option, alih-alih multiple options di sini.” — Bing Webmaster Blog, “How To Tell Bing Your Website’s Country and Language,” (terjemahan) “cara Tell Bing Anda situs web’s Country dan Language,” 2011. Quoted dari 2011 post melalui -nya Wayback Machine capture — original URL adalah delisted dari Bing’s saat ini blog archive, dan Tidak newer Bing statement supersedes mechanism itu I dapat temukan. -nya age (2011) adalah sebuah nyata caveat; I’m citing ini sebagai panjang-standing tetapi old.
Me — mempertahankan lang dan hreflang consistent
- “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.” (terjemahan) “Google tidak gunakan HTML language attribute, tetapi lainnya mesin pencari dan browser melakukan. ini adalah penting untuk pertahankan ini dua attributes consistent dengan satu lainnya.” — dari Ahrefs’ hreflang guide, pada “Hreflang and HTML lang mismatch” (terjemahan) “Hreflang dan HTML lang mismatch” audit issue. Baca ini
Yang language tag melakukan I sebenarnya perlu?
sebuah quick walk-melalui ketika Anda’re staring di sebuah halaman dan tidak sure apa untuk set.
1. melakukan Anda hanya perlu untuk declare apa language ini halaman adalah di?
itu’s lang attribute. Set <html lang="…">. Go untuk langkah 2.
2. melakukan Anda perlu distinguish regional variants (US vs. UK English, Brazilian vs. European Portuguese)?
- Tidak → gunakan language subtag alone:
<html lang="en">,lang="es",lang="pt">. - Ya → gunakan language-region:
<html lang="en-US">,lang="en-GB">,lang="pt-BR">. (Region adalahGB, tidakUK.)
3. melakukan halaman berisi passages di sebuah berbeda language (sebuah French quote di sebuah English artikel)?
- Ya → wrap them dan reset locally:
<span lang="fr">c'est la vie</span>. Semuanya else inherits root<html lang>. - Tidak → root nilai covers seluruh halaman.
4. melakukan Anda juga memiliki yang sama halaman di lainnya languages di lainnya URLs?
- Ya → Anda additionally perlu hreflang — sebuah terpisah mechanism pointing untuk
itu alternate URLs. pertahankan setiap halaman’s
langconsistent dengan -nya hreflang entry. (See hreflang deep dive; itu’s -nya own bangun.) - Tidak → Anda’re selesai dengan
langalone.
5. adalah konten machine-translated?
- Ya → per Google, label translated block:
lang="<target>-x-mtfrom-<source>"(e.g.lang="es-x-mtfrom-en"). - Tidak → sebuah plain BCP 47 tag adalah semua Anda perlu.
6. melakukan Bing traffic penting untuk Anda?
- Ya → set
langcorrectly dan pertimbangkan sebuah matchingcontent-languagemeta tag — Bing weights meta di atas<html lang>. Pick satu consistent nilai; jangan set conflicting ones. - Tidak →
langpada<html>plus accessibility correctness adalah cukup.
lang attribute cheat sheet
lang vs. hreflang — satu-line perbedaan
lang | hreflang | |
|---|---|---|
| Declares | language dari ini halaman’s konten | lainnya URLs itu adalah alternate-language versi |
| Shape | Satu nilai pada <html> (atau apa pun element) | sebuah set dari <link rel="alternate"> annotations (atau sitemap/header) |
| Google menggunakan ini? | Tidak (ignored untuk detection) | Ya — untuk route right URL variant |
| Bing menggunakan ini? | Ya — fallback targeting sinyal | Barely |
| Accessibility / translate prompt? | Ya | Tidak |
Siapa membaca <html lang>
| Consumer | Apa ini melakukan dengan ini |
|---|---|
| Ignores ini untuk language detection (algorithms alih-alih) | |
| Bing | Fallback targeting sinyal, behind content-language meta |
| Screen readers | Pronunciation / voice selection (WCAG 3.1.1) |
| browser | Satu input untuk auto-translate prompt |
| CSS / spellcheck | hyphens: auto, spellcheck, quotation marks, CJK fonts |
Valid nilai
- Language hanya:
en,es,fr,de - Language-region:
en-US,en-GB,pt-BR,zh-Hans - Tidak valid:
eng(three-letter),en-UK(gunakanGB), penuh language names lang=""= “unknown” (terjemahan) “unknown” (sebuah nyata state, berbeda dari absent)- Machine-translated block:
lang="es-x-mtfrom-en"
Fast facts
- Mueller:
langadalah “almost always wrong” (terjemahan) “hampir selalu wrong” — Google ignores ini untuk detection. - Bing priority order: meta
content-language><html lang>><title lang>. - “Missing document language” (terjemahan) “Missing document language” ≈ 13,5% dari home halaman (WebAIM Million, top-six failure, trending down).
- Lighthouse’s
html-has-langlives di bawah Accessibility, tidak SEO. - pertahankan
langconsistent dengan hreflang — “Hreflang and HTML lang mismatch” (terjemahan) “Hreflang dan HTML lang mismatch” audit issue.
HTML lang mistakes
- Leaving
lang="en"di setiap localized template. atur language dari sebenarnya document locale dan test non-English routes. - menggunakan
langalih-alih hreflang.langmendeskripsikan ini document; hreflang connects alternate URLs. Implement setiap untuk -nya own job. - menambahkan sebuah country code itu melakukan tidak match konten. gunakan valid BCP 47 tag dan tambahkan sebuah region hanya ketika language variant adalah genuinely regional.
- Putting attribute pada sebuah wrapper alih-alih root
<html>. Declare halaman’s utama language pada document element; gunakan locallangattributes untuk passages di lainnya language. - Assuming Google perlu
languntuk detect language. pertahankan ini untuk accessibility, browser, Bing, dan standards—tidak sebagai sebuah Google peringkat lever.
sebuah screen reader menggunakan wrong pronunciation
mungkin penyebab: missing, tidak valid, atau incorrect root language; foreign-language passages dapat juga menjadi unmarked. Perbaiki: atur correct BCP 47 nilai pada <html> dan local overrides di mana language perubahan. Konfirmasi: inspect accessibility tree dan test dengan relevant screen reader voice.
setiap localized halaman says lang="en"
mungkin penyebab: sebuah hard-coded base template atau locale mapping itu tidak pernah reaches document shell. Perbaiki: derive root nilai dari route/konten locale pada server atau di bangun time. Konfirmasi: crawl representative locale URLs dan bandingkan declared language dengan terlihat konten.
lang dan hreflang disagree
mungkin penyebab: terpisah locale maps, tidak valid region codes, atau sebuah template fallback. Perbaiki: gunakan satu normalized locale configuration sementara preserving berbeda purposes dari dua sinyal. Konfirmasi: setiap halaman declares -nya own konten language dan -nya alternate tautan poin untuk correct reciprocal variants.
browser translation prompts adalah wrong
mungkin penyebab: declared language conflicts dengan dominant terlihat konten atau mixed-language blocks adalah tidak scoped. Perbaiki: correct root declaration dan mark substantial passages dengan mereka own lang. Konfirmasi: browser dan accessibility memeriksa identify yang dimaksud utama language.
alat untuk language declarations
- pada-halaman SEO Checker surfaces mentah document language alongside lainnya HTML sinyal.
- hreflang Generator + Linter memeriksa alternate-language codes dan relationships; gunakan ini alongside, tidak alih-alih, root
langaudit. - browser DevTools menampilkan root
<html lang>nilai dan accessibility tree digunakan oleh assistive technology. - sebuah crawler dengan XPath extraction dapat bandingkan declaration di seluruh locale templates:
string(/html/@lang).
Resources worth Anda time
My related writing
- Hreflang: Easy Guide untuk Beginners — hreflang deep dive I’m credited pada, including “Hreflang and HTML lang mismatch” (terjemahan) “Hreflang dan HTML lang mismatch” audit issue itu ties
langdan hreflang together. - Beginner’s Guide untuk SEO teknis — di mana markup dan international sinyal fit di bigger picture.
My speaking
- Bagaimana Penelusuran berfungsi (SlideShare) — my walkthrough dari crawling, rendering, pengindeksan, dan peringkat, including bagaimana Google membaca (dan normalizes) Anda markup. (My standing disclaimer applies: “Ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.” (terjemahan) “ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.”)
Official
- Google — Localized versi dari Anda halaman dan Translated Google hasil pencarian.
- Bing — cara Tell Bing Anda situs web’s Country dan Language (2011, melalui Wayback Machine).
dari sekitar industry
- MDN —
langglobal attribute — definitive teknis reference: BCP 47, empty-vs-absent, inheritance. - W3C — Declaring language di HTML — standards-body bagaimana-untuk, including mixed-language halaman.
- Deque — axe aturan
html-has-lang— accessibility aturan behind Lighthouse’s audit. - WebAIM Million — annual survey dengan saat ini “missing document language” (terjemahan) “missing document language” failure rate.
- Adrian Roselli — pada gunakan dari Lang Attribute — deep accessibility catalog dari apa
langsebenarnya memengaruhi. - Manuel Matuzovic — lang attribute: browser telling lies — ORF.di
lang="en"-pada-German auto-translate case study. - Google: kami Ignore HTML lang Attribute (mesin pencari Roundtable) — penuh Mueller “almost always wrong” (terjemahan) “hampir selalu wrong” quote.
- r/TechSEO — community untuk markup, international, dan audit debugging.
Uji pemahaman Anda: HTML lang Attribute
Five quick pertanyaan pada apa lang melakukan dan bagaimana ini differs dari hreflang. Pick sebuah
jawaban untuk setiap, lalu periksa.
Log perubahan
Diperbarui 22 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 10 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.