Tables use proper semantic markup: thead, tbody, th with scope, and caption
Why it matters
Data tables without semantic markup are read by screen readers as an undifferentiated stream of cell values—users hear numbers and words but cannot determine which column header or row label a cell belongs to. <th> elements with scope attributes are the mechanism that associates data cells with their headers, enabling screen readers to announce "Region: North America, Sales: $2.5M" instead of just "North America $2.5M". WCAG 2.2 SC 1.3.1 (Level A) requires information conveyed through presentation to be programmatically determinable. Section 508 2018 Refresh 502.3.6 specifically requires that tables preserve semantic meaning for AT. Complex tables (multi-level headers, row spans) that lack semantic markup are entirely unusable for blind users.
Severity rationale
Low because table markup failures affect specific data components rather than navigation or form submission, but they completely destroy the meaning of tabular data for screen reader users of those tables.
Remediation
Refactor every <table> to use <thead>, <tbody>, column <th scope="col">, and row <th scope="row"> elements. Add a <caption> that describes what the table shows:
<table>
<caption>Q3 2024 Revenue by Region</caption>
<thead>
<tr>
<th scope="col">Region</th>
<th scope="col">Revenue</th>
<th scope="col">YoY Growth</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">North America</th>
<td>$2.5M</td>
<td>+12%</td>
</tr>
<tr>
<th scope="row">Europe</th>
<td>$1.8M</td>
<td>+7%</td>
</tr>
</tbody>
</table>
For complex tables with merged cells, use headers attribute instead of scope to explicitly list the ids of all associated header cells.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Section 508 Accessibility Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 1.3.1 — Info and Relationships
- section-508:2018-refresh · 502.3.6 — Label Relationships — Table Headers
Taxons
History
- 2026-04-18·v1.0.0·Initial import from gov-section-508·automated