Overview
The <html> element must have a lang attribute so screen readers use the correct language, pronunciation rules, and voice.
The lang attribute on <html> tells screen readers which language to speak—and which pronunciation rules and voice to use. Without it, a screen reader may read English content with a French synthesizer (or vice-versa), turning your page into gibberish. It’s a two-minute fix (WCAG 3.1.1), it’s automatically detectable, and it’s a common failure simply because it’s easy to forget in a template.
The Problem
This pattern is inaccessible — avoid it.
The Fix
Use this accessible pattern instead.
Step-by-step
Add lang="en" (or the appropriate BCP 47 language code) to the <html> element.
For content in a different language inline, add lang to that specific element.
Use BCP 47 codes: en, fr, de, es, zh-CN, ar, etc.
Common Mistakes
No lang attribute on the <html> element.
A lang value that doesn’t match the actual content language.
Inline content in another language with no lang on that element.
Copy-pasting a boilerplate template that hard-codes the wrong language.
How to Test for It
View source and confirm <html lang="…"> is present and correct.
Run an automated scan—missing or invalid lang is reliably flagged.
Listen with a screen reader to confirm the correct voice is used.
Framework Notes
How to apply this fix in your stack.