Guide · Architecture & internal linking
How to Build an Internal Linking Strategy That Scales
How to decide which pages need internal links, where the links should come from and what the anchors should say, with an audit that shows what each tool can see, a priority model and a maintenance routine.
12 min readUpdated
Updated November 14, 2026: Separated what Google documents about links from folklore, removed unsupported statistics, and added a tool comparison, a priority model, a worked example and a maintenance routine.
An internal linking strategy answers three questions for every page that matters: which of your other pages should link to it, where on those pages the link should sit, and what the anchor text should say. This guide shows how to answer them on a site with hundreds or thousands of pages: what Google actually documents about links, how to audit the links you have (and what each tool can and cannot see), a priority model for deciding where links go, anchor rules, cluster patterns, and a maintenance routine that stops the structure decaying as you publish.
Internal links are one of the few search inputs you control completely. You decide which pages point where, with what words, and you can change it this afternoon. That is why it is worth doing deliberately rather than leaving it to whoever wrote each article.
What Google documents, and what it does not
A lot of internal linking advice is folklore. Start from what Google has written down:
- Links are how pages are found. Google discovers new URLs by extracting links from pages it already knows, and from sitemaps. A sitemap does not guarantee that a URL is crawled or indexed, and Google notes that on large sites it is harder to make sure every page is linked from at least one other page.
- Every page you care about needs a link.In Google’s words, “Every page you care about should have a link from at least one other page on your site.” (Link best practices)
- Links must be crawlable. Google reliably follows
<a>elements with anhref. Links added with JavaScript are fine as long as they use the same markup; click handlers on other elements may not be followed. - Anchor text matters, especially internally. Google asks for anchors that are descriptive, reasonably concise and relevant, tells you to pay more attention to the anchor text of internal links, and warns that cramming keywords into anchors is keyword stuffing, a spam policy violation.
- There is no ideal number.Google: “There’s no magical ideal number of links a given page should contain. However, if you think it’s too much, then it probably is.”
- Links still carry weight. Google’s ranking systems guide says it has systems that understand how pages link to each other, and that PageRank continues to be part of its core ranking systems.
- Do not nofollow your own pages. Google’s link attribute guidance is about outbound links. For links within your own site to pages you do not want crawled, it points to a robots.txt disallow rule instead.
What Google has notpublished: how much a link’s position on the page matters, how navigation and footer links are weighted against links in body text, or any role for click depth. Treat claims about those as practitioner opinion. This guide uses click depth as a diagnostic (deep pages tend to be under-linked), not as a ranking factor.
What internal links do
| Job | What it means in practice |
|---|---|
| Discovery | New and updated pages get found and recrawled through links from pages Google already visits. |
| Context | The anchor and the sentence around it tell readers and Google what the target page is about. |
| Importance | Pages that many relevant pages link to are, on your own site’s evidence, more important. |
| Reader paths | A link at the moment a reader wants more keeps them on your site instead of back in search. |
Anatomy of a good internal link
Navigation links, in menus, breadcrumbs and footers, give your site its structure. Contextual links, inside the body of an article, carry the most information: someone chose to connect these two pages, and the surrounding sentence explains why. Most of the work in this guide is about contextual links, because they are the ones that drift.
Is this internal link pulling its weight?
Is it in the body, where the linked topic is actually discussed?
Does the anchor describe the target page?
Does the target return 200, without a redirect?
Is the target the one page you want ranking for this topic?
Anchor text, by example
| Weak | Better | Overdone |
|---|---|---|
| “Click here” to read our audit guide | Start with a full content inventory | content audit content inventory template free |
| For more, read this article | See how to choose which pages to merge | The same exact-match phrase on every link to the page |
| Learn more | Our expense report template is free to download | A whole sentence as the anchor |
Vary anchors naturally across the pages that link to a target: the main phrase sometimes, a partial match or a description of the content other times. Do not put links right next to each other; Google specifically advises against chaining links together.
Common problems
- Orphan pages. Pages no other page links to. They exist in the CMS and perhaps the sitemap, but no path on the site leads to them. Common after redesigns, migrations and URL changes.
- Pages linked only from navigation or feeds. A new post that appeared on the blog index for a week and then slid off is effectively an orphan once it reaches page five of the archive.
- Links to redirects and dead pages. Each round of merges and URL changes leaves links pointing at 301s and 404s. Google follows redirects, but readers wait, and every hop is one more thing to break.
- Generic anchors.“Read more” and “this article” tell neither readers nor Google anything.
- Several targets for one topic.Three different pages linked with the anchor “content audit” is a symptom of keyword cannibalization, and links that keep it going.
- Links pooled at the top. The homepage and section pages are already linked from every page via navigation. Adding more links to them in body text does little; the pages that need links are deep guides, comparisons and product detail pages.
- Footer link blocks.Fifty deep links in a footer clutter every page and give no context. If you think it is too many, Google’s own test applies.
Auditing what you have
Know what each tool can see
No single source gives you the whole picture. Pick tools by the question you are asking:
| Source | Sees | Does not see |
|---|---|---|
| A full site crawler (Screaming Frog, Sitebulb and similar) | Every link in the HTML, including navigation and footers; click depth; redirects and broken links | Search demand, unless you connect it |
| Search Console Links report | Google’s view of your most internally linked pages, and which pages link to a given URL | A complete list: Google says it is a sample, tables stop at 1,000 rows, and removed links can linger |
| Morrison | Links inside each page’s main content, plus status code, redirect target, page type and Search Console clicks and impressions | Navigation, footer and sidebar links, and click depth: Morrison reads main content only |
| Server logs and Search Console Crawl stats | What Googlebot actually requests, and how often | Why it does or does not crawl a page |
The Links report limits come from Search Console Help. The practical split: use a full crawler for structure (orphans, click depth, navigation), and a content-level view for the contextual links that editors control.
The audit, step by step
- Count contextual inbound links per page.Take each page’s outgoing links from its body content, then count, for every target URL, how many pages link to it. A pivot table does this.
- Find true orphans.Collect every URL you know about from your sitemap, your CMS and Search Console’s Page indexing report. Compare that list with the URLs a full crawler reaches from the homepage. Anything in the first list but not the second is an orphan. Pages linked only from navigation need a separate check; see orphan pages: how to find and fix them.
- Join search data. Add three months of clicks, impressions and average position per URL from Search Console.
- Join status codes. Flag every internal link whose target returns a 3xx or 4xx. Fix those with a find-and-replace to the final URL.
- Add click depth from the full crawler, for the pages you care about most.
Deciding where links should go
Tier your pages
- Tier 1, money pages: product, pricing, high-converting landing pages and the hubs for your most valuable topics. These should get the most contextual links, from the most relevant pages.
- Tier 2, supporting content: guides and articles that earn search traffic and lead readers to Tier 1. They need enough links to rank, and they are your main link sources.
- Tier 3, utility pages: about, legal, archives. Navigation is enough.
A priority model
Pages that already show Google relevance but sit just off the top results usually have the most to gain from more internal support. A rule of thumb for a first pass, using three months of Search Console data:
| Signal | High priority | Low priority |
|---|---|---|
| Tier | Tier 1 or 2 | Tier 3 |
| Impressions | 1,000 or more | Under 100 |
| Average position | About 4 to 20 | Top 3 already, or beyond 50 |
| Contextual inbound links | 0 to 2 | Already well linked from relevant pages |
A page that ticks all four high-priority boxes goes to the top of the queue. Calibrate the impression threshold to your site: on a small site, 1,000 impressions in three months may be a top page.
Worked example
An illustration with made-up numbers, not client data. Five pages from an audit of a B2B software site:
| Page | Contextual inbound links | Impressions, 3 months | Avg position | Action |
|---|---|---|---|---|
| /guides/sso-setup | 1 | 18,400 | 9.2 | Top priority: add links from the 5 to 8 most relevant articles |
| /pricing | 3 | 6,100 | 4.1 | Add links from comparison and how-to pages where pricing comes up |
| /blog/saml-vs-oidc | 0 | 2,300 | 14.8 | Orphan in content: link from the SSO guide and the security hub |
| /guides/api-auth | 22 | 9,800 | 2.3 | Leave: already well supported |
| /blog/2019-company-offsite | 0 | 40 | 48.0 | No action; a pruning candidate instead |
From audit to links
1. Count contextual inbound links per page
From body content only; add navigation and click depth from a full crawler.
2. Tier the pages
Money pages, supporting content, utility pages.
3. Join Search Console data
Impressions and average position per URL over three months.
4. Rank targets
Tier 1 and 2 pages in positions 4 to 20 with few contextual links first.
5. Find source pages and place links
Relevant pages that already earn traffic or links; descriptive anchors in the body.
6. Recrawl and measure
Confirm the links are live, then compare the targets over 8 to 12 weeks.
Choosing the pages that link
Relevance comes first: a link only belongs where the target topic is actually discussed. Among relevant pages, prefer the ones that are themselves strong: pages with search traffic, links from other sites, or many internal links. Search Console’s Links report and a backlink tool show which those are. Your best-linked articles and your hubs are natural sources.
If an important page has almost no relevant pages that could link to it, that is usually a content gap rather than a linking problem. Forcing links from unrelated pages helps nobody; content gap analysis shows what supporting content is missing.
How many links per page
Google gives no number, and neither should you as a hard rule. As a starting point: every page you care about gets at least three contextual links from relevant pages, and each article links wherever a reader would plausibly want to go next. A 3,000-word guide naturally carries more links than a 500-word post. If you are adding links to hit a quota, stop.
Internal links in topic clusters
Links are what turn a set of related pages into a topic cluster. Three patterns, from basic to complete:
- Hub and spoke. The hub links to every supporting page; every supporting page links back to the hub with a descriptive anchor. The minimum for any cluster.
- Mesh. Supporting pages also link to each other where their content genuinely overlaps: a page on audit methodology links to the page on inventories because a reader of one needs the other.
- Cross-cluster. Where topics meet, such as migrations and redirects, link across clusters so your site does not split into silos that never refer to each other.
The test for each link is the same as for any other: would a reader of this paragraph want to go there? If the connection is a stretch, leave it out. Topical map and cluster planning helps decide the hub and its supporting pages before the links.
Keeping it working
Why link structures decay
- New pages are published without anyone updating older pages to link to them.
- URLs change and pages are deleted, leaving links to redirects and 404s.
- Redesigns update navigation but leave body links pointing at old URLs.
- Merging and pruning remove pages that were important link sources.
- Writers and editors link inconsistently, so some sections are dense and others bare.
The routine
| When | What to do |
|---|---|
| Every new page | Link out to its hub and two or three related pages; within a week, add links to it from at least three relevant existing pages |
| Every merge, move or deletion | Repoint internal links to the final URL in the same release as the redirect |
| Monthly | Check for new links to 3xx and 4xx URLs, and pages you care about with no contextual inbound links |
| Quarterly | Full audit: orphans, click depth, priority model rerun, anchor review |
Building this into publishing is what makes it scale. Content decay detection treats linking as a step at publish, update and retirement, and our guide to writing content briefs shows how to put the planned links in the brief.
Measuring the impact
Internal linking changes are hard to attribute because many things move at once. Three ways to get a cleaner read:
- Compare equal windows. For each target page, compare impressions, clicks and average position for the eight to twelve weeks after the links went live with the same period before, and with the same weeks a year earlier if the topic is seasonal.
- Hold some pages back. When you have a list of similar under-linked pages, add links to half and leave the other half for now. If the linked half improves and the held-back half does not, you have evidence that is far stronger than a before-and-after chart.
- Watch crawling.Search Console’s URL Inspection shows when Google last crawled a page; server logs show how often.
At the site level, track a few numbers monthly: pages you care about with no contextual inbound links (aim for zero), the share of Tier 1 and 2 pages with at least three, internal links pointing at redirects or errors, and, from your full crawler, how many priority pages sit four or more clicks from the homepage. A performance correlation analysis helps connect link changes to traffic across many pages.
Where Morrison helps
Morrison is not a full site crawler, and it is useful to be precise about what it does here. Its crawl reads each page’s main content and leaves out navigation, footers and sidebars. So it does not measure click depth or see menu links. What it does see are the contextual links editors control:
- Contextual links per page, with the data to rank them. Exportthe internal links of every page alongside each URL’s status code and redirect target. The URL grid also carries each page’s Search Console clicks and impressions, so steps 1, 3 and 4 of the audit above become one spreadsheet: pages no article links to, links pointing at redirects or dead URLs, and high-impression pages with little support.
- Finding the pages that should link. Ask Morrison in chat which of your articles discuss the topic of a target page. It has read your whole site, so it finds them by meaning, and it can read them and suggest where a link fits and what the anchor should say. For a whole section, a workflow runs the same steps on up to 500 pages and writes each result into your URL grid.
- Checking the fixes. Each recrawl, monthly on Starter and weekly, every two weeks or monthly on Pro and Business, picks up the new links and status codes, so the next export shows whether the work landed.
For orphans reachable only through navigation, and for click depth, pair Morrison with a full crawler. The internal link audit and internal link audit use cases show the content side in practice.
The short version
- Every page you care about needs crawlable links from relevant pages; a sitemap alone is not enough.
- Write descriptive, concise anchors, varied across linking pages, and never stuffed.
- Audit with the right tools: a full crawler for structure, a content-level view for contextual links, Search Console for demand.
- Send links first to Tier 1 and 2 pages ranking in positions 4 to 20 with few contextual links.
- Build clusters as hub and spoke, add mesh and cross-cluster links where readers need them.
- Make linking part of publishing, merging and retiring pages, and measure with equal windows or a held-back group.
Sources and further reading
- 1Link best practices for GoogleGoogle Search Central
- 2In-depth guide to how Google Search worksGoogle Search Central
- 3What is a sitemapGoogle Search Central
- 4A guide to Google Search ranking systemsGoogle Search Central
- 5Qualify your outbound links to GoogleGoogle Search Central
- 6Understand JavaScript SEO basicsGoogle Search Central
- 7Links reportSearch Console Help
- 8How HTTP status codes, and network and DNS errors affect Google SearchGoogle Search Central

CEO, Morrison
Ulrich is CEO of Morrison and founded Bonzer in 2017, growing it into one of Scandinavia's leading SEO agencies with 900+ clients across Copenhagen, Oslo, and Stockholm. At Morrison he leads strategy, operations and go-to-market, bringing years of hands-on SEO and content work to the platform side of the business.