"Click Here" Is Not the Link Text That Fails Your Audit
Every accessibility checklist starts its section on links with "never write click here". Then it skips the links that actually fail: the icon link with no name, the logo image with no alt, the button-styled link whose accessible name doesn't match its label. Those are the ones a screen-reader or voice-control user genuinely cannot use.
Why Link Text Matters More Than It Looks
Screen readers can list every link on a page in one dialog: Insert+F7 in NVDA, the links rotor in VoiceOver. Many users skim a page that way, the same way they skim by headings. That list shows each link's accessible name and nothing else. No surrounding paragraph, no product card, no table column.
So a page of blog cards that reads perfectly well on screen becomes "Read more, read more, read more, read more" in the list, and the user has to leave the list and hunt through the page to find out which is which. That is a real usability problem, and it is worth fixing. It is just not, in most cases, a WCAG AA failure, and knowing the difference tells you what to fix first.
What WCAG Actually Requires of Links
| Criterion | Level | What it requires |
|---|---|---|
| 2.4.4 Link Purpose (In Context) | A | The purpose of each link can be worked out from the link text together with its context: the sentence, paragraph, list item or table cell it sits in. |
| 2.4.9 Link Purpose (Link Only) | AAA | The purpose can be worked out from the link text alone. This is the criterion "click here" fails, and AAA is rarely a legal or contractual target. |
| 4.1.2 Name, Role, Value | A | Every link has an accessible name. A link with no text, no alt and no aria-label fails this outright. |
| 2.5.3 Label in Name | A | If a link has visible text, its accessible name contains that text. Voice-control users say what they see, and "click Pricing" does nothing if the name is "nav-item-3". |
Read together, the failures are specific. A link with no accessible name at all fails. An image-only link whose image has no alt fails. A link whose aria-label replaces its visible words fails 2.5.3. "Read more" at the end of a paragraph that explains where it goes passes 2.4.4 at level A, because the context carries the purpose.
The Link Problems That Actually Fail
The icon link. Social icons in the footer, a cart icon in the header, a search magnifier: an a element wrapping only an SVG, with no text and no label. A screen reader announces the URL or just "link". This is the single most common way a site ends up in the empty-links count.
The image link with no alt. A logo linking home, a banner linking to a sale. If the image inside the link has no alt attribute, the link has no name, and it fails 1.1.1 and 2.4.4 at once. An empty alt="" on the only content of a link is just as bad: it tells the screen reader to ignore the only thing that could have named it.
The label that the name contradicts. A button-styled link reads "Start free trial" on screen, but a developer added aria-label="signup-cta" for analytics. The aria-label replaces the visible text as the accessible name, so a voice-control user saying "click Start free trial" gets nothing. That is a 2.5.3 failure.
<!-- No accessible name: fails 4.1.2 / 2.4.4 -->
<a href="/cart"><svg class="icon-cart"></svg></a>
<!-- Image link, no alt: fails 1.1.1 / 2.4.4 -->
<a href="/"><img src="/logo.svg"></a>
<!-- Visible label missing from the name: fails 2.5.3 -->
<a href="/signup" aria-label="signup-cta">Start free trial</a>
<!-- Fixed -->
<a href="/cart" aria-label="Cart"><svg aria-hidden="true" class="icon-cart"></svg></a>
<a href="/"><img src="/logo.svg" alt="Acme home"></a>
<a href="/signup">Start free trial</a>The Link Problems Worth Fixing Anyway
- Generic text. "Read more", "click here", "learn more", "here". Passes 2.4.4 at level A when the surrounding text explains it, fails 2.4.9 at AAA, and makes the links list useless. The cheapest fix keeps the design: add visually hidden text so the name becomes "Read more about heading structure".
- Bare URLs as link text. A screen reader reads
https://example.com/blog/2026/09/post?id=4411character by character. Not a WCAG failure, but painful. Use the page title instead. - Same text, different destinations. Five links all called "Details" that go to five different products. In the links list they are indistinguishable.
- New tabs without warning. A link that opens a new tab without saying so disorients screen-reader users, whose back button stops working. Only an AAA criterion covers it, but a short "(opens in new tab)" costs nothing.
- Paragraph-length link text. A whole sentence wrapped in a link is read out in full in the list, every time.
How to Write Link Text That Works
Put the destination in the words people click. "Read our heading structure guide" instead of "To read our heading structure guide, click here". Front-load the meaningful word, since screen-reader users often jump through the list by first letter.
Where a design needs short, repeated link text, such as cards, keep the visible text and extend the accessible name with visually hidden text rather than an aria-label. That keeps the visible words inside the name, so 2.5.3 still passes, and it survives translation tools, which often skip aria-label.
<a href="/blog/heading-structure">
Read more<span class="sr-only"> about heading structure</span>
</a>For icon-only links, give the link a name with aria-label and hide the icon itself with aria-hidden="true". For image links, the alt text describes the destination, not the picture: "Acme home", not "blue triangle logo".
How to Check Your Own Page
The checker at the top of this article reads your page's served HTML and lists every link a real user cannot operate: no accessible name, an image link with no alt, a visible label missing from the name. Those are counted as failures. Generic text, bare URLs and unannounced new tabs are listed for review and never counted, because at WCAG AA the surrounding sentence is allowed to carry a link's purpose. A tool that puts "read more" in a violation count is inflating it against a criterion almost nobody is measured on.
It reads one page. Link problems live in shared components, the header, the footer and the card, so the page you check is usually telling you about every page built from the same template. The whole-site scan checks every page in a real browser against WCAG 2.1 AA and names each failure with the element and page it is on; the checker's result hands your domain straight to it.
Frequently Asked Questions
Is 'click here' a WCAG violation?
Not at level A or AA in most cases. SC 2.4.4 Link Purpose (In Context), which is level A, allows the purpose of a link to come from its surrounding sentence, paragraph, list item or table cell. 'Click here' only fails outright under SC 2.4.9 Link Purpose (Link Only), which is level AAA. It is still poor practice, because screen-reader users who browse by the links list hear 'click here' with no context, so it is worth fixing even though it will not usually fail an AA audit.
What link problems actually fail WCAG AA?
Links with no accessible name at all, such as icon-only links with no label; image-only links whose image has no alt text; and links whose accessible name does not contain their visible text, which fails SC 2.5.3 Label in Name and breaks voice control. These are counted as failures because a real user cannot identify or operate the link, not just because the wording is vague.
Should I use aria-label or visually hidden text to fix 'read more' links?
Visually hidden text is usually better. An aria-label replaces the visible text as the link's accessible name, so if it does not include the visible words it fails SC 2.5.3 and voice-control users cannot activate it by saying what they see. Visually hidden text extends the name while keeping the visible words in it, and it is also translated by browser translation tools, which often skip aria-label.
What should alt text say on a linked image?
The destination or function, not the picture. A logo that links to the home page should have alt text like 'Acme home', not a description of the logo's shapes and colours. If the link also contains visible text that already names the destination, the image can have empty alt text so the name is not read twice.
Do links that open in a new tab need a warning?
WCAG AA does not require one; the closest criterion, 3.2.5 Change on Request, is level AAA. It is still good practice, because a new tab breaks the back button for screen-reader and keyboard users and can be disorienting. A short '(opens in new tab)' in visible or visually hidden text is enough.
Can two links have the same text?
Yes, if they go to the same place. Links with identical text that go to different destinations are a problem for anyone browsing by the links list, because the entries are indistinguishable. At level A the surrounding context may still make each purpose clear, so it is a review item rather than an automatic failure, but distinct accessible names are the reliable fix.
Fix the Links Nobody Can Use First
The links that fail an AA audit are the ones with no name. They look fine on screen, which is why they survive, and they almost always come from one shared component: the header icons, the footer socials, the card. Check one page with the tool at the top of this article and you have found the component.
Then scan the whole site. Every page, rendered in a real browser, every WCAG 2.1 AA failure named by criterion with the element it is on. No signup, no card.