Serious1.3.1 Info and Relationships (Level A)Rule ID: th-has-data-cells
Table header cells must describe data cells
A `<th>` exists but is not associated with any `<td>` data cells.
Rule Description
Checks header/data associations to ensure each header cell contributes meaning to one or more data cells.
Why It Matters
- Extra or orphaned headers create confusion in table navigation
- Users hear irrelevant headers that do not describe data
- Complex table interpretation becomes unreliable
How to Fix
Use valid scope, headers, or table structure so each header maps to data cells.
Bad Example:
<table> <tr><th>Unused Header</th></tr> <tr><td>Value</td></tr> </table>
Good Example:
<table> <tr><th scope="col">Product</th><th scope="col">Price</th></tr> <tr><td>Headphones</td><td>$99</td></tr> </table>
Common Mistakes
- Using
<th>for visual style only - Missing scope in simple tables
- Broken associations in complex matrix tables
Testing
- Use screen reader table navigation to confirm header announcements
- Check header-to-cell mapping in accessibility inspector
- Validate table semantics in automated tooling
External Resources
Automate Your Accessibility Testing
Our tool automatically checks for this rule and hundreds of other accessibility issues.
Start Your Free Trial