squirrelscan
GitHub

Dead-end page: no outgoing internal links to continue with

A page with no onward links leaves the reader and the crawler with nowhere to go. squirrel counts outgoing internal links, excluding self-links.

What a dead-end page is

A dead-end page has no internal links leading anywhere else. Whatever brought the reader here, nothing suggests what to read next, and a crawler that arrives finds no new URLs to follow.

Some pages are meant to be terminal. A thank-you page after a form submission, a download confirmation, a success screen: those have done their job and the default exclusion list covers them. Everything else usually has related content it should be pointing at.

What squirrel checks

The rule runs on every crawled page. It counts internal links whose normalised URL differs from the page’s own, so a self-link does not count. It emits a single check named dead-end:

  • Skipped when the page could not be parsed. Message: Page could not be parsed.
  • Skipped when the URL matches an exclusion pattern. Message: Page excluded by pattern.
  • Warn when the count is below minLinks, default 1. Message: Page has no outgoing internal links (dead-end), with the count as the value. Severity warning, weight 3.
  • Pass otherwise. Message: Page has outgoing internal links, with the count as the value.

The default exclusions are /thank-you, /confirmation, /download, /success and /submitted. Same-page anchor links are ignored unless countAnchorLinks is on, which is useful for a single-page app where the in-page navigation is the navigation.

How to fix it

Add a related-content block, a breadcrumb back to the parent section, or links from the body copy to the pages this one references. One meaningful onward link is enough to clear the rule; three or four is better for a reader.

For a single-page application whose whole navigation is fragment links, turn on countAnchorLinks rather than adding links that do not belong.

Rule IDlinks/dead-end-pages
CategoryLinks
ScopePer-page
Severitywarning
Weight3/10

Options

OptionTypeDefaultDescription
excludePatternsarray of strings["/thank-you", "/confirmation", "/download", "/success", "/submitted"]URL patterns that are allowed to be dead ends
minLinksnumber1Minimum outgoing internal links before the page is a dead end
countAnchorLinksbooleanfalseCount anchor links (#section) as valid internal links (useful for single-page apps)

Configuration example

[rule_options."links/dead-end-pages"]
minLinks = 3
countAnchorLinks = true
excludePatterns = ["/thank-you", "/receipt"]

Enable / disable

Disable this rule

[rules]
disable = ["links/dead-end-pages"]
[rules]
disable = ["links/*"]

Enable only this rule

[rules]
enable = ["links/dead-end-pages"]
disable = ["*"]

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 dead-end page is listed with its outgoing link count. Local audits are free.

Type to search…

↑↓ navigate openesc close