Declared language differs from the main content
In the reportDeclared language differs from supported main-content language
content_language_mismatch · Review item
Review the declared language and the actual main text. The check reports a mismatch only when the whole text and enough independently measured blocks agree on a supported language.
Severity: Medium. For review: a mismatch may be a stale declaration or unfinished translation, rather than a proven search problem.
Why it matters
A language declaration should describe the page people read. A stale declaration can confuse assistive tools and your own language management. Google determines language from visible content, so changing a declaration alone does not translate a page.
What to do
- Read the original declaration and measured language in the finding, then inspect the page source.
- Decide which language this address should contain. Correct html lang if the text is right, or finish translating the actual main content if the declared language is intended.
- Check hreflang separately and run a new full audit. This check compares html lang, not a hreflang self-reference.
When to leave it as it is: Leave intentional language differences for review when the measured original text does not represent your page or the model is wrong. Its score is not a guarantee.
What we read
We use the complete original HTTP 200 indexable server HTML and exactly one explicit main, role=main or article region, with a server-rendered classification. The original html lang must establish one valid IANA primary language. Pages naming another canonical address are excluded by the shared page eligibility check.
We compare base languages, ignoring regional differences. The supported whole-text label must agree with qualified blocks covering at least 80% of all counted main Unicode letters; unknown letters may account for at most 10%.
Example & evidence
Illustrative example, not a live audit.
A complete page declares html lang=uk, but its sufficiently long main text and measured blocks consistently qualify as English. The page is listed for review. Correcting html lang to en, or translating the main text into supported Ukrainian, can end this condition in a later complete audit.
Confirm & check again
Check for yourself: Open the page source, read html lang and compare it with the language of the main content. Read enough of the page to catch partially translated sections.
Check again: Full audit — Run a new full audit. The same address must be read again as complete supported server HTML with sufficient text and the admitted model available. A missing declaration, changed indexability, incomplete or unclear main region, unavailable model, or unsupported text never proves a previous finding fixed.
Limits & sources
This is a heuristic review of original server HTML. JavaScript-rendered text and external CSS are unmeasured; the check does not establish browser visibility, reproduce Google language detection or claim a ranking result.
The model considers 75 languages, but only English, Ukrainian and Russian detector results are admitted. Other or ambiguous results remain unknown. Whole text needs 100 lexical words and 500 Unicode letters; each measured block needs 20 words and 120 letters.
A label needs a returned score whose lower bound exceeds 0.9 and whose lower bound exceeds every other candidate upper bound by more than 0.85. These are model-score limits, not a 90% or 85% probability that the language is correct.
Short text, quotes, code and unsupported text retain unknown letter weight. Shared original text blocks are measured once; their saved integer score bounds are replayed without running the model again.
Confidence: Medium The language labels come from a bounded offline heuristic. A strong model score is not measured accuracy; review the actual main text before changing a page.
Sources
- Google Search Central, Managing multi-regional and multilingual sites — Background: Google identifies language from visible content and advises a clear language per page. This does not establish our model or thresholds. Checked 7 October 2026.
- PyPI, Lingua language detector 2.2.0 — Documents the pinned language-detection package and its model-based approach; it does not establish this audit’s thresholds or guarantee the language of a page. Checked 2 November 2026.
- IANA, Language Subtag Registry — Lists registered language, script and region subtags used to interpret language declarations; it does not identify the language of visible text. Checked 2 November 2026.
- IANA, Language Tag Extensions Registry — Lists registered language-tag extension identifiers and their defining references; an extension does not establish a page’s content language or canonical suitability. Checked 2 November 2026.
Editorial review: 2 November 2026