Discover how a few simple tags can make your tables friendly to everyone, not just sighted users!
Why Table accessibility basics in HTML? - Purpose & Use Cases
Imagine you create a table with rows and columns to show data, but you only use plain <table> and <td> tags without any extra info.
Screen readers and keyboard users get confused because they can't tell which cells are headers or how cells relate to each other. This makes your table hard or impossible to understand for many people.
Using proper table markup like <th> for headers, scope attributes, and captions helps assistive technologies understand the table structure and read it clearly.
<table> <tr><td>Jan</td><td>100</td></tr> <tr><td>Feb</td><td>150</td></tr> </table>
<table> <caption>Monthly Sales</caption> <tr><th scope="row">Jan</th><td>100</td></tr> <tr><th scope="row">Feb</th><td>150</td></tr> </table>
It enables everyone, including people using screen readers, to understand and navigate your tables easily and quickly.
Think about a website showing a schedule or price list; accessible tables let users with disabilities find the info they need without confusion.
Tables need clear headers and captions for accessibility.
Use <th> and scope to define relationships.
Accessible tables improve experience for all users.
Practice
<caption> element in an HTML table?Solution
Step 1: Understand the role of
The<caption><caption>element is used to give a title or description to a table, which helps screen readers and users understand the table's content.Step 2: Compare with other options
Options B, C, and D describe other table parts or styling, but only<caption>provides a descriptive title.Final Answer:
To provide a title or description for the table, improving accessibility. -> Option BQuick Check:
<caption>= Table title [OK]
- Confusing <caption> with <tfoot> or <thead>
- Thinking <caption> styles the table
- Ignoring accessibility benefits of <caption>
Solution
Step 1: Identify the correct element for header cells
The<th>element is used for header cells, not<td>.Step 2: Understand the scope attribute
For column headers,scope="col"is correct.<th scope="col">Header</th>uses<th scope="col">, which is the proper syntax.Final Answer:
<th scope="col">Header</th> -> Option DQuick Check:
<th scope="col">= Column header [OK]
- Using <td> instead of <th> for headers
- Mixing scope="row" with column headers
- Omitting the scope attribute
<table>
<caption>User List</caption>
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alice</td>
<td>30</td>
</tr>
</tbody>
</table>Solution
Step 1: Understand scope="col" usage
Thescope="col"attribute on the<th>means the header applies to the entire column below it.Step 2: Identify which cells belong to the "Name" column
The first column cells, such as "Alice", are associated with the "Name" header for screen readers.Final Answer:
The header "Name" is linked to the first column cells like "Alice". -> Option AQuick Check:
scope="col" links header to column cells [OK]
- Confusing row and column scope
- Thinking headers need id attributes to link
- Assuming caption links headers
<table>
<tr>
<td>Product</td>
<td>Price</td>
</tr>
<tr>
<td>Book</td>
<td>$10</td>
</tr>
</table>Solution
Step 1: Check for caption element
The table lacks a<caption>, which helps describe the table for screen readers.Step 2: Check header cell tags and attributes
The first row uses<td>instead of<th>for headers, and noscopeattributes are present.Final Answer:
All of the above. -> Option CQuick Check:
Missing caption, wrong header tags, and no scope = C [OK]
- Using <td> for headers
- Skipping caption element
- Not adding scope attribute to headers
Solution
Step 1: Use
This helps all users understand the table's purpose.<caption>for table descriptionStep 2: Use
Column headers get<th>with proper scope for headersscope="col", row headers getscope="row". This clarifies relationships for screen readers.Final Answer:
Use <caption> for the title, <th scope="col"> for column headers, and <th scope="row"> for row headers. -> Option AQuick Check:
Caption + th with scope col/row = best accessibility [OK]
- Using <td> for headers
- Skipping scope attributes
- Relying only on aria-labels on data cells
Ready to prove it?
Pass the test and this pattern moves unknown
