- Success Criterion 1.3.1
- Conformance level A
- W3C reference F91
Table Header Cells Never Marked Up as Real Headers
1.3.1 — Info and Relationships
Scenario
Setting
A podcast app's episode list
What’s wrong
Data table header cells are not marked up as headers — screen readers can't tell users which column/row a value belongs to.
Example
A QA pass on a podcast app's episode list turns this up: data table header cells are not marked up as headers — screen readers can't tell users which column/row a value belongs to.
Why it matters
Screen-reader, braille, and reading-tool users who depend on coded structure rather than visual layout. On a podcast app's episode list specifically, they can't tell how the page is organized.
How to test
Click into each header cell in DevTools: it must be a th element (with scope for complex tables) — if it's a styled td, screen reader table navigation won't announce it as a header.
How to fix
Mark up header cells as th (with scope where needed) so data cells announce their headers.
Outcome
Fixed, a visitor to a podcast app's episode list can move through the content with confidence.
Who is affected
Screen-reader, braille, and reading-tool users who depend on coded structure rather than visual layout.
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