Module 023 Intermediate 14 min read

Internal Linking

One of SEO's highest-leverage tactics. Anchor text strategy, contextual vs navigational links, hub pages, orphan elimination, and PageRank distribution.

By SEO Mastery Editorial

Internal linking is the single highest-leverage SEO tactic available to you. It’s free, you control it completely, and it directly modifies how Google distributes authority across your site. Most teams treat internal linking as an afterthought — a few “Read more” links inside articles — and leave 30–50% of their potential rankings on the floor.

PageRank flow playground

Drag pages to rearrange, switch modes to add nodes or links — iterated PageRank recomputes live.

Home24.1Pillar A19.6Pillar B19.6Pillar C14.5Cluster A16.3Cluster A26.3Cluster B17.6Orphan2.1

Ranked pages

8 nodes · 14 links
#1Home24.11
#2Pillar B19.59
#3Pillar A19.56
#4Pillar C14.48
#5Cluster B17.65
#6Cluster A16.26
#7Cluster A26.26
#8Orphan2.10

Health

  • 1 orphan page (no incoming links)
  • PageRank converges to 1.000 total (≈ 1.0)
  • Damping d models the chance a surfer keeps clicking.

Try removing the link Home → Pillar A and watch Pillar A's score collapse. That's why the homepage's link choices matter more than any other page on your site.

TL;DR

  • Internal links shape PageRank distribution and topical association. Every link from page A to page B passes a fraction of A’s authority and a chunk of A’s topical context. Engineering this flow is the difference between a site where 10 pages rank and a site where 200 do.
  • Contextual links inside body copy are 5–10× more valuable than navigation links. Site-wide menu links pass minimal authority; a hand-placed link from a relevant article passes context, anchor text, and meaningful weight.
  • Orphan pages don’t rank. Period. A page with zero internal links is invisible to Googlebot’s discovery layer, regardless of whether it’s in the sitemap. Eliminating orphans is the fastest indexable-traffic win available.

The mental model

Internal links are like academic citations. A page cited by many other pages on your site (each saying what the cited page is about) is treated as authoritative on that topic. A page cited by no one — even if it’s brilliant — looks unimportant and gets shelved.

The “what they say” part is the anchor text. When 30 pages on your site link to /credit-utilization/ with the anchor “credit utilization,” Google is unambiguously told what that page is about. When 30 pages link to it with “click here” or “learn more,” Google has 30 vague signals and no strong topic association.

The structural pattern is the hub-and-spoke: pillar pages (hubs) link out to cluster pages (spokes), and cluster pages link back to the hub and laterally to siblings. This shape concentrates authority where it should be — at the hub, which then distributes it through the cluster — and creates a closed circuit where Googlebot can crawl efficiently.

The opposite pattern — flat, where every page links to a few sitewide menu items and nothing else — produces a site where the homepage has 99% of the authority and individual articles have almost none. Most CMSes default to this layout. Fixing it is the work.

Deep dive: the 2026 reality

PageRank still matters. Google retired the public toolbar PageRank in 2016, but the underlying algorithm remains foundational to ranking. The 2024 Google API documentation leak confirmed internal-link metrics like siteAuthority, pageRank, and linkAuthority are scoring inputs. A page with 50 quality internal links from contextually-relevant pages substantially outranks the same content with 2 internal links from a footer menu.

Anchor text matters but cannibalizes. Exact-match anchor text (“credit utilization” linking to /credit-utilization/) gives the strongest topic signal. But if every page on credit topics uses that exact anchor, you create a cannibalization loop where the same anchor floods every page in the cluster, diluting context. The healthy mix:

Anchor typeShareExample for /credit-utilization/
Exact match20–30%“credit utilization”
Partial match30–40%“your utilization rate”
Branded5–10%“our credit utilization guide”
Contextual phrase25–35%“the share of credit you’re using”
Generic<10%“this guide”

Position on the page matters. A 2024 Zyppy/Internet Marketing Ninjas analysis showed links higher in the body of a page pass more equity than links in the footer or sidebar. The first contextual link to a target page is what counts most; subsequent links to the same target add diminishing value.

