squirrelscan
GitHub

Internal link count per page: too few and too many

A page with no internal links leads nowhere and a page with hundreds dilutes each one. squirrel counts internal links against a configurable range.

This is a count of the internal links a page carries, judged against a floor and a ceiling. It is a shape check rather than a quality one: it says nothing about where the links go or what they say.

The floor catches pages that lead nowhere. The ceiling catches the opposite, usually a page rendering an entire category tree or a mega-menu with several hundred entries, where any individual link is a small fraction of what the page is pointing at.

What squirrel checks

The rule runs on every crawled page and counts links the parser marked as internal, including navigation and footer links. It emits a single check named internal-links:

  • Warn below min_internal_links, default 1. Message: Too few internal links (0, min 1), with the count as the value and the threshold as the expected value.
  • Warn above max_internal_links, default 100. Message: Too many internal links (240, max 100).
  • Pass otherwise. Message: 42 internal link(s), with the count as the value.

Severity warning, weight 4. Every internal link on the page counts, so a large sitewide navigation pushes every page toward the ceiling. Raise the ceiling rather than removing navigation if that is the shape of the site.

How to fix it

[rule_options."links/internal-links"]
max_internal_links = 200

For the floor, add links to related content from the body copy. For the ceiling, decide whether the page really needs to expose the whole tree, or whether a hub page per section would serve a reader better.

Set the ceiling to match the site. A documentation site with a full sidebar will exceed 100 on every page by design.

Rule IDlinks/internal-links
CategoryLinks
ScopePer-page
Severitywarning
Weight4/10

Options

OptionTypeDefaultDescription
min_internal_linksnumber1Minimum internal links
max_internal_linksnumber100Maximum internal links

Configuration example

[rule_options."links/internal-links"]
min_internal_links = 3
max_internal_links = 200

Enable / disable

Disable this rule

[rules]
disable = ["links/internal-links"]
[rules]
disable = ["links/*"]

Enable only this rule

[rules]
enable = ["links/internal-links"]

enable replaces the default ["*"], so this is the only rule selected. Leave disable out: a rule that matches any disable pattern is skipped even when enable names it. Only an enabled setting under a rule’s own [rule_options] table overrides both lists.

Links findings ship in every audit next to the SEO, performance and agent experience rules. See Fix SEO issues with AI for how an agent works through a report.

References

Check your site

Run squirrel audit https://example.com and open the Links section of the report. Each page is reported with its internal link count. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.

Type to search…

↑↓ navigate↵ openesc close