WCAG 3.1.1 Language of Page
Success Criterion 3.1.1 requires that the default human language of a page can be programmatically determined. It's a Level A criterion under Guideline 3.1 (Readable) — one of the smallest fixes in all of WCAG relative to its impact.
What "programmatically determined" means here
Screen readers apply an entirely different pronunciation engine per language — the same text read as English versus French versus Ukrainian phonetics sounds completely different. Without a lang attribute on the <html> element, most screen readers assume a default language (often English), mispronouncing everything else to varying degrees.
The fix
<html lang="en">
A valid BCP 47 language code — en, uk, de, fr, es, ja, and so on — satisfies this criterion. Region variants (en-GB, en-US) are also valid but not required just to pass; the base two-letter code is sufficient.
Why this is close to a mechanical, guaranteed-automatable check
Unlike most WCAG criteria, "does the html element have a valid lang attribute" is a simple, deterministic, zero-ambiguity check — a scanner can verify it with complete confidence, which is why it's one of the small number of fully automatable criteria in the entire spec.
Its sibling criterion: Language of Parts
WCAG 3.1.2 (Level AA) extends the same idea to content within a page that's genuinely in a different language than the page's default — a French quotation inside an otherwise-English article, for instance:
<p>As the French say, <span lang="fr">c'est la vie</span>.</p>
3.1.1 is the one nearly every site needs to get right (one attribute, one template, sitewide fix); 3.1.2 only matters for content that deliberately mixes languages within a single page. See Missing Page Language for more on both.
Common questions
- What is WCAG 3.1.1?
- A Level A criterion requiring the page's primary language to be declared in code, typically with html lang='en'.
- Why does the page language matter?
- Screen readers switch pronunciation rules and voices based on the declared language; without it, content can be read with the wrong accent and rules, harming comprehension.
- How do I fix a missing page language?
- Add the correct lang attribute with a valid language tag to the html element, e.g. lang='en' or lang='de'. Automated tools reliably detect a missing or empty value.
Related articles
Want to see how your own site scores?
Run a free accessibility scan