Accessibility Wiki

ARIA ID references must resolve unambiguously

Rule aria-idref-integrity · ARIA · impact serious · Static + live

↩ Back to the rules index · WCAG cross-reference

Why it matters

aria-labelledby, aria-describedby, aria-controls, for, headers and friends all reference elements by id. A dangling reference (no such id), an ambiguous one (duplicate ids), or an aria-owns cycle silently breaks the relationship — the label/description/ownership never reaches AT. This whole-document reference-graph check goes beyond what axe or HTML_CodeSniffer verify per-attribute.

How to fix

Make every referenced id exist exactly once, and ensure aria-owns forms a tree (no cycles, single owner).

Example

✕ Fails
<input aria-labelledby="missing">
✓ Passes
<span id="lbl">Email</span><input aria-labelledby="lbl">

WCAG success criteria

1.3.1 Info and Relationships — Level A

Structure and relationships conveyed visually (headings, lists, tables, labels, groups) must also be available programmatically.

Understanding 1.3.1

4.1.2 Name, Role, Value — Level A

Every UI component must expose a correct name, role, and (where relevant) state/value to assistive technology.

Understanding 4.1.2

Standards

This rule contributes to the following standards:

WCAG A EN 301 549

Standard Criteria
EN 301 549 9.1.3.1, 9.4.1.2

References