A11Y-WCAG-041

WCAG 3.1.1 Language of Page

Generated file current Authoring: Content complete
What file status means

This status reports only whether the generated procedure matches the current controlled source hash. It is not independent content verification, regulatory approval, product evidence or a conformance decision.

Recorded standards review: No optional specialist review recorded. Next review: Not scheduled.

MethodWCAG check
TesterAccessibility tester
Indicative effort33–48 min small scope

Check that each web page exposes an accurate default human language in code.

Available formats

Use this test in the format you need

The HTML procedure includes the working worksheet. JSON provides the structured source data. Editable Markdown files are delivered inside package downloads.

Purpose

What this test checks

Check that each web page exposes an accurate default human language in code.

What this result means: This WCAG 3.1.1 Language of Page procedure determines whether the recorded targets meet WCAG 3.1.1 on web-desktop-cross-browser in the tested states. A broader conformance decision must also account for every applicable target in the declared scope, complete processes, accessibility-supported use and the other WCAG conformance requirements.

Why it matters

Detect pages whose default human language is missing, invalid or does not match the page's predominant language. People most likely affected: people using screen readers or other language-aware assistive technology; People who rely on browsers to select fonts, dictionaries or pronunciation rules. Incorrect language processing can make content difficult or impossible to understand and can select the wrong pronunciation or script support. In the recorded web-desktop-cross-browser environment, apply the criterion to every relevant state and named normative exception; failures in critical tasks and complete processes carry the greatest user impact.

When to use it

Apply to every selected web page. Do not use screen-reader pronunciation as a substitute for inspecting the programmatic language declaration.

Confirm before starting

Mark it not applicable only when

Exceptions

WCAG 2.2 Success Criterion 3.1.1 states no exception to programmatic determination of a web page's default human language.

Prepare

What you need

  • The product area and test targets are agreed before testing starts.
  • The operating system, browser, viewport and input method are recorded.
  • Test data is safe to use and does not expose unnecessary personal information.

Targets and required variations

  • The programmatically determinable default language of each selected web page.
  • Test each distinct page or routed view in the frozen sample, including localised versions.
  • Recheck after client-side routing if the page language or predominant content changes.

Clean state

  • Start from a documented clean or known state and record pre-existing preferences, extensions and cached data that can change the result.

Effort estimate

Setup
10 min
Per target
8 min
Evidence
7 min
Technical review
8 min

Assumptions: one page or component state; add another execution block for each materially different template or state

Variation: Add a new per-target execution and evidence allowance for each additional target class or state that could produce a different result. Add setup time for each distinct environment.

Excluded: Client coordination, inaccessible-environment recovery, recruitment, legal review, remediation implementation and waiting time unless the procedure states otherwise.

Execute

Test steps

Follow each action in order. The expected result is always visible; open the guidance when you need setup, tool, evidence, decision or repeat details. Step-level recording is optional while work is in progress and required only to export a completed execution.

Step 1

Determine the page's predominant language

Purpose: Establish the human-language expectation before inspecting code.

User impact: An incorrect expectation can hide pronunciation and language-processing barriers.

Record the URL, route and build. Read representative headings, controls and body content; exclude proper names. Record the language used by the largest proportion of content, or the first language encountered when proportions are equal.

Expected result

The expected default human language and reasoning are recorded.

Failure observation

The tester guesses from the locale selector, URL or brand rather than the page content, or cannot determine the language defensibly.

Setup, evidence and decision guidance
Target
The selected page or routed view.
Required state
Final rendered content for one locale and route.
Tool or command
Browser plus an authoritative language reference when the tester cannot identify the language.
Record
EXE-REF-001 note containing route, build, representative text samples, expected BCP 47 tag and rationale.
Pass
The expected language is supported by representative page content.
Fail
The expectation contradicts the predominant content or lacks sufficient evidence.
Not applicable
No selected target is a web page.
Blocked
Language expertise or an accessible page state is unavailable.
Repeat or recover
Escalate unfamiliar or equally mixed language content to a competent language reviewer; keep the result cannot-tell until resolved.
Limitations
This scenario establishes the comparison value only; it does not decide WCAG 3.1.1.
If you are new to this test
Escalate unfamiliar or equally mixed language content to a competent language reviewer; keep the result cannot-tell until resolved.
Record this step

