301→302
A temporary redirect where a permanent one belongs. Found by Redirect checker →
redirect loop
The URL redirects back to itself and never settles. Found by Redirect checker →
Audit

Internal linking and crawl depth audit

Orphan pages, deep click depth, dead ends, pages linked only from navigation, nofollow-only inlinks and an internal link score compared with the site median.

Internal linking and crawl depth audit

Structure

Inlinks and outlinks per page, discovery path and click depth from the start URL.

Internal linking and crawl depth audit

Anchors

Generic anchors such as 'read more' and duplicate links on the same page.

How it works

Three steps, one saved scan

  1. Crawl the site from one start URL

    crawl-site follows same-host links from the start URL, respects robots.txt by default and stores every link in one SQLite file.

  2. Map the link graph

    Each page gets its inlinks, outlinks, click depth from the start URL and the position of each link: navigation, footer, or body copy.

  3. Flag orphans, dead ends and weak links

    Checks report pages no link reaches, dead ends, pages linked only from boilerplate or nofollow, and anchors such as 'here'.

What it checks

Checks in this feature

CheckWhat it meansSeverityEvidence
ORPHAN_PAGEThe page has no internal inlinks in the crawlImportantInlink count for the URL
DEEP_CLICK_DEPTHThe page is more clicks from the start URL than the configured floorImportantClick depth and the shortest path from the start URL
NO_INTERNAL_OUTLINKSDead-end page with no internal links going outImportantPage URL and outlink count
INLINK_BOILERPLATE_ONLYThe page is linked only from navigation, header, sidebar or footer, never from body contentImportantInlink positions by template area
ONLY_NOFOLLOW_INLINKSEvery internal link to the page is nofollowImportantInlink list with rel attributes
LOW_LINK_SCOREInternal link score is far below the site medianTipPage score against the site median
GENERIC_ANCHOR_TEXTAnchor text such as 'here', 'read more' or 'click here' does not describe the destinationTipSource page and anchor text
How to run it

One command

bash
seohead crawl-site --url https://example.com --max-urls 1000 --scan-out ./scans/links.sqlite

Install first: installation guide. Every command also runs as an MCP tool for AI agents.

Related checks

From the check registry

ORPHAN_PAGEDEEP_CLICK_DEPTHNO_INTERNAL_OUTLINKSINLINK_BOILERPLATE_ONLYLOW_LINK_SCOREGENERIC_ANCHOR_TEXT
FAQ

Questions

Internal linking and crawl depth audit
No. The crawl only reads pages. It follows robots.txt by default, and you can set report-only or ignore with --robots. The results are a SQLite file you review yourself.
The default cap is 200 URLs. Raise it with --max-urls, up to 1,000,000. Use --max-urls 0 for a full crawl. A stopped crawl can be continued with --resume.
Not for graph-wide claims. On a partial crawl the missing pages could hold the only link to a page, so checks such as INLINK_BOILERPLATE_ONLY are skipped and LOW_LINK_SCORE is withheld. Run a full crawl before you trust the score.

Check your redirects locally