Internal linking strategy: one destination per topic, and anchor text that stands alone

An internal linking strategy comes down to two decisions per page: which page it points at, and what words carry the link. Hub and spoke, a four-column audit sheet, a command that finds orphan pages, and Google's own test for anchor text.

Rankings & Citations6 min read2162 views
Internal linking strategy: one destination per topic, and anchor text that stands alone

An internal linking strategy is two decisions repeated: which page each new page points at, and what words carry the link. Google can only follow an <a> element with an href, and it reads the visible link text to work out what the destination is about. Everything else — depth rules, link counts, sculpting schemes — sits on top of those two facts and is worth much less.

Before you start

You need a list of your own URLs, which your sitemap already is, and the ability to edit body content on the pages you care about. You do not need a crawler yet. The first pass is done against the sitemap and the pages you publish most often, because that is where new links get added anyway.

Why the link element is the whole mechanism

Google's own documentation on crawlable links, last updated 2025-12-10 and read on 2026-08-23, is unusually blunt about the format: "Generally, Google can only crawl your link if it's an <a> HTML element (also known as anchor element) with an href attribute. Most links in other formats won't be parsed and extracted by Google's crawlers."

That single sentence disqualifies a large amount of modern navigation. A <span> with a click handler, a router directive with no href, and an <a> whose destination lives only in an onclick are all listed in that page's "not recommended" column. They work for people using a browser. They are not links as far as crawling is concerned, so a menu built that way passes no signal to anything it points at.

A link that only works after JavaScript runs is a navigation feature. A link with an href is a route through your site.

The internal linking strategy: hub and spoke, not random cross-links

Pick one page per topic to be the page you want ranking. Everything else on that topic links up to it with anchor text that names the topic, and the chosen page links back down to the two or three deepest pieces. This is the whole structure, and it beats mutual cross-linking because it concentrates rather than spreads.

  1. List your topics. Not your page types — the questions readers arrive with.
  2. For each topic, name one destination page. If two pages both claim it, you have a different problem, and merging them comes before linking them.
  3. Every new page on that topic gets one link up to the destination, in the body, in a sentence that would exist anyway.
  4. The destination page links down to the strongest one or two spokes, so a reader who arrives at the top can get to the detail.
  5. Check the anchor text reads correctly on its own. That is Google's own test, quoted below.

Step 5 is the one with a documented pass condition. The same Google page suggests: "Try reading only the anchor text (out of context) and check if it's specific enough to make sense by itself. If you don't know what the page could be about, you need more descriptive anchor text." It also names the failing patterns directly — "Click here", "Read more", and linking the word "website" or "article".

The deliverable: a four-column audit sheet

One row per page you publish. Fill it in as you write rather than as a separate project, and the audit never becomes a project.

ColumnWhat goes in itFails when
PageThe URL you just wrote
Links up toThe one destination page for its topicEmpty, or more than one
Anchor usedThe exact visible textGeneric, or repeated site-wide
Linked fromPages that now point hereStill empty a month later

The fourth column is the one that catches orphans. A page with an empty "linked from" cell can be reached from your sitemap and from nowhere else, and a sitemap tells a crawler the page exists without telling it the page matters. Fixing it is one sentence added to an older page, which is why this column is worth keeping rather than admiring.

# Pages in your sitemap that nothing in your own HTML links to.
# Crude, single-level, and good enough to find the first ten orphans.
curl -s https://example.com/sitemap.xml \
  | grep -o '<loc>[^<]*' | sed 's/<loc>//' > /tmp/all-urls.txt

while read -r u; do
  curl -s "$u" | grep -o 'href="[^"]*"' | sed 's/href="//; s/"$//'
done < /tmp/all-urls.txt | sort -u > /tmp/linked.txt

comm -23 <(sort -u /tmp/all-urls.txt) /tmp/linked.txt

How many links is too many

Google publishes no number, and neither will we. What we can offer instead is what large sites actually ship: across 27 readable homepages crawled on 2026-08-23, we counted 5,104 links, a median of 165 per homepage, and 81% of them internal. That is a description of current practice, not a target — a homepage is the densest page on any site, and a blog post with 165 links would be unreadable.

The useful constraint is different: every link you add competes for the reader's next click with every other link on the page. Three links a reader takes are worth more than thirty they scroll past, and a page whose links are all in a footer block has told Google that none of them are part of the content.

Where this goes wrong

Four patterns, and the last one is the one that survives longest because it looks like work.

  • Links that only exist after JavaScript runs, with no href to fall back on.
  • Image links with empty alt. Google uses the alt attribute as the anchor text, so an empty one is an empty anchor.
  • The same anchor phrase pointing at different pages from different articles. You have told the crawler two pages are the answer to the same thing.
  • Adding a "related posts" block instead of body links. It is the same three links on every page, it sits below the content, and it does not describe anything.

Deep links into a specific section need the destination to have anchors at all, and most pages do not: in our own panel, only 69 of 967 headings carried an id. Before writing a link to #section, check the section exists as a target.

What this cannot fix

Internal links move attention around a site. They do not create it. A site with no external links and no rankings will finish this exercise with a tidier structure and the same traffic, and that outcome is common enough to say plainly rather than bury. If the destination page is not competitive on its own, the honest sequence is to fix the page first — the diagnosis path starts here.

We also cannot tell you how much any single link is worth. Nobody outside Google can, the effect is not separable from everything else changing on the page, and we have not run an experiment that isolates it. Treat the structure above as the version with the fewest wasted moves, not as a measured gain.

Common questions

How many internal links should a page have?

There is no published number. Use the reader as the constraint: links they will plausibly click, placed where the sentence needed them anyway. For reference, the 27 large homepages we measured carry a median of 165, and homepages are the extreme case, not the model.

Does anchor text really matter for internal links?

Google's documentation says the anchor text "tells people and Google something about the page you're linking to" and gives a test for it: read the anchor text alone and see whether you still know where it goes. That test costs nothing and catches most bad anchors.

Should I use nofollow on internal links to control crawling?

Google's guidance points elsewhere for that: for links within your own site, it names the robots.txt disallow rule rather than the rel attribute. Using nofollow internally to shape crawling is a workaround for a problem robots.txt already solves.

Do links in the footer count?

They are crawlable if they are proper anchor elements. Whether they carry the same weight as a link inside the body is not something Google states, and we have not measured it, so we treat body links as the ones worth writing carefully.

Part of the QueryWin handbook · Level 2

Internal linking strategy: one destination per topic, and anchor text that stands alone