DIRECTIVE (EU) 2019/882 · IN FORCE SINCE 28 JUNE 2025 EU-HOSTED · GDPR-CLEAN
EAA Compliance

Rules · html-has-lang

Failure reference

Page language not declared.

Without a lang attribute, a German shop can be read aloud with English pronunciation rules — every word mangled.

01

What fails — and who it fails

The failure, in plain language.

Screen readers pick their speech engine from <html lang>. Missing or wrong values turn fluent content into noise, especially across the multilingual EU.

02

Detection — what the machine can and cannot judge

How the scanner finds it.

  • The <html> element is checked for a valid lang attribute on every page.
  • Mixed-language passages (3.1.2) are flagged for human review where detectable.
03

The legal reading — factual, not fearful

Where this sits in enforcement.

A one-attribute, site-wide fix at Level A. Assessors note it because it is universal: one missing attribute fails every page at once — and one edit repairs every page at once.

04

The fix — by pattern

The pattern that clears it.

Declare the primary language- <html> + <html lang="de">

Fix the template, not the page — one change typically clears every instance at once. The triage engine groups findings by template pattern for exactly that reason.

05

Verification — resolution is evidence, not a checkbox

Fixed means a scan said so.

On monitored domains, mark the finding fixed and the next scan verifies it: zero remaining instances converts the finding to Resolved, and both the claim and the confirmation land in the append-only ledger. Criteria that need human judgement close through sign-off in the coverage matrix — covered by the right method, never by assumption.

See where your templates stand.

A complimentary assessment renders up to 25 public pages in an EU-hosted browser and shows every instance of this failure — grouped, ranked, and honest about what still needs a human.