Part 15 of 22

Internal linking and site architecture

Internal links are the cheapest SEO lever you fully control. They decide how authority flows through your site, which pages search engines consider important, and whether a crawler (or an AI engine) can even find your content. Most sites get them wrong not by breaking rules but by never deciding anything: links accumulate instead of being designed.

Architecture: hubs and clusters

Structure content as topic clusters: a hub page owning a broad topic, spoke pages covering each subtopic, linked both ways. This guide is itself an example — a hub linking 22 topics, every topic linking back and sideways.

Why it works:

  • Search engines infer topical authority from tightly interlinked clusters — twenty connected pages about Next.js SEO outrank twenty scattered posts.
  • Authority from external links to any one page flows through the cluster.
  • AI engines follow the same trails when deciding whether you're a source or a one-off mention.

The practical rule: every important page within 3 clicks of the homepage. Deeper pages get crawled less, ranked lower, and refreshed more rarely.

Anchors carry meaning

Anchor text tells the crawler what the target page is about — it's the closest thing to voting for your own keywords:

  • ❌ "Learn more here" — wasted signal.
  • ✅ "how ISR revalidation keeps pages fresh" — the target now has a relevance vote for its topic.

Vary anchors naturally; identical exact-match anchors from every page look mechanical. And never nofollow internal links — you'd be telling Google not to trust your own site.

Orphans and dead weight

An orphan page — reachable from nowhere — effectively doesn't exist: no crawl priority, no authority, often no indexing. Orphans accumulate silently: landing pages from old campaigns, posts whose category was removed, pages only reachable from a decommissioned menu.

Audit quarterly: crawl your site (Screaming Frog or a script over your own sitemap), diff the URL set against pages receiving internal links, and either link or retire the orphans. In Next.js, the fix is structural — generate link blocks from the same data that generates pages:

// related topics from the registry — pages can't become orphans,
// because every page is linked from its siblings by construction
const related = topics.filter((t) => t.cluster === current.cluster);

Where links live matters

  • In-body contextual links carry the most weight — a link inside a relevant paragraph beats ten footer links.
  • Breadcrumbs (UI + BreadcrumbList schema) give every deep page a crawlable path to its hub.
  • Related-content blocks at the end of articles keep both crawlers and readers moving; generate them from data, don't curate by hand — hand-curated blocks rot.
  • Site-wide footer links are fine for navigation but are heavily discounted as ranking signals; don't stuff keywords there.

Checklist:

  • Content organized in hub-and-spoke clusters with two-way links
  • Every indexable page reachable within 3 clicks of the homepage
  • Descriptive anchors everywhere; no "click here", no nofollow on internal links
  • Quarterly orphan audit; related blocks generated from data, not curated
  • Breadcrumbs with schema on all deep pages

Want this handled for you?

I audit and fix technical SEO on Next.js sites — indexing, performance, hreflang and AI visibility.

Technical SEO service