Declared language
The document declares its language: <html lang> is present and a well-formed BCP 47 tag, and any hreflang alternates carry well-formed values. Self-referencing and reciprocity are not checked — both require fetching the alternates, and a wrong warning there would be the scanner's limit charged to the site.
No rate published. Too few labelled cases to publish a rate: 1 flagged case (30 needed to publish), 1 defective case (30 needed to publish). The counts are the honest answer here. The matrix behind markup.language is 6 labelled cases — reported here rather than turned into a percentage that would read as more certain than the evidence is.
Corpus v1, measured under rubric r2026.11.0. Full method and every other check at /rubric/accuracy.
Add `lang` to your `<html>` element (`<html lang="en">`, `<html lang="de-DE">`). If you publish translations, declare them with `<link rel="alternate" hreflang="..." href="...">` using BCP 47 tags — language[-Script][-REGION], hyphens not underscores.
Free scan, 30 seconds, no signup — this check and the other 35, with the exact evidence for each verdict.
Scan my site →