Crawlability Issues: What Breaks Crawling and How to Fix It

Crawlability issues are the technical conditions that stop search engines from discovering, accessing, or fetching your pages. A triage-first guide to the four buckets — blocked access, broken links, failing servers, bloated URL inventory — how to find them, and how to fix them.

First published: Jun 27, 2026 · Last updated: Jul 17, 2026 · Advanced
demand #14 in Crawling#42 in How Search Works#219 in Technical SEO#302 on the site

Crawlability is how well search engine crawlers can discover, access, and fetch your pages — and a crawlability issue is anything that breaks that. Almost every issue falls into one of four buckets: access is blocked (robots.txt, login walls, 403s, blocked JS/CSS), links are broken or uncrawlable (JS-only nav, orphan pages), the server is failing or throttling (5xx, DNS failures, slow/truncated fetches, redirect chains), or the URL inventory is bloated (spider traps, parameter duplicates, soft 404s). Crawlability is upstream of indexing and ranking — necessary but not a ranking factor, and distinct from indexability. This hub triages the common, high-impact problems and points you to the deep dives.

TL;DR — Crawlability is the degree to which crawlers can discover, access, and fetch your pages; a crawlability issue is anything that breaks that. Almost all of them fall into four buckets — access blocked (robots.txt, login walls, 403s, blocked JS/CSS), links broken (JS-only nav, orphans, deep pages), server failing (5xx, DNS, slow/truncated fetches, redirect chains), and URL inventory bloated (spider traps, parameter duplicates, soft 404s). Crawlability is upstream of indexing and ranking — necessary to rank but not a ranking signal, and distinct from indexability. Diagnose with GSC (Page Indexing, Crawl Stats, URL Inspection) and server logs; fix the access problem first, then the inventory. This hub triages each issue and links to the deep dives.

What crawlability is (and what it isn’t)

Crawlability is stage one of the search pipeline — discover → crawl → render → index → serve. Evidence for this claim Google describes Search as crawling, indexing, and serving, and not every page proceeds through every stage. Scope: Google Search processing model. Confidence: high · Verified: Google: How Search works Every failure here is upstream of indexing and ranking. The term itself is an SEO umbrella, not a Google one: Google’s own model names three Search stages — crawling, indexing, and serving — and folds URL discovery and rendering into crawling rather than giving them their own top-level stages. The five-step pipeline and the four-bucket triage below are my synthesis for organizing that work into something actionable — useful for locating a problem fast, but not a citation for how Google’s systems are formally staged internally.

Three “not equals” prevent most of the confusion in this space:

  • Crawlability ≠ indexability. A page can be perfectly crawlable but blocked from the index by a noindex tag — or technically crawlable but still not indexed because of quality signals. Crawlability is a necessary but not sufficient condition for indexing. (See crawled – currently not indexed for the downstream quality case.)
  • Crawling ≠ ranking. Crawling is required to appear in results, but as Google puts it, “an increased crawl rate will not necessarily lead to better positions in Search results… while crawling is necessary for being in the results, it’s not a ranking signal.”
  • Crawling ≠ rendering. Google renders the page and runs JavaScript in a separate step — “during the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome” — and that renderer runs in its own queue that can lag behind the initial fetch.

The full pipeline lives in the crawling hub; this article is the triage layer for when it breaks.

The four buckets of crawlability issues

Use these to locate your problem fast. Each one gets a short treatment here with a link to the deep dive — don’t try to fix what you can’t yet categorize. This is a triage lens, not an exhaustive classification: sitemaps, noindex, canonical tags, nofollow, mobile parity, and duplicate content are all real problems, but most of them belong to discovery, indexability, rendering, or crawl efficiency rather than a pure access/fetch failure — they get their own pages linked below instead of being folded into this hub as a flat audit checklist.

1. Access is blocked

