• 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