Give table links context from cells and headers
Inside a data table, a link's purpose can come from its own cell plus the headers that cell belongs to. A Download link in the Invoices column of the March row is unambiguous, and W3C lists that as sufficient for 2.4.4 Link Purpose in Context. What carries it is the header association rather than the visual grid, so the technique rests on the table being a real table whose headers software can trace. The test is looser than people expect about how you get there. Headers in the first row need nothing extra, scope works, id and headers works, and W3C's test does not care which route you took. The link text can even be the data itself. In W3C's own example each price is the link, so a bare $67 arrives as Economy, Alamo, 67 dollars.
How we find it in an audit
We look at this wherever a table carries a column of repeated actions. Download columns, Edit links in an admin grid, View in a results table. Two things get verified. That the header markup genuinely binds the context to the cell, and that the headers plus the cell actually tell the links apart. A scanner can only confirm the table markup is well-formed.
How affected users experience it
With the markup right, each link arrives wearing its headers. March, Invoices, Download, link. With a layout-styled grid, or a table whose headers are not associated, the same page gives you Download, link, 40 times over. The links list is starker still. Forty identical entries, and the only way to separate them is to go back into the table and read the row.
Passes vs. fails
Passes
<tr><th scope="col">Month</th><th scope="col">Invoices</th></tr>
<tr><th scope="row">March</th><td><a href="/inv/2025-03.pdf">Download</a></td></tr>Fails
<div class="grid-row">
<div>March</div>
<div><a href="/inv/2025-03.pdf">Download</a></div>
</div>How this gets tested
The W3C publishes test rules that define what a checker looks for here.
- Link has non-empty accessible nameA tool can check this
- Link in context is descriptiveA tool can check this
- Links with identical accessible names and same context serve equivalent purposeA tool finds candidates, you decide
Other ways to satisfy this rule
22 guides on this site are filed under 2.4.4 Link Purpose (In Context). W3C lists this one as sufficient for that rule when used for identifying the purpose of a link using link text combined with programmatically determined link context, so the condition is part of the test rather than a footnote to it.
- ARIA7sufficientBuild clear link names from nearby headings
- ARIA8sufficientFix vague link text with aria-label
- C7sufficientAdd hidden text to clarify short links
- G53sufficientLet the sentence around a link explain it
- G91sufficientWrite link text that states its purpose
- G189sufficientOffer a switch to self-describing link text
This guide is our interpretation of W3C technique H79: Identifying the purpose of a link in a data table using the link text combined with its enclosing table cell and associated table header cells. W3C publishes its techniques as guidance rather than as the standard, and says so on every one of them. The success criterion is what conformance is measured against, and a technique is one documented way to meet it.