- 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
- Understanding Understanding document (opens in a new tab)
- Technique Related technique (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