Screen reader users often pull up a list of every link on a page. Nine links named "read more" become nine identical rows.
Screen reader users have a shortcut that sighted users do not: they can ask for a list of every link on the page and navigate it directly. It is one of the fastest ways to move around a site.
On a page where nine links all say "read more," that list is nine identical rows.
This is why link text keeps appearing in accessibility audits even on sites that have fixed everything else. The links work. They are keyboard reachable, they have visible focus, the colour contrast passes. They just do not say anything.
The rule in plain terms
WCAG asks that the purpose of each link can be determined from the link text, or from the link text together with its surrounding context that assistive technology can reach programmatically.
The practical version most teams should aim for is stricter and easier to apply: write link text that makes sense read aloud on its own, with nothing around it.
If the answer to "where does this go?" requires reading the paragraph above the link, the link text is doing too little work.
The usual offenders
"Click here." It describes the mouse action, not the destination, and it does not survive being read in a list.
"Read more" and "Learn more." These are the most common, because they are what a card component generates when the title and the link are separate elements. Every card on the page produces the same string.
A bare URL. A screen reader will read out the address character by character in some configurations. A long URL with parameters is close to unusable.
"Here," "this," "link." Same problem, shorter.
The same text pointing to different destinations. Two links both labelled "pricing" that go to different pages is a genuine confusion, not just a verbosity problem.
Different text pointing to the same destination. Less serious, but it makes a link list look like more choices than exist.
Rewrites that do not change the design
The objection is almost always visual: the design calls for a short call to action under each card, and "Read the full guide to ADA website compliance" does not fit.
There are three ways out, and all of them are ordinary.
The first is to make the heading the link. Card titles are usually descriptive already. Linking the title and removing the separate "read more" gives you good link text and one less element.
The second is a visually hidden extension. Keep "Read more" on screen and append the rest for assistive technology only:
```html <a href="/ada-website-compliance-guide"> Read more<span class="visually-hidden"> about ADA website compliance</span> </a> ```
The `visually-hidden` class must move the text off screen rather than hide it. `display: none` and `visibility: hidden` remove it from the accessibility tree, which defeats the purpose.
The third is `aria-label`, which replaces the link's accessible name entirely. It works, but use it last. It creates a mismatch between what is on screen and what gets announced, which breaks voice control users who say "click read more" and hit nothing. If you do use it, make sure the visible text appears inside the label.
Where the failure comes from
Almost never from a person writing "click here" on purpose.
It comes from components. A card, a teaser, a related-posts block, a pagination control. One template renders twenty instances, and the link text is a hardcoded string in that template. Fixing the template fixes all twenty at once, which is the good news buried in this problem.
It also comes from icon-only links. A social icon or an arrow with no text has no accessible name at all unless something supplies one. That is a more severe version of the same defect, because there is nothing to read rather than something unhelpful.
How to check it
Use the link list. Most screen readers offer one, and browser extensions can produce the same view. Read down the list and see whether you could navigate the site from it alone.
Anything that appears more than once and does not obviously point to the same place is a finding. Anything that would leave you guessing is a finding.
Automated scanners catch a portion of this — empty links, bare URLs, duplicated text — but they cannot judge whether "our approach" is descriptive enough for your content. The list review takes a few minutes and finds what the scanner cannot.
Why it is worth the effort
This is one of the few accessibility fixes with no design cost, no engineering complexity, and an immediate benefit to people who are not using assistive technology at all.
Descriptive link text is better for search engines, better for anyone skimming, and better for the person who copies a link into a message and wants it to make sense on arrival. It is a writing change, made once in a template, that keeps paying.
If you want to know which links on your own site fail this, a free scan will surface the mechanical cases, and the audit report covers the judgement calls a scanner cannot make.
Want answers specific to your site?
A free scan takes 60 seconds. The sample report shows exactly what a paid audit artifact looks like before you buy.