• Success Criterion 1.3.1
  • Conformance level A
  • W3C reference F92

Presentation Role Wrongly Applied to a Real Table or List

1.3.1 — Info and Relationships

Scenario

Setting

A subscription box service's account settings

What’s wrong

role="presentation" (code that strips an element's meaning) is put on real content (an actual table or list), stripping its structure — screen readers lose the table/list entirely.

Example

<table role="presentation">
  <tr><th>Month</th><th>Charge</th></tr>
  <tr><td>May</td><td>$34.99</td></tr>
</table>

Why it matters

A subscriber using a screen reader hears only "May, $34.99" with no column context, because role=presentation erased the table entirely.

How to test

Search the DOM for role="presentation" or role="none": if applied to an actual data table or list, screen reader users lose all structure — check what the element actually is.

How to fix

role=presentation is only for tables built purely for layout; removing it restores real headers to real data.

<table>
  <tr><th>Month</th><th>Charge</th></tr>
  <tr><td>May</td><td>$34.99</td></tr>
</table>

Outcome

A subscriber hears each charge announced with its month, matching what the visual table shows.

Who is affected

Screen reader users reviewing billing history lose all row and column relationships in their real data table.

Learn more