/ โ† Accessibility Fixes / Link Text
In this guide
  1. Why link wording matters so much
  2. What WCAG actually requires
  3. What the checker reports and what each finding means
  4. The fix, step by step
  5. Before and after: rewriting common patterns
  6. Markup for the tricky cases
  7. Where vague links come from on each platform
  8. Edge cases
  9. Questions and answers

Why link wording matters so much

Sighted visitors skim a page by eye. People who cannot see it skim in other ways, and links are one of the main ones. Every desktop screen reader can gather the links on a page into a single list: in NVDA and JAWS this is the elements list opened with Insert+F7, and in VoiceOver on a Mac it is the rotor, opened with Control+Option+U. The list shows each link's text and nothing else. Tabbing through a page gives a similar experience, one link at a time.

Speech recognition users meet the same problem from the other side. With Voice Control on Apple devices or Windows voice access, you activate a link by speaking what it says. If the visible words are "here" and there are four such links, the software has to ask which one you meant. If the link's hidden name differs from its visible words, saying what you can see may do nothing at all.

Search engines read link wording too. Google's own guidance asks for anchor text that is descriptive, reasonably concise and relevant to the page it points to. The SEO side of that, including anchor text on internal links, is covered in fixing anchor text; this guide stays with the accessibility rules.

What WCAG actually requires

Success criterionLevelWhat it means for links
2.4.4 Link Purpose (In Context)AYou can tell where a link goes from its text, or from its text together with its immediate context: the same sentence, paragraph, list item or table cell, or the heading directly above it.
2.4.9 Link Purpose (Link Only)AAAThe link text alone is enough. Not required for AA, but a sensible target for new content.
2.5.3 Label in NameAWhen a link has visible text, its accessible name contains those same words, ideally at the start.
1.1.1 Non-text ContentAA link made only of an image needs alt text that says where it goes.
4.1.2 Name, Role, ValueAEvery link has a name. An empty link fails.
1.4.1 Use of ColorALinks inside a block of text are not picked out by colour alone unless the colour differs enough from the text and another cue appears on hover and focus.

Note what 2.4.4 does and does not say. A "Read more" link placed right after a heading can pass at level A, because the heading is its context. It is still a poor experience in a links list, which is why most accessibility specialists recommend writing links that make sense alone wherever you can, and why the checker flags them.

What the checker reports and what each finding means

An automated check can detect wording and empty names. It cannot tell whether "Our prices" is a good description of a page that is actually about delivery charges, so read the links list yourself too.

The fix, step by step

Step 1

List every link out of context

Run the Accessibility Audit on each template, then open a screen reader and bring up its list of links, using Insert+F7 in NVDA or Control+Option+U in VoiceOver on a Mac. Read the list from top to bottom as if you had never seen the page. Mark every entry where you cannot say where it goes, every group of identical entries, and every entry that is just an address, a file name or the word link.

Step 2

Rewrite vague links so the words name the destination

Move the link onto the words that describe where it leads, instead of adding a separate phrase to click. "To see our prices, click here" becomes "See our boiler servicing prices". Put the most distinctive word first, keep it to a short phrase rather than a whole sentence, and drop filler such as "click", "link to" or "go to", because screen readers already announce that it is a link and touch users do not click.

Step 3

Fix repeated Read more links on cards and listings

On blog lists, product grids and service cards, make the card heading itself the link and remove the separate "Read more", or keep the visible button and add visually hidden words so it reads "Read more about winter boiler checks". If the whole card must be clickable, link the heading and stretch its clickable area across the card with a CSS pseudo-element, rather than wrapping every part of the card inside one enormous link.

Step 4

Give image and icon links a text name

For a linked image, write alt text that states the destination or action, not the picture: a linked logo becomes "Harbour Plumbing home page", not "logo". For icon links such as social profiles, basket or search, add visually hidden text inside the link or an aria-label, and mark the SVG icon itself with aria-hidden="true". Then check the links list again to confirm no entry is announced as a bare "link" or an address.

Step 5

Merge duplicate links that go to the same place

Product and article cards often have three links to one address: the image, the title and a button. Each adds a stop for keyboard users and a repeat in the links list. Wrap the image and title in a single link where the design allows, or take the image link out of the tab order with tabindex="-1" and hide it from screen readers with aria-hidden="true", leaving the text link as the only one announced.

Step 6

Warn about downloads, new tabs and other sites

When a link opens a file, include the type and size in the link text, for example "Price list (PDF, 240 KB)", so people know before they select it. If a link opens a new tab or window, say so in visible text or with an icon that has a hidden text alternative. Better still, open ordinary links in the same tab, which is the behaviour visitors expect and can override themselves.

Step 7

Keep the accessible name matching the visible words

Search the templates for aria-label on links. Where the label replaces the visible text with different wording, either delete it and improve the visible text, or rewrite it so it starts with exactly the words on screen, such as visible "Read more" with a label beginning "Read more about". This keeps voice control users able to say what they see, and meets WCAG 2.5.3 Label in Name.

Before and after: rewriting common patterns

BeforeAfterWhy it is better
For opening hours, click here.See our opening hours.The link words are the destination.
Download the menu here.Download the lunch menu (PDF, 180 KB).Names the file and warns about the format.
Read more (under every blog card)Heading link: How often should a boiler be serviced?Unique, and one link per card.
https://www.example.co.uk/termsRead our terms of sale.Readable aloud and in a list.
More info beside three plansCompare the Standard plan, Compare the Premium plan โ€ฆEach link is distinct.
A magnifying-glass icon, no textIcon plus hidden text "Search the shop"Has a name for screen readers and voice users.

