Operable · 2.4 Navigable

Link Purpose (In Context) WCAG 2.4.4 · Level A

The purpose of each link must be clear from its link text alone, or from the link text together with its programmatically determined context, such as its sentence, paragraph, list item or table cell. Links whose purpose would be ambiguous to users in general are exempt.

Level
A
Since
WCAG 2.0
Principle
Operable
Guideline
2.4 Navigable

Live demo

List the links as a screen reader does

The same task, done two ways: switch between the version that passes and the one that fails, or put them side by side. Everything in the box is live, so try it with a keyboard, a pointer or a screen reader.

Open the links view to hear the links on their own, the way many screen reader users scan a page. Then read the whole version to see what surrounds each link.

Live example

Passes

Local news

Rail strike called off

Unions and train operators reached a deal late on Sunday night.

Read more about the rail strike

New cycle lanes approved

The council voted to add protected lanes on three main roads.

Read more about the new cycle lanes

Library opens on Sundays

The central library will open from 10am to 4pm on Sundays from May.

Read more about Sunday library hours

What happened

    Why it passes

    Each link still shows Read more, but its full text continues with hidden words, such as Read more about the rail strike, so a list of links says where each one goes.

    Why it fails

    The links list reads Read more three times. Nothing in each link's own sentence or paragraph says which story it opens, so a screen reader user has to guess or go back and read around it.

    Examples

    Code that fails, and the fix

    Five examples, each one running: the usual ways this criterion fails, and code that passes. Listen to them, measure them, or copy the code.

    01What changes 6 lines

    Fails

    Read more with no context around it

    Live preview

    HTML
    <h2>Rail strike called off</h2><p>Unions and train operators reached a deal late on Sunday night.</p><p><a href="/news/rail-strike">Read more</a></p>

    The link sits alone in its own paragraph, so nothing in its own sentence or paragraph says where it goes. In a list of links, several of these all read Read more.

    Passes

    Vague link explained by its list item

    Live preview

    HTML
    <ul>  <li>Rail strike called off: unions and operators agreed a deal on Sunday.    <a href="/news/rail-strike">Read more</a></li>  <li>New cycle lanes approved on three main roads.    <a href="/news/cycle-lanes">Read more</a></li></ul>

    The link text is vague, but each link shares a list item with a summary of the story it opens, and 2.4.4 accepts purpose shown by the enclosing list item (technique H77). It would still fail the stricter 2.4.9.

    Passes

    Hidden words complete the link text

    Live preview

    HTML
    <style>  .visually-hidden {    position: absolute; width: 1px; height: 1px;    overflow: hidden; clip-path: inset(50%); white-space: nowrap;  }</style><p><a href="/news/rail-strike">Read more<span class="visually-hidden"> about the rail strike</span></a></p>

    The visible text stays short while the link's full text becomes Read more about the rail strike (technique C7). The class clips the words visually; display: none would hide them from screen readers too.

    02What changes + aria-label="Basket, 2 items"

    Fails

    Icon link with no accessible name

    Live preview

    HTML
    <a href="/basket">  <svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true">    <path d="M3 4h2l2 11h11l2-8H6"/>  </svg></a>

    The link holds only a hidden picture, so it has no accessible name. A screen reader can only announce it as a link, perhaps with its web address (failure F89).

    Passes

    Icon link named by its destination

    Live preview

    HTML
    <a href="/basket" aria-label="Basket, 2 items">  <svg viewBox="0 0 24 24" width="24" height="24" aria-hidden="true">    <path d="M3 4h2l2 11h11l2-8H6"/>  </svg></a>

    aria-label gives the link a name that says where it goes (technique ARIA8). The icon is hidden from assistive technology, so it is not announced as a separate image.

    Why it matters

    Who it helps

    Screen reader users often navigate by a list of links, and people with cognitive or motor disabilities want to know where a link goes before following it. Vague link text wastes their effort and leads to mistakes.

    W3C: Understanding 2.4.4
    • Level A

      Level A is the minimum: failing it can shut some people out completely.

    • In WCAG versions

      Part of WCAG 2.0 since December 2008, and of every version after it.

      WCAG 1.0 checkpoints: 1.2, 13.1

    • Where it is required

      Required where the law names WCAG 2.0 or later at this level: the United States, Canada, the European Union, the United Kingdom, France, Germany, Italy, Spain, the Netherlands, Ireland, Norway, Switzerland, India, Japan, Australia, New Zealand and Israel.

    How to test

    Checking it

    A few concrete steps. Automated tools find some failures; most need a person.

    1. List all links on the page, for example with a screen reader's links list or a page scanner.
    2. Where link text is vague, such as "Read more" or "Click here" alone, confirm the surrounding sentence, paragraph, list item or table cell makes its purpose clear.
    3. Check that image links and icon-only links have accessible names that describe their destination or action.

    Common failures

    Where it breaks

    • Several links say only "Read more" and nothing in their sentence, paragraph or list item explains what each one leads to.
    • An icon-only link, such as a social media logo, has no text alternative or accessible name.
    • A linked image has alt text describing the picture rather than where the link goes.

    On the Accessibility Checklist