Internal Linking as Plumbing
External links arrive at a handful of pages. What happens to them after that is internal linking, and internal linking is the one part of the link graph you own outright — no outreach, no negotiation, no waiting.
It’s also the part most often left to whatever the CMS emits by default.
What internal links do mechanically
Three distinct jobs, worth separating because fixes differ:
They create crawl paths. A crawler discovers URLs by following links and reading sitemaps. A page with no internal links pointing at it is discoverable only via the sitemap or an external link — and sitemap-only discovery is a weaker, slower path.
They distribute signals. Whatever authority arrives at your strongest pages propagates through internal links. A page four clicks from anything linked externally receives less than one linked directly from it.
They describe. Anchor text on an internal link is a statement about the target, and internal anchors are entirely under your control — which makes them the one place where anchor text is a design decision rather than something you hope for.
Click depth
Click depth is the minimum number of link-clicks from the homepage (or from any page with external links) to reach a given page.
The mechanism is straightforward: deeper pages are crawled less often and receive less internal signal. It’s not a cliff at any particular number, and the “three clicks” rule is folklore rather than documentation — but the direction is real and the practical target for important pages is shallow.
The check that matters isn’t average depth across the site. It’s depth of the pages you care about. A site can average 2.8 clicks and still have its highest-value commercial page at depth six because it’s only reachable through a filter.
Ways depth quietly grows:
- Pagination. Item 400 in a paginated archive is twenty pages deep unless something else links it.
- Faceted navigation. Products reachable only through a filter combination.
- Date archives as primary navigation. An article from 2021 sits behind year → month → page.
- Chronological decay. A post on the homepage at publication is depth one; two years later it’s depth five and nothing changed except time.
The last one is worth dwelling on because it’s invisible. Every evergreen page you published is getting deeper every week unless something deliberately links to it. Hub pages, “related” modules and in-body links to older content are the counterweight.
Orphan pages
An orphan has no internal links pointing at it at all. They’re created constantly and never on purpose:
- A landing page built for a campaign, linked only from an ad.
- A page whose only link was in a navigation block that got redesigned.
- Content migrated in bulk where the destination structure had no place for it.
- A page reachable only through internal search or a filter.
Orphans are worth finding because they’re usually either (a) pages that should be linked and are quietly invisible, or (b) pages that shouldn’t exist and are quietly diluting the site.
Finding them requires two datasets and a set difference: a crawl of your site following links only, and a list of URLs that exist from another source — the sitemap, the CMS export, server logs, or an analytics export. URLs present in the second list and absent from the crawl are orphans.
# crawled-urls.txt from a link-following crawl; all-urls.txt from the CMS or sitemap
comm -13 <(sort -u crawled-urls.txt) <(sort -u all-urls.txt)
Do it against logs as well as the sitemap — the sitemap is often generated from the same route table the crawler followed, so it can miss exactly the pages you’re hunting.
Internal links pointing at redirects
Extremely common and entirely self-inflicted: a URL changes, a redirect goes in, and the internal links pointing at the old URL are never updated. Now every internal link takes two hops.
It’s not catastrophic — the redirect works — but it wastes crawl requests, adds latency for users, and it’s the seed of the chains covered in redirect chains and how to flatten them. Since you control both ends, there’s no reason not to fix it.
Any site crawl will report internal links resolving to 3xx. Treat the report as a work queue: update the source links to the final target, keep the redirect rule in place for external links.
The same crawl will report internal links to 404s, which are worse and should be fixed first.
Anchor text on internal links
Internal anchors are the one anchor-text lever you fully control, and most sites waste it on “read more,” “click here,” and the bare URL.
Use descriptive anchors that would make sense read aloud out of context. Not keyword-stuffed — repeating the same exact phrase across two hundred internal links looks engineered and reads badly — but specific. “Our returns policy” rather than “here.”
One caveat worth knowing: where a page has multiple links to the same target, don’t assume every anchor is weighed. Behaviour here is not documented in detail, and the reasonable design is to make the first, most prominent link the descriptive one rather than relying on the fifteenth.
A structure that holds up
Nothing exotic:
- A hub page per topic, linking to everything in that topic.
- Every article links back to its hub, and to two or three genuinely related siblings.
- Navigation carries the hubs, not every page.
- Breadcrumbs on every page, which give the crawler an explicit, consistent path upward and cost nothing.
- Paginated archives capped, with hub pages as the real discovery mechanism rather than page 27 of a date archive.
The property this produces: every page is a short hop from something that receives external links, and every page has a reason for existing that’s expressed as a link from somewhere sensible.
What to check, in order
- Internal links to 404s — broken paths, fix immediately.
- Internal links to redirects — wasted hops, fix in bulk.
- Orphans — set difference of crawl vs sitemap/logs.
- Depth of your top twenty pages by value — not the site average.
- Pages with fewer than three internal links in — often accidental near-orphans.
- Anchor text on the links into your most important pages — usually “here.”
That’s a couple of hours with a crawler, and it’s the highest-yield technical work available on most sites, because unlike everything to do with external links, nobody has to agree to it.