Link Depth — How Many Clicks From Home Before Googlebot Gives Up
links/link-depth runs a breadth-first search from your root URL and measures the shortest click-distance to every page, flagging anything past the default ceiling of 3 clicks as info and anything Googlebot cannot reach from the root at all as a warning, because a page Google crawls last is a page Google ranks last.
Test your site for link depth — how many clicks from home before googlebot gives up
What it detects
links/link-depth treats your internal-link graph the way a crawler does. It seeds a breadth-first search at the root URL you audited, walks every internal link, and records for each page the shortest number of clicks it takes to arrive there. The BFS guarantees that distance is the minimum, so a page linked from both the homepage and a deep article is scored by its nearest path, not its farthest.
Two distinct findings come out of that single traversal. First, any page whose shortest click-distance exceeds maxClicks — default 3 — is reported at info severity with a message naming the page and the depth it sits at. Three clicks is the conventional ceiling because it mirrors how deep a crawler will eagerly follow before a page starts competing for scarce budget.
Second, any page that has inbound internal links yet never gets visited by the BFS is reported at warning severity as unreachable-from-root. That gap means the page is referenced somewhere, but no chain of links actually connects it back to the root, so a crawler starting at the homepage would never find it.
When the audit only sampled a subset of the site, the unreachable check is suppressed, because a missing path may be a sampling artifact rather than a real dead end; the depth measurement keeps running on whatever subgraph was fetched.
Why it matters
Crawl budget and link equity both flow outward from your homepage along internal links, and both thin out with every hop. A page sitting 7 clicks deep receives a fraction of the PageRank that a 2-click page does, and Googlebot reaches it late in a crawl cycle, if at all. The 3-click ceiling is a practical proxy: pages inside it tend to get crawled promptly and rank on their merits, while pages beyond it compete for whatever budget is left.
Depth is not a penalty signal — it is a discoverability one. A buried page is not flagged as spam; it is flagged as expensive to find and starved of the internal authority it needs. That is why this finding lands at info severity. It tells you where your architecture is leaking equity into pages too far from the root to compete.
The unreachable-from-root warning is sharper. A page that other pages link to but that has no path back to the root is an island. Googlebot can only follow links it can actually reach by walking from a known entry point, so an island page depends entirely on external links or a sitemap to be discovered, and it never receives internal equity. That is a structural defect worth fixing before you touch anything cosmetic.
A page that fails
A scuba-diving certification school sells a $1,800 open-water cert that runs over 10 days, but buries the page five clicks deep: home, then a region menu, then a dive-site list, then a single reef page, then finally the open-water cert page itself. The BFS records the cert page at depth 5, past the 3-click ceiling, and links/link-depth fires at info — so the page driving 40% of revenue is the one Googlebot reaches last. Worse, the school's nitrox-specialty page is linked only from a retired blog post that nothing else points to, so no chain reaches it from the root: the rule reports it as unreachable-from-root at warning severity, and a crawler starting at the homepage would never find it.
A page that passes
The same scuba school flattens its architecture. The homepage links straight to a course hub, and the hub links directly to every certification page — open-water, advanced, rescue diver, and nitrox specialty — so each cert page sits exactly 2 clicks from the root, comfortably inside the 3-click ceiling. The dive log, wetsuit-and-regulator rental, buoyancy clinic, and decompression-theory pages are all cross-linked from the hub too, so the BFS reaches every URL and not one page is stranded. Within 4 weeks of the restructure, organic impressions on that $1,800 cert page climb roughly 30% as Googlebot crawls it early and internal equity flows to it. links/link-depth stays silent: nothing is buried, nothing is an island.
How to fix it
- 1Link your deepest money pages directly from a hub or category page so the BFS reaches them in 2 to 3 clicks instead of 5 or 6.
- 2Audit any page reported as unreachable-from-root first — that is a structural island, and adding a single navigational link from a reachable page fixes it.
- 3Flatten deep taxonomies: collapse redundant intermediate index pages that add a click without adding value to a visitor or a crawler.
- 4Add contextual in-content links from popular shallow pages down to important deep ones, so equity has a short path to follow.
- 5Re-run the audit after restructuring, because moving one hub link can lift an entire subtree of pages back inside the 3-click ceiling at once.
- 6Do not rely on an XML sitemap to rescue a buried page — a sitemap aids discovery but does not pass the internal PageRank that depth controls.
SpamBrain context
Link depth is not a SpamBrain signal and pseolint does not pretend it is. SpamBrain targets manipulative and low-value content; an honest page buried 6 clicks deep is neither. What link depth governs is the crawl-and-index economics that decide whether your good pages ever get a fair hearing in the first place.
Google has been consistent for years that crawl budget is finite and that internal-link structure is how that budget is distributed across a site. The reasonable-surfer model behind PageRank assumes equity flows along links and attenuates with distance, so a page far from your strongest entry points simply inherits less authority. Neither idea is a penalty; both are mechanics, and both are exactly what a BFS from the root measures.
links/link-depth (in @pseolint/core, MIT-licensed at github.com/ouranos-labs/pseolint) reports at info severity for buried pages and warning severity for unreachable ones precisely because it describes architecture, not abuse. Treat a finding as a map of where your internal authority drains away, not as evidence that Google thinks you are spamming. Fixing depth is almost always a pure win: the same page, made cheaper to crawl and richer in internal equity, with nothing about its content changed.
Frequently asked questions
- Why is 3 clicks the default depth ceiling?
- Three clicks from the homepage is the conventional rule of thumb for a healthy architecture, and it is the maxClicks default in links/link-depth. The number reflects crawl economics: a crawler follows links eagerly for the first few hops, then pages start competing for finite budget. Inside 3 clicks a page tends to get crawled promptly and inherit meaningful internal PageRank; beyond it, both discovery and equity fall off. You can raise or lower the ceiling, but 3 is a defensible default for most sites.
- What is the difference between a deep page and an unreachable page?
- Both come from the same breadth-first search, but they are different findings. A deep page is reachable from the root — the BFS does visit it — but only after more clicks than the ceiling allows, so it fires at info severity. An unreachable-from-root page has inbound internal links yet is never visited by the BFS at all, meaning no chain of links connects it back to the root. That is a structural island and fires at the sharper warning severity, because a crawler starting at the homepage would never find it.
- How would this rule treat my dive school's course pages?
- Imagine a scuba-diving certification school whose $1,800 open-water cert page sits five clicks deep behind a region menu, a dive-site list, and a reef page. The BFS records depth 5, past the 3-click ceiling, and the rule flags it at info — Googlebot reaches it late and it inherits little internal equity. If your nitrox-specialty page is linked only from a stranded blog post with no path back to the root, the rule escalates to a warning. Link both pages from a course hub two clicks from home, give it 4 weeks, and every finding clears while the cert page starts ranking on its merits.
- Does a deep page actually get penalized by Google?
- No. Link depth is a discoverability and equity signal, not a spam signal, which is why the rule reports buried pages at info rather than error severity. A page 6 clicks deep is not flagged as low quality; it is flagged as expensive for Googlebot to reach and starved of the internal PageRank it needs to compete. The harm is opportunity cost: a good page that ranks worse than it should because your architecture buried it. Fixing depth lifts the same page without changing a word of its content.
- Will an XML sitemap fix a deep or unreachable page?
- A sitemap helps Google discover a URL, so it can partly mitigate an unreachable-from-root page, but it does not solve the underlying problem. Sitemaps aid discovery; they do not pass internal PageRank. A page that is only reachable via the sitemap still inherits no link equity from the rest of your site, so it competes from a weak position. The durable fix is an actual internal link from a reachable page, which both shortens the click-distance the BFS measures and lets authority flow to the page.
- Why is the unreachable check skipped when the audit is sampled?
- When pseolint only fetches a subset of a large site, the link graph it builds reflects the sample, not the whole site. A page that looks unreachable might simply be missing its intermediary pages from the crawl — the real path back to the root exists, the audit just did not fetch the pages in between. To avoid crying wolf on a sampling artifact, the rule suppresses the unreachable-from-root warning on sampled runs. The depth measurement still runs on whatever subgraph was fetched, since that distance is meaningful even on a partial crawl.
Related rules
- links/orphan-pagesOrphan Pageslinks/orphan-pages scans every URL in the crawl, counts the inbound internal links pointing at each one, and fires at error severity on any page with exactly 0 of them — the dead-zone shape that leaves Googlebot unable to reach a URL through your own navigation, a structural gap the March 27, 2026 core update treats as a discoverability failure rather than a content one.Read →
- links/dead-endsDead Endslinks/dead-ends flags every crawled page (the homepage aside) whose outbound links include zero URLs that point to another page in the same crawl, the forward-flow gap that strands Googlebot and traps link equity, a warning a model-railway shop's 1,400 product listings hit when each turnout and locomotive page links only out to a vendor, never deeper into the store.Read →
- links/cluster-connectivityCluster Connectivitylinks/cluster-connectivity groups every crawled URL by its parent directory, and for each cluster of 2 or more pages it checks whether a single internal crawl link enters from another cluster or leaves toward one — firing a warning when neither exists, because Google cannot diffuse authority into a directory that no other section of your site references or is referenced by.Read →
Want to know whether this rule actually fires on your site?
Run pseolint against your sitemap. The audit is free, takes about a minute, and returns a per-URL list of every rule that fired — including this one — with the exact metric values so you can prioritise the fix queue.