Descriptive link text is the visible text inside an <a> element that clearly describes where the link goes — readable on its own, out of context. The link-nameaudit fails any link with no accessible name, and accessibility heuristics also flag generic phrases like "click here", "read more", and "learn more" because they tell screen-reader users nothing when extracted into a list of links.
link-name rule fails when an <a> with an href has no accessible name — empty link, image-only link with no alt, or aria-hidden applied to its only text.Think of link text the way you think of an envelope's recipient line. "To: them, somewhere" gets nothing delivered. "To: the 2026 SEO checklist" gets it where it belongs — for screen-reader users, AI extractors, and Google's ranking system at the same time.
Link text is one of the rare elements that affects accessibility, SEO, and AI visibility with the same edit. Get it right once, three audiences benefit.
The link-name rule fails the strict accessibility cases — links with no accessible name at all. Heuristic checks then flag a wider set of low-quality patterns.
<a href="/page"></a> — no text, no aria-label, no title. The user hears nothing.<a href="/cart"><img src="cart.png"></a> — the image has no alt, so the link has no accessible name.<a><i class="fa-search"></i></a> — the glyph isn't real text and the link has no aria-label.<a href="https://...">https://www.example.com/very/long/url</a> — screen readers read the entire URL character by character.<!-- Bad: empty link -->
<a href="/page"></a>
<!-- Bad: generic text, no topical signal -->
<a href="/blog/2026-seo-checklist">click here</a>
<!-- Bad: URL as link text -->
<a href="https://www.example.com/blog/2026-seo-checklist">
https://www.example.com/blog/2026-seo-checklist
</a>
<!-- Bad: image link with no alt -->
<a href="/cart"><img src="cart.png"></a>
<!-- Good: descriptive text -->
<a href="/blog/2026-seo-checklist">Read the 2026 SEO checklist</a>
<!-- Good: icon-only link with an accessible name -->
<a href="/search" aria-label="Search">
<svg aria-hidden="true" focusable="false">...</svg>
</a>
<!-- Good: image link with alt as the accessible name -->
<a href="/cart">
<img src="cart.png" alt="View shopping cart">
</a>
<!-- Good: card pattern — descriptive heading link, full-card click via ::before -->
<article class="card">
<h3>
<a href="/blog/2026-seo-checklist" class="card-link">
Read the 2026 SEO checklist
</a>
</h3>
<p>An updated guide to ranking in 2026...</p>
</article>
<style>
.card { position: relative; }
.card-link::before {
content: "";
position: absolute;
inset: 0;
}
</style>Most teams have a small number of empty or icon-only links and a long tail of generic anchors. A single audit pass surfaces both.
The cleanest pattern is to use the destination page's primary noun phrase as the anchor: "Read the 2026 SEO checklist" links to the page literally titled "The 2026 SEO Checklist". Predictable for users, strong topical signal for search.
"Download the report" or "The 2026 report (PDF)" both work. "Click here to download the report" buries the meaningful text behind a generic prefix and makes the screen-reader links list useless.
An icon-only search button needs aria-label="Search". Hide the decorative SVG/icon-font glyph from assistive tech with aria-hidden="true", and make sure the visible icon reads as a recognizable affordance for sighted users.
When an <a> wraps an <img>, the image's alt becomes the link's accessible name. Write the altfrom the destination's perspective ("View shopping cart"), not the image's ("cart icon").
Link the heading text (which is descriptive on its own) and use a CSS ::before with position: absolute; inset: 0 on the link to make the entire card click-able. The accessible name stays meaningful while the click target stays large.
If a layout truly requires multiple "Read more" links, append a visually-hidden span that disambiguates each one — for example "Read more <span class='sr-only'>about Core Web Vitals</span>". Sighted users see "Read more"; screen-reader users hear the full phrase.
Screen readers read URLs character by character. Replace https://www.example.com/blog/post as the visible anchor with the page's title ("Read the 2026 SEO checklist") and keep the URL only inside the href.
Aim for 2 to 8 words of anchor text. Long enough to convey purpose without context, short enough that the screen-reader links list stays scannable and the SEO anchor signal stays focused.
What's happening: An <a href="..."></a> with no text, no aria-label, and no labelled child. Screen readers announce "link" with no destination.
Fix: Add visible text, or — if the design requires no visible text — add an aria-label describing the destination.
What's happening: The link technically has text, so the strict audit passes, but the text fails WCAG 2.4.9 because it conveys no purpose on its own.
Fix: Rewrite as "Read the 2026 SEO checklist" or link the headline of the card itself instead of a separate "Read more" anchor.
What's happening: <a><img src="cart.png"></a>. The image has no accessible name, so neither does the link.
Fix: Add alt="View shopping cart" to the image, or wrap the image in a link with an aria-label if the image is purely decorative.
What's happening: The visible anchor is the full URL. Screen readers read it character by character; AI parsers and Google extract no topical signal.
Fix: Replace the visible text with the destination's title or a noun-phrase summary. Keep the URL only inside href.
The same link, written four different ways, succeeds or fails for very different reasons depending on which audience you optimize for.
| Anchor Text | Screen-Reader Quality | SEO Anchor Signal | AI Extraction |
|---|---|---|---|
| "click here" | Useless in the links list. | Zero topical signal. | No relationship inferred between source and destination. |
| "read more" | Indistinguishable when repeated. | Negligible signal. | Treated as boilerplate; usually ignored. |
| Full URL as text | Read character by character; painful. | Weak signal — only domain words count. | Often skipped during summarization. |
| "Read the 2026 SEO checklist" | Clear in the links list out of context. | Strong topical signal on the destination's primary keyword. | Direct concept linkage; high citation odds. |
Descriptive link text is the visible text inside an <a>element that clearly describes where the link goes — readable on its own, without needing the surrounding sentence. "Read the 2026 SEO checklist" is descriptive; "click here" is not.
Three are most relevant. SC 2.4.4 Link Purpose (In Context) at Level A requires the purpose to be clear from the link plus its immediate context. SC 2.4.9 Link Purpose (Link Only) at Level AAA requires the link text alone to convey purpose. SC 4.1.2 Name, Role, Value at Level A requires every link to expose an accessible name to assistive technology.
Not technically — "click here" gives the link an accessible name, so the strict link-namerule passes. But heuristic checks flag it as a warning because it fails WCAG 2.4.9, and screen-reader users routinely cite "click here"-style anchors as the worst pattern in their links lists.
They announce "link" with no name, leaving the user no way to know where it goes. NVDA, JAWS, and VoiceOver all expose a links list that strips surrounding context, so an empty or generic link is functionally invisible in that view.
Add aria-label to the link with a short verb-object phrase ("Search", "Open menu", "View cart") and mark the inner SVG or icon glyph with aria-hidden="true"so it isn't announced separately. The link then has exactly one accessible name from one source.
Yes — directly. AI search systems parse anchor text to map a page's outbound and internal navigation, and the resulting graph influences how the page is summarized and cited. Descriptive anchors give AI extractors a clean concept-to-concept signal; "click here" gives them noise.
Anchor text is a documented Google ranking signal that has been part of the algorithm since the original PageRank papers. Descriptive internal anchors carry topical signal to the destination page, helping it rank for the relevant queries; generic anchors carry essentially none.
Link text is one of the highest-leverage edits on any site. The same rewrite that lifts a page out of WCAG 2.4.4, 2.4.9, and 4.1.2 failures also strengthens its anchor-text signal in Google and tightens the concept graph AI search engines build for it. Get the anchors right and three audiences benefit at once.
Strip empty links and image-only links with no alt first; then sweep for "click here", "read more", and URL-as-text anchors and rewrite each one to name its destination. Run a Greadme deep scan to surface every weak anchor on your site and ship the fixes as a single GitHub PR.