In one paragraph
Non-empty data cells in larger tables must have an associated header means cell values need the contextual relationships their table requires. Encode real headers rather than relying on bold styling or visual position alone. The supplied experimental rule is not executed in WebAuditOS, and its size threshold is not a WCAG exemption for small tables. Review meaningful header associations manually across the actual data structure.
Why it matters
A value such as 15 EUR is useful only when users can identify the destination and service it belongs to. Native header cells and appropriate relationships can provide that context during table navigation, subject to actual user-agent support.
The right structure depends on the data. Simple rows and columns may need straightforward th and scope; grouped complex tables may require a carefully designed association model. A caption names the table but does not replace the contextual headers for each data cell.
A visual header built from bold td text can fail to encode relationships. Conversely, mechanically converting every first cell to th can misrepresent data. Review content meaning rather than applying one transformation to every table.
How WebAuditOS evaluates this finding
The supplied td-has-header description targets selected data tables whose first three rows meet its multi-column heuristic. It checks documented non-empty cells and header relationships, with applicability exceptions. Those are engine boundaries, not the full scope of accessible data presentation.
The source says the rule is experimental and not requested in the current tag-based run, so it produces no finding in this report. Other table-reference checks can still run. Its nominal critical impact is not a reported severity here, and no finding does not establish header coverage.
How to fix it
- Distinguish data tables from obsolete layout use. For actual data, identify the row and column questions each value answers. Do not add data-header semantics to decorative layout.
- Use native header markup for a simple relationship. An illustrative table is:
<table>
<caption>Illustrative delivery rates</caption>
<thead><tr><th scope="col">Destination</th><th scope="col">Standard</th><th scope="col">Express</th></tr></thead>
<tbody><tr><th scope="row">Czechia</th><td>5 EUR</td><td>9 EUR</td></tr><tr><th scope="row">Slovakia</th><td>6 EUR</td><td>10 EUR</td></tr></tbody>
</table>
Use actual data and relationships. The example is not a universal template for complex grouped headers.
- For more complex structures, simplify the presentation when appropriate or apply correct header groups and explicit references. A headers attribute contains the relevant header IDs, not arbitrary human-readable text.
- Keep IDs unique and references within the appropriate table relationships. Adding a valid-looking token that points to a data cell or another table does not establish the intended association.
- Preserve meaningful spanning headers. A broad header may represent a real category rather than a fake title; decide whether caption, grouping, or another structure describes it best.
- Test reading order and header announcements with supported table navigation. Check responsive transformations, sorted data, virtualisation, and cells inserted later, not only a small static screenshot.
- Review small tables too. A 2-by-2 table can still need relationships even though the experimental rule's size gate ignores it. Do not omit context solely because there are few cells.
- Record manual results and rescan other table checks. A clean top-level violations report cannot validate this disabled rule or every embedded or dynamic table.
What the fix can break
Changing cells from td to th can affect styling, sorting, exports, and scripts. Preserve functional data and test visual presentation while repairing semantics.
Flattening a multi-level table without understanding it can lose distinctions users need. Prefer a simpler equivalent only when it still communicates the information accurately.
Do not add aria-label to every cell as a universal substitute for real relationships. That can duplicate or override useful content while leaving the structural model incomplete.
Questions
Is the three-by-three gate a WCAG size exemption?
No. It is the documented heuristic for this rule. Smaller data tables still need appropriate meaningful relationships.
Does a caption replace column and row headers?
No. Table identity and cell context are different needs.
Why is no finding not evidence that headers were checked?
The supplied experimental rule is excluded from the scan configuration. Inspect associations manually and through appropriate additional tools.
Which related checks help?
Review headers references, header-to-data relationships, and the automation limits guide.
What severity does this get in the report?
None, today - the rule is experimental in axe-core and our scan does not run experimental rules, so it never produces a finding. axe declares the rule critical; if it ran and failed, the mapping of critical and serious to high, moderate to medium and minor to low would make it high.