Free scan

Fix "Broken headers attribute reference" in HTML

Why it's a problem

In a complex table, a cell's headers attribute lists the ids of the headers describing it. If an id does not exist in the table (renamed, typo, deleted header), the screen reader reads the value without its header: “1,240” instead of “2026 budget, 1,240”.

How to fix it — HTML

Check that every id in headers matches a header cell (<th>) in the SAME table, and that no cell references itself. For a simple table (one header row and/or column), skip headers entirely: <th scope="col"> and <th scope="row"> are enough.

Avoid
<table>
  <tr><th id="poste">Poste</th><th id="budget-2026">Budget 2026</th></tr>
  <tr><th id="audit">Audit</th><td headers="audit budget2026">1 240</td></tr>
</table>
Correct
<table>
  <tr><th id="poste">Poste</th><th id="budget-2026">Budget 2026</th></tr>
  <tr><th id="audit">Audit</th><td headers="audit budget-2026">1 240</td></tr>
</table>

<!-- Tableau simple : scope suffit, pas besoin de headers -->
<tr><th scope="row">Audit</th><td>1 240</td></tr>

Check your site in 30 seconds

Conformly detects this kind of issue across all your pages, continuously, and alerts you on every regression.

Free scan

Other fixes