table-duplicate-name
Web validation
<caption> should not contain the same text as its summary attribute.A data table's <caption> gives it a visible title that also becomes its accessible name. The older summary attribute was meant for something different: a short overview of how the table is organized, such as "Rows list employees, columns list quarterly sales."
When the caption and the summary contain the same text, some browsers and screen readers announce it twice, once as the table's name and once as its description. The repetition adds noise without adding information, and users may wonder whether they missed something.
Note: The summary attribute is obsolete in HTML5. Prefer a <caption> for the table's name, and put any extra explanation of the table's structure in nearby text, linked with aria-describedby if needed.
Pass Patterns
A caption without a summary attribute
The <caption> names the table, and there is no summary to duplicate it.
<table>
<caption>Quarterly sales by region</caption>
<tr>
<th scope="col">Region</th>
<th scope="col">Q1</th>
<th scope="col">Q2</th>
</tr>
<tr>
<th scope="row">North</th>
<td>$12,000</td>
<td>$14,500</td>
</tr>
</table>A caption with a separate description
The <caption> names the table, and a paragraph linked with aria-describedby explains its structure without repeating the name.
<p id="sales-desc">Rows list regions; columns list sales for each quarter.</p>
<table aria-describedby="sales-desc">
<caption>Quarterly sales by region</caption>
<tr>
<th scope="col">Region</th>
<th scope="col">Q1</th>
<th scope="col">Q2</th>
</tr>
<tr>
<th scope="row">North</th>
<td>$12,000</td>
<td>$14,500</td>
</tr>
</table>Fail Patterns
Caption and summary with the same text
The summary repeats the caption word for word, so screen readers may announce "Quarterly sales by region" twice.
<table summary="Quarterly sales by region">
<caption>Quarterly sales by region</caption>
<tr>
<th scope="col">Region</th>
<th scope="col">Q1</th>
<th scope="col">Q2</th>
</tr>
<tr>
<th scope="row">North</th>
<td>$12,000</td>
<td>$14,500</td>
</tr>
</table>WCAG techniques
Sufficient techniques
Try It Yourself
Using a screen reader
New to screen reader testing, or need a refresher?
Review this article first: Practical guides for using screen readers
- Load the page and open a screen reader.
- Move to the table (for example, press
Tin NVDA or JAWS). - Listen to how the table is introduced.
Expected result: The screen reader announces the table's name once, optionally followed by a different description.
Actual result: The screen reader announces the same text twice.
Inspecting the browser dev-tools
- Open your browser's dev tools and select the
<table>element. - Compare the text of its
<caption>with the value of itssummaryattribute.
Expected result: The table has no summary attribute, or its value differs from the caption.
Actual result: The summary attribute contains the same text as the <caption>.
FAQ
Why is this validation considered a best practice?
No WCAG success criterion requires the caption and summary to differ. Avoiding duplicate text keeps table announcements short and meaningful, so users hear the table's name once and any extra description only when it adds new information.
Why is this issue marked as Minor?
Hearing the same text twice is redundant and slightly slows navigation, but users still get the table's name and can read its contents. The impact is noticeable but limited, so the issue is rated minor.
Should I still use the summary attribute?
No. The summary attribute is obsolete in HTML5. Use a <caption> to name the table, and provide any extra explanation of its structure in visible text near the table, linked with aria-describedby if needed.