- Success Criterion 2.4.4
- Conformance level A
Link Whose Only Distinguishing Context Is Its Table Position
2.4.4 — Link Purpose (In Context)
Scenario
Setting
A coworking-space booking app
What’s wrong
Links whose only distinguishing context is visual position (column meaning without header association — table semantics broken so context fails).
Example
<table>
<tr><td>Desk A - Window</td><td>$25/day</td><td><a href="/book/a">Book</a></td></tr>
<tr><td>Desk B - Quiet Zone</td><td>$30/day</td><td><a href="/book/b">Book</a></td></tr>
</table> Why it matters
A screen reader user tabbing to Book hears only Book, link with no row header announced, since the table has no real header cells.
How to test
Read a link's context: if the only thing distinguishing it from similar links is its visual column position (with no header/name association), it fails for screen reader users.
How to fix
Real th scope="row" cells let screen readers announce row context automatically; naming the desk in the link text also helps.
<table>
<tr><th scope="row">Desk A - Window</th><td>$25/day</td><td><a href="/book/a">Book Desk A - Window</a></td></tr>
</table> Outcome
A member tabbing through the table hears Book Desk A - Window without cross-checking columns.
Who is affected
Screen reader users navigating booking tables can't tell which desk a Book link belongs to without reading linearly.
Learn more
- Understanding Understanding document (opens in a new tab)
Related scenarios
- Link’s Purpose Explained Only in Unrelated Page Text
- Image-Only Link or Button With No Accessible Name
- Repeated ‘Click Here’ Links With No Way to Tell Them Apart
- Multiple ‘Download’ Links With No File Name or Type Given
- Icon-Only Link With No Accessible Name at All
- Link Text That’s Just a Long, Meaningless Tracking URL