The first link rule. Google attributes anchor text from the first link to a target on a page. Multiple links to /credit-utilization/ from one page only count the anchor of the first one (Mueller, 2017, re-confirmed 2023). Place your most descriptive anchor first.

Orphan pages. Defined as pages with zero internal inbound links. A 2024 Sitebulb dataset of 4M URLs found orphan pages had a 92% lower indexation rate than pages with even one internal link. Screaming Frog, Sitebulb, Ahrefs Site Audit, and Semrush Site Audit all expose orphan reports. Fix every orphan.

Crawl depth. The number of clicks from the homepage to a page. Pages at depth 4+ are crawled less frequently and ranked less aggressively. Aim for ≤3 clicks to any indexable page. Hub pages and category landings are the levers — adding a hub page that links to 50 children effectively pulls them all up to depth 2 from the homepage.

JavaScript link rendering. Links inserted via client-side JavaScript are rendered by Googlebot but with delay (often days, sometimes never for crawl-budget-constrained sites). Critical internal links should be in the rendered HTML at first response. Tools like Astro, Next.js with SSR/SSG, SvelteKit, and Remix all handle this correctly by default; SPAs with client-side routing and no SSR are the danger zone.

Automation vs. handcraft. Tools like LinkWhisper (WordPress), Ahrefs Internal Link Opportunities, and custom RAG-based suggestion engines can scale internal linking to thousands of pages. The trap: bulk-inserted links with mechanical anchor text trip pattern detectors. The 2026 standard: tooling generates candidate internal links; a human approves anchor text and placement.

Visualizing it

flowchart TD
  Home["Homepage"] --> Pillar1["Pillar: Credit"]
  Home --> Pillar2["Pillar: Investing"]
  Home --> Pillar3["Pillar: Retirement"]
  Pillar1 --> C1["Cluster: Credit Cards"]
  Pillar1 --> C2["Cluster: Credit Score"]
  Pillar1 --> C3["Cluster: Credit Utilization"]
  C1 --> A1["Article: Best Travel Cards"]
  C1 --> A2["Article: Best Cashback"]
  C2 --> A3["Article: Soft vs Hard Pull"]
  C3 --> A4["Article: 30 Percent Rule"]
  A1 -.lateral.-> A2
  A3 -.lateral.-> C2
  A4 -.back to pillar.-> Pillar1
  A1 -.back to cluster.-> C1

Solid arrows are top-down. Dotted arrows are the lateral and back-links that complete the topology.

Bad vs. expert

The bad approach

A flat site, sitewide menu links, “click here” anchors, no hub-spoke structure.

<!-- Every page has the same nav -->
<nav>
  <a href="/">Home</a>
  <a href="/products">Products</a>
  <a href="/blog">Blog</a>
  <a href="/contact">Contact</a>
</nav>

<!-- Inside an article -->
<article>
  <p>For more details about credit utilization,
    <a href="/blog/post-3475">click here</a>.
    You can also <a href="/page-87">read more</a> about credit scores.</p>
</article>

The anchor text is meaningless. The URLs are opaque. There are no contextual signals to which page is about what. The article is a leaf with two links to two unrelated pages, neither of which the link helps Google understand.

The expert approach

Hub-and-spoke architecture, contextual placements, descriptive anchors, lateral siblings.

<!-- Pillar page: /credit/ -->
<article>
  <h1>Credit: A Complete Guide</h1>
  <p>Credit is your borrowing capacity, scored by FICO, VantageScore,
  and other bureaus...</p>

  <h2>Foundations</h2>
  <ul>
    <li><a href="/credit/score/">How credit scores are calculated</a></li>
    <li><a href="/credit/report/">What's on a credit report</a></li>
    <li><a href="/credit/utilization/">Credit utilization rules</a></li>
  </ul>

  <h2>Cards</h2>
  <ul>
    <li><a href="/credit/cards/">Choosing a credit card</a></li>
    <li><a href="/credit/cards/secured/">Secured cards</a></li>
    <li><a href="/credit/cards/travel/">Travel rewards cards</a></li>
  </ul>
</article>

