squirrelscan
GitHub

Orphan pages: pages with too few inbound internal links

A page nothing links to is hard to discover and reads as unimportant. squirrel counts dofollow inbound internal links for every crawled page.

What an orphan page is

An orphan page is one that almost nothing on the site links to. Internal links are how a crawler moves between pages and how a site says which of its pages matter, so a page with no inbound links is both harder to find and weaker when it is found.

Some pages are orphaned on purpose. A campaign landing page or a page reachable only from an email is a normal thing to have, and the exclusion list exists for those.

What squirrel checks

The rule is site-wide. It counts inbound internal links for every crawled page, counting only links that are internal, resolvable and not rel="nofollow". The homepage is never flagged, and neither is the page the audit started from: the URL you gave and where its redirects landed (a root that redirects to /en/ or to a sign-in page). Nor is any URL matching an exclusion pattern.

  • Skipped when fewer than two pages were crawled. Message: Insufficient pages for orphan analysis.
  • Warn when any page has fewer inbound links than minInboundLinks. Message: 6 orphan page(s) with <2 incoming links. The value lists up to five paths with a +N more suffix, and every URL is listed as an item. Severity warning, weight 5.
  • Pass otherwise. Message: All pages have sufficient internal links pointing to them.

The default threshold is 2, so a page with exactly one inbound link is reported here and also, separately, by links/weak-internal-links. URLs are normalised on both sides before counting.

Pages kept out of the search index are not reported. A page whose <meta name="robots"> tag or X-Robots-Tag header contains noindex (a header scoped to one crawler, such as googlebot: noindex, counts too) does not need links for a search engine to find it, so it is not an orphan here; its own outgoing links still count toward the pages they point to. Pages are left out only on a site that is itself being indexed, judged by its homepage, or by the page the audit started from when the homepage was not fetched. When that page is noindex, as on a staging site or a preview deployment (Vercel, Netlify and Cloudflare Pages previews send X-Robots-Tag: noindex by default), every page is checked: the whole host is out of search and the audit is most likely checking it before launch. When neither page was fetched, every page is checked as well. See pages kept out of search for the full list of rules that do this.

How to fix it

Link to the page from somewhere that makes sense: a hub or category page, the body of a related article, or the navigation if it belongs there. Use anchor text that says what the page is.

Sitemap membership is not a substitute. A sitemap makes a URL discoverable; internal links are what tell a search engine where the page sits in the site.

Rule IDlinks/orphan-pages
CategoryLinks
ScopeSite-wide
Severitywarning
Weight5/10

Options

OptionTypeDefaultDescription
minInboundLinksinteger, 0 or more2Minimum inbound links required (pages below this are flagged)
excludePatternsarray of strings[]URL patterns to exclude from orphan detection

Configuration example

[rule_options."links/orphan-pages"]
minInboundLinks = 1
excludePatterns = ["/lp/", "/campaign/"]

Enable / disable

Disable this rule

[rules]
disable = ["links/orphan-pages"]
[rules]
disable = ["links/*"]

Enable only this rule

[rules]
enable = ["links/orphan-pages"]

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. Every orphan is listed by path with its inbound link count threshold. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.

Type to search…

↑↓ navigate↵ openesc close