Step 2

Inspect the root language declaration

Purpose: Find the programmatic default-language value on the page root.

User impact: Missing language metadata can cause assistive technology to use the wrong pronunciation rules.

Inspect the rendered root `html` element. Record the effective `lang` value and the source attribute. Repeat after any client-side route change that replaces the page's predominant language.

Expected result

A non-empty programmatic language declaration is present on the page root.

Failure observation

No effective declaration exists, it is placed only on a nested container, or a route change leaves stale root metadata.

Setup, evidence and decision guidance
Target
The `html` element of the selected rendered page.
Required state
The same build, route and locale used in S1 after client-side rendering is complete.
Tool or command
Firefox Developer Tools 141 or later: Inspector, select `html`, inspect computed `lang`; equivalent DOM tools may be used when recorded.
Record
DOM extract or screenshot showing the root element, effective value, URL, locale and build.
Pass
A non-empty root declaration is present for every selected route state.
Fail
Any selected page lacks a programmatic root declaration.
Not applicable
The evaluated subject contains no web page.
Blocked
The rendered DOM cannot be inspected with the authorised environment.
Repeat or recover
Reload once without extensions; if the DOM still cannot be inspected, record the environment blocker rather than inferring the value.
Limitations
This scenario establishes presence and location, not tag validity or accuracy.
If you are new to this test
Reload once without extensions; if the DOM still cannot be inspected, record the environment blocker rather than inferring the value.
Record this step

Step 3

Validate the declared language tag

Purpose: Confirm the declaration is a recognised BCP 47 language tag.

User impact: Invalid values may be ignored or interpreted inconsistently by language-aware software.

Validate the complete tag. Record whether its primary language subtag is recognised and whether any script or region subtags are syntactically valid.

Expected result

The declaration is a valid, recognised language tag.

Failure observation

The declaration is empty, malformed, contains an unrecognised primary subtag or cannot be validated.

Setup, evidence and decision guidance
Target
The exact root language value captured in S2.
Required state
Unmodified declaration from the same page build.
Tool or command
IANA Language Subtag Registry or a validator that reports its registry/version.
Record
Declared tag, reference or validator version, validation output and any interpretation note.
Pass
The complete declaration validates against the named reference.
Fail
The declaration is invalid or unrecognised.
Not applicable
No page target exists.
Blocked
The reference needed to validate an unusual tag is unavailable.
Repeat or recover
Preserve the declaration and escalate unusual or private-use tags; do not replace uncertainty with a pass.
Limitations
Validity does not establish that the tag describes the page content.
If you are new to this test
Preserve the declaration and escalate unusual or private-use tags; do not replace uncertainty with a pass.
Record this step

Step 4

Compare the declaration with page content

Purpose: Decide whether the valid declaration accurately identifies the default language.

User impact: A valid but wrong tag can make text unintelligible when pronunciation or script handling changes.

Compare the primary language represented by the declaration with the expected language from S1. Record whether regional differences matter to identification of the human language.

Expected result

The programmatic declaration accurately identifies the page's default human language.

Failure observation

The tag is valid but identifies another language, or the evidence is insufficient to make an accurate comparison.

Setup, evidence and decision guidance
Target
The selected page's predominant content and root declaration.
Required state
Evidence from S1–S3 is complete and refers to the same page build.
Tool or command
Recorded content samples and validated tag; language specialist if needed.
Record
Side-by-side record of expected language, declared tag, representative content and comparison decision.
Pass
Declaration and page content identify the same default human language.
Fail
Declaration identifies a different language or is missing/invalid from earlier scenarios.
Not applicable
No web page exists in scope.
Blocked
The default human language remains genuinely indeterminate after escalation.
Repeat or recover
Use cannot-tell when qualified language judgement is unavailable; record what expertise would resolve it.
Limitations
The decision applies to this page and build only. Language changes within passages are assessed separately under WCAG 3.1.2.
If you are new to this test
Use cannot-tell when qualified language judgement is unavailable; record what expertise would resolve it.
Record this step