<!-- Inside a cluster article: /credit/utilization/ -->
<article>
  <p>Your <a href="/credit/utilization/">credit utilization</a>
  is the percentage of your available credit you're using. The ideal target,
  according to <a href="/credit/score/">how FICO scores are calculated</a>,
  is below 30% — and below 10% for the highest tier of scores.</p>

  <p>Note that utilization is calculated at statement close, not at payment
  date — see our guide to <a href="/credit/utilization/timing/">utilization
  reporting timing</a> for the practical implications.</p>

  <p>Related: <a href="/credit/cards/">Choosing the right credit card</a>
  for your utilization profile.</p>
</article>

The pillar links explicitly to every cluster child with descriptive anchors. The cluster article links back to the pillar (/credit/score/), laterally to a sibling (/credit/utilization/timing/), and to a related cluster (/credit/cards/). Each anchor is descriptive of the destination page.

For automation in Astro or Next.js with MDX, you can build a related-links component that surfaces semantically related pages:

// related-links.ts
import { getCollection } from 'astro:content';

export async function getRelated(currentSlug: string, cluster: string, n = 5) {
  const all = await getCollection('articles');
  return all
    .filter(a => a.data.cluster === cluster && a.slug !== currentSlug)
    .sort((a, b) => b.data.publishDate.getTime() - a.data.publishDate.getTime())
    .slice(0, n);
}

Then in the page template, render the related links list with descriptive anchors taken from the article’s linkText field — never from a generic “Related” template.

ElementBadExpert
ArchitectureFlatHub-and-spoke
Anchor text”click here”, “learn more”Descriptive, target-page topic
SourceSidebar / footer mostlyContextual body links
OrphansManyZero
Crawl depth5+ for many pages≤3 from homepage
Anchor distributionAll exact matchMix of exact, partial, branded, contextual

Do this today

  1. In Screaming Frog, run a crawl. Click Internal > Inlinks filter > 0 Inlinks. Every URL on this list is an orphan. Add at least one contextual internal link to each.
  2. Use Sitebulb or Ahrefs Site Audit > Issues > Orphan pages for a second source of truth. Cross-reference and fix all.
  3. In Google Search Console > Links > Internal links, sort descending by Internal links count. The pages with thousands of inbound internal links are over-linked (sitewide menus, footers); the pages with 0–3 are under-linked. Identify high-value content with low internal-link counts and add 5–10 contextual links from related articles.
  4. For your top 20 traffic pages, audit anchor text using Ahrefs Site Explorer > Internal backlinks > Anchors report. If exact-match anchor share is >50%, diversify with partial-match and contextual phrases.
  5. Build a hub page for each pillar topic if you don’t have one. The hub should be a long-form (1,500+ word) editorial page that covers the topic and links explicitly to 10–40 cluster children with descriptive anchors.
  6. Audit crawl depth in Sitebulb (or Screaming Frog > Site Structure > Depth). Any indexable URL at depth ≥4 needs a path improvement: add a hub link, restructure folders, or surface it on a category page.
  7. For high-value pages identified by Ahrefs Top Pages, add 3–5 fresh contextual internal links from recent articles to those pages. Use Ahrefs Internal Link Opportunities to surface candidate sources.
  8. In your CMS, add a relatedArticles field to your content schema and populate it manually for the top 50 pages. Never rely on alphabetic or chronological ordering for “related” — use semantic relevance.
  9. Run Screaming Frog > Crawl Analysis > Link Score (or Sitebulb’s Internal Link Score). The pages with the highest scores are your strongest distribution points; ensure they link to the pages you most want to rank.
  10. Schedule a monthly internal link review in your editorial calendar. As new articles publish, retroactively add 2–4 contextual links from older relevant articles to the new one. This is how a clean internal-link graph stays clean.

Mark complete

Toggle to remember this module as mastered. Saved to your browser only.

More in this part

Part 4: On-Page SEO

View all on the home page →
  1. 019 Title Tags Mastery 10m
  2. 020 Meta Descriptions That Win Clicks 9m
  3. 021 Header Tags & Content Structure 11m
  4. 022 URL Structure 12m
  5. 023 Internal Linking You're here 14m
  6. 024 Image SEO 13m
  7. 025 Featured Snippets & SERP Features 19m