When you rewrite, resist stuffing keywords into links. "Cheap emergency plumber Northfield plumbing services" is no easier to scan than "click here" and reads as spam to people and search engines alike. The goal is the shortest phrase that would make sense if someone read it on its own.

Markup for the tricky cases

Visually hidden extra words

This class hides text from sight but keeps it in the accessible name. Most themes already include one, often called screen-reader-text, sr-only or visually-hidden.

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

<a href="/blog/winter-boiler-checks/">
  Read more<span class="visually-hidden"> about winter boiler checks</span>
</a>

Put the hidden words after the visible ones, so the accessible name still begins with "Read more" and voice control commands keep working.

A card where the heading is the only link

<article class="card">
  <img src="/img/boiler.jpg" alt="">
  <h3><a class="card-link" href="/blog/winter-boiler-checks/">Winter boiler checks</a></h3>
  <p>Five things to do before the first cold snap.</p>
</article>

.card { position: relative; }
.card-link::after {
  content: "";
  position: absolute;
  inset: 0;
}

The whole card is clickable, but screen readers and the Tab key meet one link with a clear name. The image has empty alt text because the heading already says what it shows; see fixing alt text for when that is right. Keep any other interactive items in the card, such as a wishlist button, above the stretched area with position: relative and a higher z-index.

An icon-only social link

<a href="https://www.example.com/harbourplumbing">
  <svg aria-hidden="true" focusable="false" width="24" height="24">...</svg>
  <span class="visually-hidden">Harbour Plumbing on Facebook</span>
</a>

For more on when to reach for aria-label instead of hidden text, and the mistakes that make ARIA names worse, see fixing ARIA labels.

Where vague links come from on each platform

Edge cases

Links that look like buttons, and buttons that look like links

If it takes the visitor to another page or file, it is a link, whatever it looks like. If it performs an action on the current page, such as adding to the basket or opening a panel, it should be a <button>. Screen readers announce the two differently, and users rely on that to know what will happen.

Email addresses and phone numbers

A link whose text is an email address or phone number is acceptable, because the text is the destination. "Email us" or "Call 01234 567890" is equally clear.

Legal citations and references

In long documents with many references, short link text such as a footnote number is common. Give footnote links a hidden label such as "Footnote 3", and link back from the note to where it was cited.

Link colour and underlines

Links inside paragraphs need to stand out from the surrounding text by more than colour alone, unless the colours differ strongly and another cue appears on hover and focus. Keeping the underline is the simplest way to pass. Contrast ratios are covered in fixing colour contrast.

Questions and answers

1. Is "click here" an accessibility failure?

It can be. Under WCAG 2.4.4, a link passes at level A if its purpose is clear from the link text together with its surrounding sentence, paragraph, list item or heading. A lone "click here" in a sentence that explains the destination may technically pass, but it still fails people who scan a list of links, and it gives voice control users nothing clear to say. Rewriting it so the link covers the words describing the destination is quick and removes any doubt.

2. Are Read more links bad for SEO?

They waste an opportunity rather than cause harm. Google uses the words in and around a link to understand the page it points to, and its guidance asks for descriptive, concise anchor text. Dozens of identical Read more links tell it little about each article. Making the article title the link, or adding the topic to the link text, helps search engines and screen reader users at the same time, without any keyword stuffing.

3. Should I use aria-label to fix vague links?

Only with care. An aria-label replaces the visible text as the link name, so if it says something different from what is on screen, voice control users cannot activate the link by saying what they see, which fails WCAG 2.5.3 Label in Name. If you use it, start it with the exact visible words. Usually it is simpler and more robust to improve the visible wording or add visually hidden words after it.

4. How long should link text be?

Long enough to make sense on its own and short enough to scan, which in practice is usually two to eight words. A whole sentence as a link is hard to read in a links list and gives a very large click target that people hit by accident while scrolling on phones. Put the most distinctive words first, because many people only hear or read the start of each link before moving on to the next.

5. Do I need to say a link opens in a new tab?

WCAG level AA does not strictly require it, but warning people is good practice and is recommended in W3C techniques. An unexpected new tab disorientates screen reader users and breaks the back button for everyone. The best option is to open ordinary links in the same tab. Where a new tab is genuinely useful, such as a help page opened during checkout, add visible text or an icon with a hidden text alternative saying it opens in a new tab.

6. Can two links have the same text?

Yes, if they go to the same place. Two links reading Contact us that both go to the contact page are fine. The problem is identical text for different destinations, such as three Learn more links that each go to a different service. In a links list those are indistinguishable. Either make the visible text distinct, or add hidden words so each accessible name is unique while the visible design stays the same.

7. What should alt text say when an image is a link?

It should describe where the link goes or what it does, not what the picture looks like. A linked company logo in the header should say something like the company name followed by home page. A product photo linking to the product page can use the product name. If the same link already has text beside it inside the same anchor, the image can have empty alt text so the name is not read twice.

Find vague and empty links

The Accessibility Audit tests your page against WCAG 2.2 level AA and lists each finding with the element that failed and the success criterion behind it, including links with no text or duplicate vague text.

Open Accessibility Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All Accessibility Fixes  ·  Fixing ARIA Labels  ·  Fixing Anchor Text  ·  Fixing Alt Text  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.