Content · Web Development · HTML

HTML Table Accessibility and Common Mistakes

Accessible tables have a caption where helpful and actual header cells connected to data. The goal is for people to understand the row-and-column relationships, not just see a grid.

1 views Published Oct 19, 2026 Updated Oct 19, 2026 Admin

Accessible tables have a caption where helpful and actual header cells connected to data. The goal is for people to understand the row-and-column relationships, not just see a grid. Before writing the code, picture the information as a small grid. Each label should help a reader understand the value next to it.

What You Need to Know


Scope is usually enough for simple tables; complex header patterns may need IDs and headers. Test with a screen reader when a table gets complicated.

Read a table like a story about data. The caption says what you are looking at; row and column headers explain what the numbers or words mean.

Example: See It in Action


Add this example to the appropriate part of a practice HTML page. Read each line before you open the page in your browser.

This is a short HTML fragment. To try it as a webpage, put it inside the body element of a complete HTML document.

<table>
    <caption>Reading list</caption>
    <thead>
        <tr>
            <th scope="col">Book</th>
            <th scope="col">Pages</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th scope="row">Comets</th>
            <td>160</td>
        </tr>
    </tbody>
</table>

Let’s Understand the Example


  • Table represents information whose row and column relationships matter.
  • Caption gives the whole data table a clear name.
  • Scope explains which table row, column or group a th cell labels.

Look at a data cell and ask: “What row and column does this value belong to?” The header elements help answer that question, including for people who navigate the table with a screen reader.

What Should You See?


You should see a grid for “Reading list”, with headers such as “Book”, “Pages”, “Comets”. The browser displays cells, but meaningful table markup also helps readers connect each cell to its labels.

Read the first data row aloud together with its column labels. If you cannot explain a value without pointing to its position on screen, strengthen the headers.

Try It Yourself


  1. Read one table cell aloud together with its row and column labels.
  2. Save your changes, open or refresh the page, and compare the result with the original example.
  3. Tell a friend what your change did. If you are not sure, undo it, refresh the page, and compare.

Common Beginner Mistakes


  • Using only visual font weight to indicate table headers.
  • Do not replace actual header cells with bold ordinary cells. Header markup is part of the meaning, not just the appearance.

Key Takeaways


  • Accessible tables have a caption where helpful and actual header cells connected to data.
  • Table represents information whose row and column relationships matter.
  • Scope is usually enough for simple tables; complex header patterns may need IDs and headers. Test with a screen reader when a table gets complicated.
Share this resourceSend this page to someone who may find it useful.