onpage

Internal links on page

MetricSpot counts how many same-domain links the page contains. Too few, and pages get stranded with no crawl path and no PageRank flow.

What this check does

Counts anchor tags (<a href>) on the page that point to URLs on the same domain. Excludes nav and footer boilerplate that appears site-wide; focuses on contextual in-content links. Passes when there are at least a handful — typically 3+ on short pages, 8+ on long-form content.

Why it matters

Internal links do three jobs at once:

  1. Spread PageRank between pages. The original PageRank algorithm distributes ranking weight along links, internal or external. Pages with no inbound internal links from anywhere are stranded — they accrue zero authority from your homepage.
  2. Give crawlers paths to follow. Googlebot, GPTBot, ClaudeBot, and others discover pages by following links. A page that’s only reachable from the sitemap gets crawled less often and ranks worse.
  3. Help readers find related content. Time-on-site and engagement metrics improve when readers naturally move from one relevant page to the next.

A long article with zero internal links is a dead-end from every angle.

How to fix it

Add 3–10 contextual links to relevant pages on your domain. The rules:

Link anchor text matters. Use descriptive text that matches the destination page’s topic — not “click here” or “read more.” This is the same rule covered in descriptive link text.

<!-- bad -->
For more details, <a href="/docs/hsts-preload">click here</a>.

<!-- good -->
Once your HSTS header is stable, <a href="/docs/hsts-preload">add your domain to Chrome's preload list</a>.

Link to pages, not the homepage. A blog post linking back to / over and over is wasted. Link to other articles, category pages, product pages — wherever a reader’s next question lives.

Build a topic cluster. Pick a pillar page (the comprehensive guide), surround it with focused articles, and link them all to each other. Search-engine docs and SEO research are unanimous that clustered architectures outrank flat ones.

Keep links crawlable. Google’s crawlable links guidance is explicit: use <a href="...">. A <span onclick> or <button> with a JavaScript navigation will not be followed.

<!-- bad: not crawlable -->
<span onclick="location='/about'">About us</span>

<!-- good -->
<a href="/about">About us</a>

For UI links that need JS behavior, still use <a href>:

<a href="/products/widget" data-track="card-click">Widget</a>

The default browser navigation happens, your tracking fires on click, and the crawler sees a real link.

Don’t over-link. Stuffing 80 links into a 500-word post is a spam signal. Aim for one link per 100–150 words of body copy, and only when the destination is genuinely useful.

For the bigger picture see internal linking strategy — it covers cluster architectures and anchor-text diversity in depth.

Frequently asked questions

We exclude them. Site-wide boilerplate provides crawlability but not contextual ranking signal. The check measures in-content links — the ones inside <article>, <main>, or prose body. If your nav is your only source of internal links, this check still fails.

Almost never. nofollow originated as a comment-spam tool and tells Google to not pass weight along the link. Sculpting PageRank with internal nofollow was popular in 2008 and is now actively harmful — Google stopped honoring it for internal links years ago, but the loss of crawl path remains.

Both render real <a href> tags by default — good. The trap is <button onClick={() => navigate(...)}> patterns. If your “links” don’t render as <a> in view-source HTML, the crawler can’t follow them.

Sources

Last updated 2026-05-11