Robots.txt blocking (intentional or accidental). A Disallow rule stops crawlers from fetching the URL at all. Google is explicit that this is the wrong tool for removing pages: “A robots.txt file tells search engine crawlers which URLs the crawler can access on your site… It is not a mechanism for keeping a web page out of Google.” The classic accidents: a staging-site Disallow: / pushed to production, a CMS plugin adding an overly broad rule, or blocking the *.js/*.css resources the page needs to render. Evidence for this claim Google says robots.txt controls crawler access and is not a mechanism for keeping a page out of Google. Scope: Google robots.txt behavior; noindex must remain crawlable to be observed. Confidence: high · Verified: Google: robots.txt introduction (See robots.txt and the GSC status blocked by robots.txt.)

The noindex + disallow trap. This one bites constantly. If you both disallow a page in robots.txt and put a noindex on it, Google can never fetch the page to see the noindex — so the page can stay indexed via external links. To deindex a page, allow crawling and add noindex. Never use disallow to deindex. I wrote up the live experiment behind this in Indexed, though blocked by robots.txt: “crawling and indexing are two different things.”

Login walls and 401s. If content sits behind an interactive login or OAuth flow Googlebot can’t complete, it’s simply unreachable — can’t be crawled or indexed. That’s not the same claim as “every paywall is uncrawlable,” though: publishers can choose to expose gated or subscription content to crawlers differently than to a regular visitor, so treat “requires a login Googlebot can’t get past” and “metered/paywalled” as separate cases rather than assuming every paywall behaves the same way. (See blocked 401.)

403 Forbidden. Before reaching for an IP allowlist, work through the likely causes in order rather than assuming the first one you find is the only one:

  1. robots.txt — confirm the exact path isn’t disallowed for that crawler’s user-agent; this is the single most common cause and the fastest to rule out.
  2. Intermittent or cached blocks — re-test the same URL more than once, from more than one vantage point. A WAF/CDN rule that only trips occasionally, or a stale cached 403, can look like a permanent block when it isn’t.
  3. User-agent blocks — a WAF/CDN rule denying a specific bot string (and remember the string alone can be spoofed, so don’t stop the investigation here).
  4. IP-range blocks — the firewall, CDN, or geo rule denying Googlebot’s actual IP ranges or datacenter geography. Only whitelist verified Googlebot — confirmed via reverse + forward DNS, not just the user-agent header — once you’ve actually located which layer is blocking it. (See blocked 403 and blocked other 4xx.)

Blocked JS/CSS. Google renders in a headless Chrome. If robots.txt blocks *.js/*.css, or a CDN refuses Googlebot the resources, the rendered page looks broken — content that only appears after rendering may not be indexed, and links that only appear after JS may not be followed. Test with URL Inspection → Live Test and look at the rendered screenshot.

Non-crawlable links. “Google can only crawl your link if it’s an <a> HTML element with an href attribute. Most links in other formats won’t be parsed and extracted by Google’s crawlers.” That rules out <a routerLink="...">, <span href="...">, and <a onclick="goto(...)">. If your main navigation is JS-only click handlers, whole sections of the site may never be discovered. (See the rendering section of the crawling hub and my JavaScript SEO Issues & Best Practices.)

Orphan pages. A page with no internal links pointing to it can only be found via a sitemap or external link. Links are the dominant discovery channel, so an orphan often shows up as discovered – currently not indexed in GSC. A sitemap entry aids discovery; it doesn’t replace the link signal. Fix: link the page from a relevant hub or category page. (See discovery and crawl depth.)

Deep pages. Pages buried many clicks from the homepage get crawled later and less often. Keep important pages shallow (see crawl depth).

3. The server is failing or throttling

5xx server errors. A 500/502/503/504 returns an error instead of content. Sustained 5xx makes Googlebot throttle — “they try not to crawl the site too fast to avoid overloading it… HTTP 500 errors mean ‘slow down’” — and eventually drop already-indexed pages. If robots.txt itself returns 5xx, it’s not an instant, indefinite site-wide halt: Google’s published behavior is staged — crawling stops for about 12 hours first, then Google may fall back to the last known-good robots.txt for up to 30 days, and what happens after that depends on the cached rules and whether the site is generally reachable. Note the 503 nuance: a 503 with a Retry-After header is the correct response for planned short downtime; only weeks of it cause harm. Google buckets 429 (too many requests) with the same back-off behavior. (See server error (5xx) and crawl rate.)

DNS failures. Upstream of HTTP entirely: if the domain doesn’t resolve — expired registration, a botched nameserver migration, broken apex-domain resolution — there’s no server response to even return a 5xx. Sustained DNS failure drops the whole site. Catch it in GSC Crawl Stats → Host Status, or faster with external uptime monitoring.

Slow responses and fetch truncation. Google’s politeness mechanism throttles based on server health, so slow responses mean fewer crawls. And there’s a hard byte limit: as of Google’s March 2026 Inside Googlebot update, Googlebot fetches roughly 2 MB per URL (down from the old 15 MB figure), with PDFs up to 64 MB. Go over and the fetch is truncated, not rejected — only the downloaded portion is indexed. If your critical content sits below 2 MB of bloat, it can get cut off.

Redirect chains and loops. Each redirect hop costs a crawl credit, and long chains have a negative effect on crawling; Google follows only about five hops before it may give up on the destination. Loops time out and land in redirect error in GSC. Common cause: stacked www → non-www → HTTPS hops from successive migrations. (See crawl budget, which lists redirect chains as crawl waste.)

4. The URL inventory is bloated

Spider traps. Structures that generate effectively infinite URLs — faceted filter combinations, calendar “next month” links with no end, session IDs in URLs, infinite pagination. Crawlers burn budget on near-duplicate junk while real pages get crawled less. Google has called faceted navigation and action parameters responsible for the bulk of its crawling issues, and “infinite spaces” has topped the crawl-waste list since 2008. There’s no fixed universal threshold for what counts as “too much” — the signature is a lopsided, disproportionate share of hits concentrated on one junk URL pattern relative to your own site’s normal baseline, not a specific percentage that applies everywhere. (See spider traps.)

URL parameters. Query strings (?key=value) create multiple URLs for the same content — active params (sort/filter/pagination) make near-duplicates; passive params (tracking, session IDs) make pure duplicates. Both waste budget and dilute link signals. Note: Google retired its URL Parameters tool in April 2022 (it found only ~1% of configs useful and now handles most cases automatically) — don’t tell people to use it. Bing still has an Ignore URL Parameters tool. Current fix: consistent parameter ordering, rel=canonical for passive params, robots.txt disallow only for genuine traps. (See url parameters and canonicalization.)

Soft 404s. A page that’s functionally “not found” (empty search results, gutted out-of-stock product) but returns 200 OK. Google keeps crawling it because the status says it’s there, wasting budget for no indexable content. Fix: return a real 404 or 410 (410 Gone is marginally faster for removal). A genuine 404 is a strong signal not to crawl that URL again.

Crawl budget exhaustion (large sites only)

This is the bucket-4 problem at scale, and it’s worth its own warning: most sites never hit it. Google says plainly, “if your site doesn’t have a large number of pages that change rapidly, or if your pages seem to be crawled the same day that they are published, you don’t need to read this guide.” John Mueller has put a number on it — 100,000 URLs is usually not enough to affect crawl budget. It realistically matters at ~1M+ pages changing weekly or 10k+ changing daily. Budget is per hostname, and all of Google’s crawlers (image, video, news, ads) draw from the same per-site pool. The warning light is a large and growing discovered – currently not indexed count. (Full treatment in crawl budget; I also wrote When Should You Worry About Crawl Budget?.)

How to find crawlability issues

Google Search Console.

  • Page Indexing report surfaces the named failures: blocked by robots.txt, server error (5xx), not found (404), redirect error.
  • Crawl Stats report shows response-code trends, average response time, and a host-status panel that flags DNS, robots.txt, and server-connectivity problems. (See crawl stats report.)
  • URL Inspection (Live Test) shows what Googlebot actually fetched and rendered for a single URL — the rendered screenshot is the fastest way to catch blocked JS/CSS.
  • “Discovered – currently not indexed” is the crawl warning light: Google knows the URL but hasn’t fetched it (usually a linking or priority problem).

Server log file analysis is the ground truth. Logs show exactly which URLs bots hit, how often, and with what status — and they’re the only way to tell real Googlebot (verified via reverse + forward DNS) from bots faking the user-agent. A spider trap shows up as a lopsided share of hits to one URL pattern. (See log file analysis.)

Site audit crawlers — Ahrefs Site Audit and Screaming Frog SEO Spider — simulate a crawl and surface redirect chains, blocked URLs, orphan pages, and crawl depth in one pass.

Crawlability vs. indexability: don’t confuse them

In short: crawlability is whether a bot can reach the page; indexability is whether Google chooses to store it once fetched. Once crawlability is fixed, indexability is the next gate.

The GSC status is a useful starting hypothesis, not a guaranteed diagnosis. Discovered – currently not indexed usually points to a crawl scheduling/priority problem (add internal links, raise site quality). Crawled – currently not indexed most often points to a content/quality problem downstream of crawlability (thin, duplicate, or intent-mismatched content) — but Google doesn’t publish an exhaustive causal mapping for that status, and overlapping factors like rendering delays, canonicalization signals, or indexing-eligibility checks can produce the same label. Treat the status as your first lead, confirm with URL Inspection and logs, and don’t throw crawl fixes at what turns out to be an indexability problem, or vice versa.

How Bing crawlability differs from Google

A few practical differences worth knowing if you optimize for both:

  • IndexNow — Bing (and Yandex, Naver, Seznam, Yep) take it for instant change notification; Google does not participate. Don’t expect IndexNow to help Google crawlability.
  • Crawl Control — Bing still has a manual grid in Bing Webmaster Tools to schedule crawl hours; Google removed its crawl-rate slider in January 2024.
  • Ignore URL Parameters — Bing still offers it; Google retired its equivalent in April 2022.
  • lastmod — Bing weights it more heavily as a recrawl signal; Google largely ignores inaccurate lastmod.

Fabrice Canel of Microsoft Bing sums up Bing’s philosophy as “Less is more for SEO… Less URLs to crawl, better for SEO” — which is the whole crawlability game in one line. (See bingbot.)

Where to go next

This hub is the map; the deep dives do the work. For access controls, see robots.txt and noindex. For the server side, see server error (5xx), crawl rate, and redirect error. For inventory bloat, see spider traps, url parameters, and crawl budget. For discovery and links, see discovery, crawl depth, and orphan pages. And for the whole pipeline in one place, start at the crawling hub.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.