Decide

How to decide

Passed

The selected web page exposes a valid programmatic declaration that accurately identifies its default human language.

Failed

The page has no programmatically determinable default language, the declaration is invalid, or it identifies a different language from the page's default human language.

Not applicable
No web page exists in the evaluated subject. A selected web page is not inapplicable merely because it has little text.
Cannot tell
The tester cannot identify the predominant human language or validate an unusual language tag after reasonable escalation.
Not tested
The target is applicable, but a required state, environment, action or evidence item was not completed.
Aggregation and reporting boundaries

Aggregation: Preserve one outcome per selected page. Any failed page prevents a passed aggregate; cantTell and untested remain unresolved.

WCAG decision: A satisfied WCAG 3.1.1 decision requires all in-scope pages to meet the criterion and all WCAG conformance requirements to be handled. When no web pages exist, criterion handling occurs at report scope rather than by inventing a passed rule target.

Automation: A passed ACT language-attribute rule still requires the manual accuracy comparison and any non-HTML technology checks. A passed automated or ACT result must never set the criterion to satisfied automatically.

Record

Record the result

Record the target, state and observed behaviour. Add evidence or technical details only when needed.

Choose the option that best matches what happened to this target.

Describe the actual behaviour and why it supports the selected result.

When more than one target is recorded, the overall procedure result is calculated from all target results.

Environment: Not set.
Add evidence or details

Choose only the group needed for this record. These fields remain optional for a working draft.

Evidence references

Enter one file name, issue ID or evidence reference per line. Files stay on your device.

Test environment

Save a named profile once to reuse the same product, platform and environment details on other procedures in this browser.

Engagement and tester identifiers

WCAG report decisions

These report-level decisions are separate from the target outcome and require complete declared-scope evidence.

Formal completion and limitations

Identify the frozen list or sampling record used to select every target represented by this execution.

Choose a final result before marking the execution complete. Completed records require the full environment, step, evidence and method-specific information.

Data management

Export before clearing if the record must be retained. Apply the engagement retention schedule and delete browser data when it is no longer needed.

Saved drafts stay in this browser and are not uploaded. Do not enter credentials, secrets or unnecessary personal data.

Reference

Supporting information

Standards and requirement mappings
  • W3C-WCAG22 · 3.1.1 conformance · full

    This procedure addresses the page default only. Language changes within parts are assessed under WCAG 3.1.2.

  • W3C-ACT-RULES · b5c3f8 secondary · partial

    A passed ACT outcome does not by itself prove that the declared language accurately represents the page's default human language or satisfy every technology-specific branch.

  • W3C-WCAG22-QUICKREF · W3C-WCAG22-QUICKREF advisory · supporting

    This source does not override WCAG or create an additional WCAG conformance requirement.

  • W3C-ACT-RULES-FORMAT · W3C-ACT-RULES-FORMAT advisory · supporting

    This source does not override WCAG or create an additional WCAG conformance requirement.

  • W3C-WCAG22-TECHNIQUES · W3C-WCAG22-TECHNIQUES advisory · supporting

    This source does not override WCAG or create an additional WCAG conformance requirement.

  • W3C-LANGUAGE-OF-PAGE · Understanding 3.1.1 advisory · supporting

    Understanding guidance is informative and does not add a WCAG conformance requirement.

Supporting and advisory guidance

  • Screen-reader pronunciation is supporting accessibility evidence, not an additional normative condition.
Evidence specification
  • Scope record

    Page URL or route, content version and selected state.

    Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.

  • Language judgement

    Representative content samples, predominant-language decision and rationale.

    Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.

  • Programmatic structure

    Root language declaration, its DOM or document location and tag-validation result.

    Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.

  • Supporting assistive technology

    Optional exact screen-reader speech, versions and language-switching settings.

    Use a redacted extract or evidence reference. Do not include credentials, secrets or unnecessary personal data.

Worked example and outcome calibration

A11Y-WCAG-041-WORKED-001: representative worked example

Context: Synthetic Civic Benefits Portal application-status page, English locale, build CBP-2026.08.1.

