Will It Vibe logoWill It Vibe?
A11Y-012Medium severity-8 points

Data table with no header cells

Part of Documentation, UX & Accessibility, which counts for 15% of the overall score. When this check fires it deducts 8 points from that category, once per scan, no matter how many places it turns up.

What it detects

A <table> has data rows (<tr> containing <td>) but not one <th> anywhere, so a screen reader has no column/row headers to announce and reads each cell as an anonymous value with no context. Change the header row cells to <th scope="col"> (or <th scope="row"> for row headers), which is a markup-only change with no visual difference by default.

Why it matters

A data table with no <th> anywhere gives a screen reader nothing to announce as column or row context, so each cell reads as an isolated value: "30", "25" with no idea those numbers are ages, or whose age. Sighted users get the same information for free from position and a header row that looks different; screen-reader users get none of that without real header cells.

How to fix it

Change the header row's cells from <td> to <th scope="col"> (or <th scope="row"> for a header column), which changes nothing about the default visual appearance since browsers already style <th> similarly to <td> unless your CSS overrides it. If the table has both column and row headers, scope each accordingly.

The paid report includes a ready-to-paste prompt for your AI coding agent for every check it finds, pointed at the exact findings from your scan. See pricing

Does your repo trip this check?

Paste a GitHub URL or drop a project folder. Scans run in your browser and take seconds.

Scan your repo

Related Documentation, UX & Accessibility checks