Tables Without Headers
Tabular data is rendered without proper row or column headers, reducing context in assistive navigation.
Try It Yourself
Demo warning
Without table headers, users hear disconnected values with no column meaning.
Inspect the example table and compare the announcement transcript with a properly structured table expectation.
| Name | Plan | Status |
| Ana | Pro | Active |
| Marcus | Starter | Past due |
Typical SR navigation without headers: "Ana, Pro, Active... Marcus, Starter, Past due."
Manual Testing Protocol
Follow this sequence to reproduce the failure consistently and verify the fix with the same workflow.
1. Setup
- Open table demo and ensure SR simulation is active.
- Focus the first data row before moving cell-by-cell.
2. Reproduction Steps
- Navigate across rows and columns in table order.
- Attempt to identify column meaning for each value.
- Compare interpretation of repeated values across rows.
3. Expected Failure Signals
- Cells are announced without associated header context.
- Users cannot reliably map values to column purpose.
- Comparative analysis across rows is error-prone.
4. Fix Verification
- Header cells use `th` with appropriate `scope` or associations.
- Announcements include row/column header context for each data cell.
- Complex tables expose relationships with explicit header mapping.
Evidence Capture Checklist
- Record the exact user goal that fails (for example: submit form, complete checkout, navigate menu).
- Capture screen recording + keyboard path from first interaction to failure state.
- Map failure to WCAG 1.3.1 (Level A) and affected user groups.
- Document business impact: conversion loss, support burden, legal/compliance risk, or trust damage.
The Impact
What Happens
- Users cannot map values to column purpose
- Sorting and comparisons become difficult
- Data comprehension drops significantly
Who Gets Hurt
The Broken Code
<table>
<tr><td>Name</td><td>Plan</td><td>Status</td></tr>
<tr><td>Ana</td><td>Pro</td><td>Active</td></tr>
</table>
<!-- Uses td for headers instead of th scope="col" -->WCAG 1.3.1: Reference
"Information, structure, and relationships conveyed through presentation can be programmatically determined."
Level A - Data tables require explicit header relationships to remain understandable.
Related Low Issues
Explore neighboring failures in the same severity band.
