What a link says about the page it points at
Link text is the one description of a page that somebody else writes. On your own site that somebody is you, on every page that points at it, which makes it the most repeated statement you make about what a page is for.
The short answer
Anchor text is a description of the destination, and it is read out of context by both screen readers and crawlers. "Click here" and "read more" describe nothing, and repeating one phrase across dozens of different destinations is the failure in the other direction. Write what the reader will find, in three to six words.
A link is a description of its destination
The words inside an anchor are treated as a claim about the page at the other end. That is the whole mechanism, and it explains both why click here is wasteful and why the fix is not just cosmetic: forty internal links reading read more are forty statements that the destination is about reading more.
It matters for people before it matters for machines. A common way to use a page is to jump between its links, and screen reader users can pull up a list of every link on a page with no surrounding prose attached. In that list, here, this page, read more and link are indistinguishable from each other, and a page with nine of them has produced a menu of nine identical options.
Which makes the bare URL a special case worth calling out. Pasting https://example.com/guides/carbon-steel-care as its own link text is readable on the page and unusable in a list, because it is announced character by character. The address is not a description, even when it happens to contain words.
<!-- says nothing, four times over -->
<a href="/guides/sharpening">click here</a>
<a href="/guides/sharpening">read more</a>
<a href="/guides/sharpening">this article</a>
<a href="/guides/sharpening">https://example.com/guides/sharpening</a>
<!-- says what is at the other end -->
<a href="/guides/sharpening">how to sharpen a carbon steel knife</a>
<a href="/guides/sharpening">our sharpening guide</a>
<!-- the fix when the visible text has to stay short -->
Angle and grit, step by step:
<a href="/guides/sharpening" aria-label="How to sharpen a carbon steel knife">read more</a>That last pattern is worth knowing. When a design genuinely requires a short label, an aria-label gives the accessible name without changing the visible text. It is a workaround rather than a first choice, because the label is now invisible to sighted readers and to anyone editing the page later, and it will go stale.
Four rules that cover almost every case
- The text should make sense read on its own. Not with the sentence around it. That is the test, and it is the only one you need for the common failures.
- Link the noun, not the verb. Put the anchor on the thing being referred to, not on the instruction to go there.
see our returns policybeatsseeour returns policy, and both beatclick herefor our returns policy. - Keep it short enough to be a label. A whole sentence inside an anchor is a target that is awkward to hit, awkward to hear announced, and diluted as a description. A few words is the useful range.
- Two links on the same page pointing at different destinations must not share their text. This is the rule most often broken by templates. Three cards, three
learn morelinks, three different pages.
There is a fifth rule for images used as links: the alt text becomes the link text. A linked logo with an empty alt is a link with no accessible name at all, which is the intersection of this check and the alt text check, and one of the few places where an empty alt is wrong.
The failure in the other direction
Because anchor text is a signal, it has been optimised for a long time, and the optimisation has its own recognisable damage. A page where every internal link to the same destination uses the identical keyword phrase reads as machine-written, because it is: nobody writing naturally refers to the same page the same way eleven times.
Vary it the way you would in speech. The sharpening guide can be how to sharpen a carbon blade in one place, our sharpening guide in another and the grit progression where that is the part being referred to. All three describe the destination, and together they describe it more completely than one phrase repeated.
The harder version of the same mistake is exact-match anchors stuffed into prose that did not want them. If a sentence has been bent to accommodate a phrase, the sentence is worse and the phrase is more obvious. Manipulative anchor patterns are one of the oldest things any search engine looks for, and internal links are the easiest place to spot them because you control both ends.
There is one situation where identical anchors are correct: navigation.
Your header, footer and breadcrumbs link to the same pages with the same text on every URL, and they should. Nobody wants a navigation bar whose labels vary by page. If a report flags your footer, that is the report failing to separate chrome from content rather than a finding, and it is another reason marking your navigation as navigation pays for itself.
Link text means nothing without its destination
The finding is a pair: the words in the link and the page they point at. A phrase is only vague relative to where it goes, and the same phrase pointing at two different pages is only visible when both links are in view.
This one needs the full crawl
The finding compares the words inside a link against the page that link points at, so it needs the text and the destination of every link you publish held together.
The instant search on this site audits a single page, so rather than show you a verdict it cannot support, this guide sends you to the place the check actually runs.
Does this affect AI search?
Yes, in a way that is easy to miss. Anchor text is one of the few pieces of text about a page that does not live on that page, which makes it unusually useful to anything trying to work out what a document is for without having read it yet. That was true for indexing and it is equally true for building a corpus.
There is a second effect that is specific to the machine case. Links inside your prose are how a model reading one page discovers that another page of yours exists and what it covers. A paragraph saying we cover this in our sharpening guide with the link on the phrase sharpening guide carries information. The same paragraph with the link on here carries a URL and a word.
What does not transfer is anchor text as a ranking lever. Nothing about a retrieval system rewards eleven identical keyword anchors, and the pattern makes the surrounding prose worse, which is the thing that does get read. So the AI argument here is the same as the accessibility argument, and both point at describing the destination plainly.
Why vague links rate alongside a missing description
This is Important for the same reason alt text is: it is an accessibility failure with a search consequence attached, and the accessibility half is not optional. A page of undifferentiated links is genuinely harder to use for some of your readers, and that stands on its own before any argument about relevance signals.
It stays below Critical because nothing is unreachable. The links work, the destinations are crawled, and the pages get found. What is lost is the description each link could have carried, which is an opportunity rather than an obstruction.
The rating also reflects a fix that is unusually well defined. Unlike most content findings there is no judgement about tone or length here: the words either describe the destination or they do not, and a template emitting read more can be corrected in one place for every card it renders. Cheap, unambiguous, and with a real consumer at the other end.
Listing every phrase that points at one page
Two questions worth answering on your own site: which anchors say nothing, and which pages are described inconsistently.
# every link on a page, as "text -> destination"
curl -s https://example.com/guides/carbon-steel \
| tr '\n' ' ' \
| grep -o '<a [^>]*href="[^"]*"[^>]*>[^<]*</a>' \
| sed -e 's/.*href="\([^"]*\)"[^>]*>\(.*\)<\/a>/\2 -> \1/' \
| sed 's/^ *//'
# the ones that describe nothing
curl -s https://example.com/guides/carbon-steel \
| tr '\n' ' ' \
| grep -oE '>(click here|read more|here|this|learn more|more|link)</a>' \
| sort | uniq -cRun the first command across a few pages and group the output by destination. Where one page is described five different ways, that is healthy. Where five different pages are described the same way, you have found the template to fix.
The second command is the fastest audit on this page. Anything it returns is text a reader hears with no context, and each hit is a one-line change.
Questions this check raises
- Why is "click here" bad link text?
- Because it is read without its surrounding sentence. Screen reader users routinely navigate by pulling up a list of every link on a page, and a list of fourteen entries reading "click here" is unusable. A crawler has the same problem with less recourse: the anchor is the strongest statement you make about what the destination is.
- Can anchor text be over-optimised?
- Yes, and it is the failure in the other direction. Every internal link to a page using the identical exact-match phrase reads as manipulation rather than as description, and it makes the page worse to read. Vary the phrasing the way you would if you were not thinking about search.
- Does anchor text matter for internal links or only external ones?
- Both, and internal is the half you control completely. External anchors are written by other people; every internal one is a statement you chose to make about your own page. That makes internal anchor text the cheapest description signal available, and the one most often wasted on "learn more".