On this page
Descriptive link text
Every link's text must describe where it goes. 'Click here' and 'read more' fail screen-reader users who scan a page by jumping from link to link.
What it is
Link text is the visible (or accessible) name of a link - the bit screen readers announce and the bit a sighted user scans for. WCAG 2.4.4 (Level A) requires that the purpose of each link is determinable from the link text together with its immediate context. The stricter 2.4.9 (AAA) requires the link text alone to be enough.
Why it matters
Screen-reader users routinely call up a list of all links on the page to navigate. If that list is “click here, click here, read more, read more, learn more”, the page has no usable structure. Sighted users skim links too - descriptive link text helps everyone. Search engines also use link text as one of the strongest signals of what the target page is about.
How to implement
Write link text that names the destination or the action:
<!-- Don't -->
<p>To read our refund policy, <a href="/refunds">click here</a>.</p>
<!-- Do -->
<p>Read our <a href="/refunds">refund policy</a>.</p>
For repeated “Read more” patterns on a card list, give each link a unique accessible name - the card heading is the easiest source:
<article>
<h2 id="post-42">How we cut bundle size by 60%</h2>
<p>…</p>
<a href="/blog/bundle-size" aria-labelledby="post-42">Read more</a>
</article>
Or include the title visually-hidden inside the link:
<a href="/blog/bundle-size">
Read more
<span class="visually-hidden"> about cutting bundle size by 60%</span>
</a>
Further rules:
- Don’t put the URL in the link text (“visit https://example.com/very/long/path”) - screen readers spell it out character by character.
- Don’t repeat the destination twice in the same paragraph with two different links.
- Different link text for different destinations. Two links named “Documentation” pointing at different pages are a fail.
- Same link text for the same destination. Two different names for the same URL is confusing.
- Indicate file type and language changes when relevant: “Annual report (PDF, 2.4 MB)”.
Common mistakes
- “Click here”, “read more”, “learn more”, “here”, with no context in the link itself.
- Image links with no alt text - the screen reader falls back to the URL.
- Identical link text on every card in a list, with no
aria-labelto disambiguate. - A long sentence wrapped in
<a>so the entire paragraph becomes the link text. - Whitespace-only links produced by CSS background images.
WCAG 2.4.4 Link Purpose & Screen Reader Link List Rotor Navigation
Writing self-descriptive anchor text across web pages requires understanding assistive technology navigation habits and WCAG success criteria:
- WCAG 2.4.4 Link Purpose (In Context) vs 2.4.9 (Link Only): WCAG 2.4.4 (Level A) allows link purpose to be understood from immediately surrounding sentence context. WCAG 2.4.9 (Level AAA) requires that every link text be completely unambiguous when read in isolation. Avoid vague anchor text such as “Click Here”, “Learn More”, or “Read More”.
- Screen Reader Links Rotor Navigation: Screen reader users (VoiceOver
VO+U, NVDAInsert+F7) routinely extract and iterate through a flattened list of all links on a page. If the links list contains ten entries reading “Read More”, the user cannot distinguish where each link navigates. Include visually hidden context (<span class="sr-only">about CSP headers</span>) oraria-labelattributes to disambiguate card links. - File Type & Target Notifications: When a link opens a PDF document or external application, state the file format and file size in the anchor text (
<a href="doc.pdf">Download Annual Report (PDF, 2.4 MB)</a>).
Verification
- Use a screen reader’s link-list shortcut. Every entry should make sense out of context.
- Run an automated checker; “Ambiguous Anchor Text” is a standard rule.
- Read the page through a print stylesheet that lists every link - it should still be navigable.
Related topics
Sources & further reading
- WCAG 2.4.4 - Link Purpose (In Context) (Level A) - W3C
- WCAG 2.4.9 - Link Purpose (Link Only) (Level AAA) - W3C
- Accessibility Checker - Ambiguous Anchor Text - Equalize Digital
- WP Accessibility - Content and images: Links - WP Accessibility