Rule page.table.missing-headers
Give data tables real <th> header cells
page.table.missing-headers is a check in Crawlmind's site audit that grades low-impact issues of this kind. This page explains why the rule matters and the exact fix.
Why it matters
A `<table>` with data rows but no `<th>` is just a visual grid — screen readers announce a wall of cells with no context, and AI engines can't map a value to the column/row it belongs to. Comparison and spec tables are exactly the content that gets pulled into answers, so header-less tables quietly lose you citations and fail accessibility checks.
The fix
Mark the header row (and first column, for matrices) with `<th>` + `scope`:
```html
<table>
<thead>
<tr>
<th scope="col">Plan</th>
<th scope="col">Price</th>
<th scope="col">Crawls / mo</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Pro</th>
<td>$29</td>
<td>50</td>
</tr>
</tbody>
</table>
```
Use `<th scope="col">` for column headers and `<th scope="row">` for the label cell of each row. Don't fake headers with bold `<td>` — the `<th>` element is what carries the semantics.