Start scanning free

( Perceivable / WCAG 1.3.1 )

Table is missing header cells

This check maps to Info and Relationships. Use the guidance below to confirm the issue, understand who it affects and ship a fix.

Serious Level A WCAG 1.3.1 — Info and Relationships

What’s wrong

A <table> element uses only <td> cells with no <th> elements to identify column or row headers.

Why it matters

Screen reader users navigate tables cell by cell. As they move through a data table, the screen reader announces the header for each cell so they understand what the data means. Without <th> elements, the screen reader reads raw data with no context.

How to fix it

Use <th> for header cells and add a scope attribute to clarify whether it applies to a column or row.

Before
<table>
  <tr>
    <td>Name</td>
    <td>Role</td>
  </tr>
  <tr>
    <td>Sarah</td>
    <td>Designer</td>
  </tr>
</table>
After
<table>
  <thead>
    <tr>
      <th scope="col">Name</th>
      <th scope="col">Role</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sarah</td>
      <td>Designer</td>
    </tr>
  </tbody>
</table>

Learn more