Inspected: Visible headings and controls plus the rendered root `html` element after client-side routing.

Observed output: English was predominant, but the root declared `lang=fr` after navigation from the French locale.

Evidence:

  • EVD-REF-001 DOM extract with route/build
  • EVD-REF-002 representative English content samples
  • EVD-REF-003 valid-tag check for `fr`

Tester reasoning: The tag was present and valid, but accuracy is required; a valid French declaration does not identify this English page.

Decision: failed

Finding: FND-REF-001 — Application-status route retains the French page language. English content may be pronounced with French rules by language-aware screen readers.

Remediation: Update the route-level metadata so the root declaration becomes `en` before the English content is announced; add a route-change regression test.

Reviewer feedback: Reviewer corrected the draft from 'missing language' to 'inaccurate retained language' and removed a claim about every screen reader.

Final client wording: The English application-status route declares French as its default language after a locale change. This can cause language-aware assistive technology to use inappropriate pronunciation rules. Set the rendered page root to `lang="en"` for this route and verify language metadata on each locale transition.

Retest: RT-REF-001: representative fixed build changed the root value to `en`; DOM and content comparison passed for the sampled route.

Boundary: This is a representative, synthetic worked example for training and calibration. It is not evidence from a client product, participant or real assistive-technology execution.

Outcome calibration

Passed
An English page has `<html lang="en">`; representative content confirms English is predominant.

The declaration is programmatically available, valid and accurate.

Failed
A French page has `<html lang="en">`.

The declaration is present and valid but identifies the wrong default human language.

Not applicable
The evaluated subject is an audio file and contains no web page.

No target matches the rule's web-page applicability.

Cannot tell
The page uses an unfamiliar mixed language and qualified language support is unavailable.

The predominant language cannot be determined defensibly; this is not a pass.

Not tested
A selected localised route was inventoried but its root declaration was not inspected.

An applicable selected target remains untested.

Sampling, complete processes and platform limitations

Test every in-scope instance when practical. For a large population, document a sample that includes each template, content or control type, meaningful state and high-risk task.

If this check is part of a user journey, test the selected journey from start to finish, including relevant errors and recovery. Record any path that was not tested.

  • Check relevant browser, tool or assistive-technology release notes before assigning unexpected behaviour to the product.
  • If responsibility is unclear, record the reproducible behaviour and use cannot tell until it is resolved.
Related procedures

No related procedure is recorded.

ACT rules and WCAG technique traceability

This is a project-authored manual procedure, not a W3C Approved ACT Rule. An ACT result can support only the part of this procedure covered by that rule. It does not replace the remaining manual or assistive-technology checks.

  • HTML page has lang attribute b5c3f8

    Checks for a language attribute on applicable HTML pages. The validity and accuracy of the declared language need separate review.

  • Understanding SC 3.1.1. Techniques are examples, not extra requirements. Record any technique or common failure used, but decide the result against the success criterion.
Review history and source register
  1. 2026.08.27-rc.9 — Reworked for plain language, case-focused steps, scoped evidence and transparent draft review status.
  2. 2026.08.27-rc.9 — Migrated to professional catalogue schema v3 with separated outcomes, structured authority, applicability, evidence, decision and review records.
  3. 2026.08.27-rc.9 — Individually prepared WCAG 3.1.1 procedure content mapped to current normative and informative sources and checked for internal consistency; competent review, real execution and formal claim authority remain separate.
  4. 2026.08.27-rc.9 — Replaced migrated boilerplate with a case-specific reference implementation and completed generated-file integrity review.
  5. 2026.08.27-rc.9 — Rewritten as an atomic professional-delivery flagship with component effort guidance and a complete representative worked example.
  6. 2026.08.27-rc.9 — Procedure guidance and presentation simplified without changing draft governance status.

Review decision: pending. Open issues: Independent method and standards agent-verification passes must confirm executability, language judgement guidance and the ACT mapping; unresolved material findings block distribution eligibility.

WCAG
SC 3.1.1
Execution
Manual test with tool support
Catalogue version
2026.08.27-rc.9