Overview
Internal links distribute crawl budget, route link equity, and tell Google what every page is about. Done right, they are the single highest-impact on-page move after publishing. Done wrong, they orphan pages, dilute equity across irrelevant destinations, and bury cluster pages four clicks deep where crawlers stop visiting.
Write descriptive anchor text, never “click here”
Anchor text is a strong relevance signal; treat it as a second title for the linked page.
- Anchor text matches the linked page’s topic. Link to a page about Postgres backups with “Postgres backup strategies,” not “this article.”
- Vary anchor phrasing across the site; identical anchors on 50 pages look manipulative.
- Avoid generic anchors: “here,” “read more,” “learn more.” They waste the relevance signal.
- Avoid exact-match anchor text on every internal link to a target. Mix the head term with long-tail variants.
Bad: Read more about <a href="/postgres-backup">here</a>.
Better: See [[backend/postgres]] for the full backup checklist.
Keep every page within three clicks of the homepage
Crawl depth correlates with crawl frequency. A page five clicks deep is crawled monthly; a page two clicks deep is crawled daily.
- Homepage to pillar: one click.
- Pillar to cluster page: one click.
- Cluster page to peer cluster page: one click.
- Maximum depth from the homepage to any indexable URL: three clicks.
If a page is four clicks deep, the architecture is wrong; promote the path or split the cluster.
Use hub-and-spoke, not chain links
Two link patterns produce different equity flows. Pick hub-and-spoke as the default.
- Hub-and-spoke: a pillar (hub) links to every cluster page (spoke); every cluster page links back. Equity concentrates on the hub.
- Chain: page A links to B, B links to C, C links to D. Equity decays at every hop; the last page in the chain gets almost none.
The folder structure on this site is hub-and-spoke by design. Cluster details live in content-clusters.
Audit for orphans on every build
An orphan is a page with zero inbound internal links. Orphan pages are invisible to crawlers, even when listed in the sitemap.
- Run an orphan check in CI: parse every page’s outbound wikilinks, build the inverse index, flag any page with zero inbound links.
- Fix orphans by adding inbound links from at least two pages in the same cluster.
- The pillar page is allowed to be orphaned from cluster pages only if the homepage links to it directly.
Distribute link equity by linking up and across, not down only
PageRank flows along edges; the architecture decides which pages accumulate it.
- Link up: every cluster page links to its pillar. The pillar accumulates equity from the whole cluster.
- Link across: every cluster page links to two or three siblings. This raises the floor for newer pages.
- Link down: the pillar lists every cluster page. This is the cluster’s discovery edge.
- Do not link to deprecated, redirected, or noindex pages. Equity flowing into a noindex page is wasted.
Sculpt low-value pages out of the link graph
Not every page deserves equity. Login, search results, infinite filter combinations, and archive pages drain crawl budget. See crawl-budget for the full list.
- Add
rel="nofollow"to outbound links to user-generated content where spam is a concern. rel="nofollow"on internal links does not redirect equity in modern Google; it only prevents the link from passing equity. Use sparingly.noindex,followon thin pages lets crawlers traverse the page without indexing it.- Robots.txt-block infinite-parameter URLs entirely.
Set a per-page outbound link budget
Pages with 100+ outbound links spread equity too thin to matter. Pages with 2 are not part of the graph.
- Editorial pages: 5 to 20 internal outbound links, with at least 3 to the same cluster.
- Pillar pages: one outbound link per cluster page, plus 2 to 3 cross-pillar links.
- Homepage: link to every pillar plus the top 5 most-trafficked cluster pages.
- Footer links count; keep the footer focused on legal pages, not a full sitemap.