- Success Criterion 1.3.1
- Conformance level A
ARIA Reference Attribute Pointing to a Nonexistent Element
1.3.1 — Info and Relationships
Scenario
Setting
A grocery delivery app's shopping cart
What’s wrong
aria-labelledby (code pointing to the element that names it)/aria-describedby (code that ties help or error text to a field) pointing at nonexistent IDs.
Example
<span id="qty-label">Quantity</span>
<input type="number" aria-labelledby="qty-lbl" value="2"> Why it matters
A screen reader user hears only "spin button, 2" with no name at all, since aria-labelledby points to an id that doesn't exist.
How to test
Check aria-labelledby/aria-describedby values in DevTools against the DOM: if they reference an id that doesn't exist anywhere on the page, the reference silently fails.
How to fix
A broken ARIA reference fails silently, so double check every id it points to actually exists on the page.
<span id="qty-label">Quantity</span>
<input type="number" aria-labelledby="qty-label" value="2"> Outcome
A shopper hears Quantity, 2 and adjusts the count with full confidence in what they're changing.
Who is affected
Screen reader users adjusting item quantities in the cart get an unnamed control instead of the intended label.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Text Styled to Look Like a Heading Instead of Coded as One
- Text Columns Faked With Spaces Instead of Real Table Markup
- Table Layout Faked With Spaces Instead of Real Table Code
- Clickable Div Acting as a Link Button With No Real Role
- Structural HTML Tags Used Purely for Visual Styling
- Layout-Only Table Wrongly Coded With Real Header Cells