HTML Element Must Have a Lang Attribute: How to Fix It
- April 3, 2022
- HTML Structure, Language

What "HTML Element Must Have a Lang Attribute" Means
This check fires when your opening <html> tag has no lang attribute, so nothing tells browsers, screen readers, or search engines what human language the page is written in. The machines are left guessing, and they guess badly.
The stakes land in two places. Screen readers pick the wrong pronunciation engine and read your English page with a French voice or vice versa, which is a genuine accessibility failure. And on multilingual sites, a missing or wrong lang undercuts your hreflang setup, because the on-page language signal and your hreflang annotations should agree.
The Failing Example and the Fix
Here is the broken markup. The <html> tag is bare:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Neighbourhood Bakery</title>
</head>The fix is to declare the language on the root element. For an English page:
<html lang="en">Use a valid BCP 47 code. en for English, fr for French, de for German. If you serve a region-specific variant, add the subtag: en-GB, en-US, pt-BR, es-MX. Do not invent codes like lang="english" or lang="en_US" with an underscore. The separator is a hyphen, and the language subtag comes first.
Language Codes You Will Actually Use
| Content | Correct value | Common wrong value |
|---|---|---|
| English (generic) | lang="en" | lang="english" |
| British English | lang="en-GB" | lang="en_gb" |
| US English | lang="en-US" | lang="us" |
| French (France) | lang="fr" or lang="fr-FR" | lang="french" |
| Brazilian Portuguese | lang="pt-BR" | lang="br" |
| Simplified Chinese | lang="zh-Hans" | lang="chinese" |
How to Detect It
- View Source. Open the page and look at the very first lines. If the tag reads
<html>with nothing after it, the attribute is missing. Thirty seconds for one page. - curl. Grab the raw HTML and check the root tag:
curl -s https://example.com/page/ | grep -i '<html'. You will see instantly whetherlang=is present and what value it carries. - Screaming Frog. Crawl the site and check the "Language" data in the internal or a custom extraction on
html[lang]. Any URL with a blank value is missing the attribute, and you get the full list in one export instead of hunting page by page. - GSC URL Inspection. Inspect the URL, run "Test Live URL," and view the rendered HTML. Confirm the
<html>tag Google actually rendered carries thelangvalue you expect, which matters if JavaScript sets it late.
How to Fix It
- Find where the
<html>tag is generated. In WordPress it is usually output by thelanguage_attributes()function inheader.php, which pulls from your Site Language setting under Settings > General. - Set the correct code. If WordPress is already calling
language_attributes()but the tag is bare, fix the Site Language setting rather than hardcoding, so the value stays consistent. - On hand-built templates, write the attribute directly:
<html lang="en">. - For multilingual sites, make each language version output its own correct code so the French pages say
frand the German pages sayde. A single hardcoded value across all languages is a common and quiet bug. - If you also set
xml:lang, make the two agree. A mismatch trips its own check, see lang and xml:lang must match.
Why This Is an Accessibility Issue First
Assistive technology leans on the lang attribute harder than search engines do. A screen reader like NVDA, JAWS, or VoiceOver switches its pronunciation engine based on the declared language. Feed it a French page marked lang="en", or unmarked so it defaults to the system language, and it reads French words with English phonetics, which ranges from awkward to unintelligible. That is a real barrier for users who rely on audio, and it is why the WCAG accessibility guidelines list "language of page" as a requirement, not a nicety.
The SEO angle rides on top of that. Google reads the same attribute as a language hint, and on any site that serves more than one language it expects the on-page lang, the hreflang cluster, and the actual content to tell one consistent story. When they conflict, you risk the wrong language version ranking for a query, which is both an accessibility miss and a traffic miss at once. Getting lang right is a two-for-one: it fixes the audio experience and shores up your international signals. For the ranking side of multilingual setup, see unsupported or misconfigured hreflang.
Frequently Asked Questions
Does the lang attribute affect my Google rankings?
It is not a direct ranking factor on its own, but Google uses it as one signal for the page's language, and on international sites it needs to line up with your hreflang. Get it wrong and you risk the wrong-language version surfacing for a query, which is a ranking and traffic problem even if the attribute itself is not a "factor."
Can I mark up individual elements in a different language?
Yes, and you should. Set the page-level language on <html>, then override on any inline chunk that switches languages, for example <blockquote lang="fr">...</blockquote>. Screen readers switch voices accordingly.
Should I use en or en-US?
Use the plain subtag like en unless a regional variant genuinely matters for spelling or pronunciation. If your content is deliberately British or American, en-GB or en-US adds useful precision. When in doubt, the two-letter code is a safe default.
How does this connect to hreflang?
Your lang attribute and your hreflang annotations are two signals about the same thing and they should never contradict each other. If a page says lang="en" but hreflang labels it fr, you are sending mixed signals. See the hreflang and international SEO FAQ to keep them aligned.
My CMS outputs the tag but the value is empty. What now?
That means the template is calling the language function but the CMS language setting is blank or misconfigured. Fix the setting (in WordPress, Settings > General > Site Language) rather than patching the template, so it stays correct through theme updates.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







