Demo Mode — read-only previewStart free trial
Issues

Non-empty <td> elements must have a table header

Critical1.3.1AXE · td-has-headerDocs
Pages 4on W3C BAD Demo
Elements 10
Open 21d 23hsince 08.09.26
First seen 08.09.26
Last seen 08.09.26

Every data cell in a large table must be associated with headers.

Scanner evidence

Engine: axeRule: td-has-headerWCAG: 1.3.1
Ensure that each non-empty data cell in a <table> larger than 3 by 3 has one or more table headers

How to fix

Fix all of the following: Some non-empty data cells do not have table headers

Affected elements (10)

https://www.w3.org/WAI/demos/bad/before/reports/home.html4
  1. <table id="p" class="report script_on">

    #p

    on https://www.w3.org/WAI/demos/bad/before/reports/home.html

  2. <table id="o" class="report script_on">

    #o

    on https://www.w3.org/WAI/demos/bad/before/reports/home.html

  3. <table id="u" class="report script_on">

    #u

    on https://www.w3.org/WAI/demos/bad/before/reports/home.html

https://www.w3.org/WAI/demos/bad/after/reports/home.html4
  1. <table id="p" class="report script_on">

    #p

    on https://www.w3.org/WAI/demos/bad/after/reports/home.html

  2. <table id="o" class="report script_on">

    #o

    on https://www.w3.org/WAI/demos/bad/after/reports/home.html

  3. <table id="u" class="report script_on">

    #u

    on https://www.w3.org/WAI/demos/bad/after/reports/home.html

https://www.w3.org/WAI/demos/bad/before/survey.html1
  1. <table width="500" border="0" cellspacing="2" cellpadding="0">

    table[width="500"]

    on https://www.w3.org/WAI/demos/bad/before/survey.html

https://www.w3.org/WAI/demos/bad/before/tickets.html1
  1. <table width="600px" cellspacing="0" class="prices">

    .prices

    on https://www.w3.org/WAI/demos/bad/before/tickets.html

AI guidance

Remediation suggestions generated by AI. Review before applying.

Why this matters: Screen reader users cannot understand table structure or locate data when cells lack associated headers, making the table unusable for navigation and comprehension.

Before

<table id="p" class="report script_on">
  <tr>
    <td>January</td>
    <td>1,250</td>
    <td>88%</td>
  </tr>
  <tr>
    <td>February</td>
    <td>1,400</td>
    <td>92%</td>
  </tr>
</table>

After

<table id="p" class="report script_on">
  <thead>
    <tr>
      <th>Month</th>
      <th>Revenue</th>
      <th>Growth</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>January</td>
      <td>1,250</td>
      <td>88%</td>
    </tr>
    <tr>
      <td>February</td>
      <td>1,400</td>
      <td>92%</td>
    </tr>
  </tbody>
</table>

Notes: Replace <td> with <th> for header cells and wrap header rows in <thead>. If row or column headers exist in non-first positions, use scope="row" or scope="col" attributes on <th> elements, or use id/headers attributes for complex tables. Apply this pattern consistently across all three affected tables (#p, #o, #u).

Powered by claude-haiku-4.5

Activity (0)

No activity yet.