Crawlability

Is Anything on Your Site Actually Blocking Google From Reaching It?

Crawlability is whether search engine and AI crawlers can discover, request, and reach a 200 response for every page you want indexed — before ranking is even possible. It's controlled by robots.txt directives, XML sitemaps, redirect chains, crawl budget, and page-level indexation signals (robots meta tags, X-Robots-Tag headers), and a problem in any one of them can keep a page invisible to Google regardless of how good the content is.

Dfeelings Team · Digital Marketing Agency, Amman, Jordan
Last updated: September 18, 2026

The problem

Ranking work is wasted on a page a crawler never reaches. A single misconfigured Disallow rule, an unnecessary redirect hop, a sitemap that references dead URLs, or a robots meta tag left on noindex after a staging deploy can each independently keep a page out of the index — and because these are infrastructure-level issues rather than content issues, they're often invisible until someone checks Search Console's Coverage report or the raw server logs. Crawl budget compounds this on larger sites: Googlebot allocates a finite number of requests per site per day, and every request spent on a redirect chain, a duplicate URL parameter, or a dead sitemap entry is a request not spent discovering or refreshing a page that matters.

Symptoms

  • Search Console's Page Indexing report shows "Discovered - currently not indexed" or "Crawled - currently not indexed" for pages that are otherwise complete and linked internally.

  • The URL Inspection tool reports "Blocked by robots.txt" for a path you expect to be crawlable, or shows a live page as noindex when you never intended to set that.

  • New or updated pages take far longer to appear in search results than the site's publishing cadence would suggest, with no clear content-quality explanation.

  • Server logs (or a log-file crawl analysis) show Googlebot spending a disproportionate share of its requests on redirect chains, parameterized duplicate URLs, or pages that already 404, instead of on canonical content pages.

  • sitemap.xml references URLs that 404, redirect, or resolve to a noindex page — visible as errors in Search Console's Sitemaps report.

How we diagnose it

We start with robots.txt itself, requested exactly as a crawler would fetch it, and check every Disallow rule against the URL patterns it actually matches — a rule written to block one path can unintentionally match others through prefix matching. We cross-check Search Console's Page Indexing and Sitemaps reports against the live sitemap, request every sitemap URL to confirm it returns 200 with no redirect or noindex, and trace any redirect chains found (a request that hops through two or more redirects before reaching its final destination) since each hop both wastes crawl budget and can cause Google to treat the chain as untrustworthy. Where server or CDN logs are available, a log-file analysis shows which paths Googlebot, Bingbot, and AI crawlers such as OAI-SearchBot are actually requesting and how often — the ground truth for crawl budget allocation, as opposed to what Search Console samples.

The fix

The fix is almost always to remove friction between the crawler and the page that should rank: correct any robots.txt rule that over-blocks, collapse redirect chains to a single direct hop, remove or fix dead sitemap entries, and make sure indexation signals (robots meta tag, X-Robots-Tag response header) say what's actually intended rather than a leftover staging default. On sites with a large or fast-changing URL set, we also reduce low-value crawl surface — parameterized duplicate URLs, thin auto-generated pages, retired features returning a genuine status code — so crawl budget concentrates on pages worth indexing.

Implementation: what this covers, in practice

Robots.txt directives: a single userAgent: "*" rule set with an explicit allow list and a disallow list scoped to genuinely private or non-content paths (auth pages, API routes, internal font files with no SEO value) — this site keeps Link Builder's and Link Shortener's retired URLs deliberately crawlable after their retirement rather than disallowed, specifically so Google can observe their real 410 Gone status and drop them from the index, instead of getting stuck unable to re-crawl a blocked URL it still has indexed. XML sitemaps and crawl signals: rather than one oversized file, this site publishes a set of purpose-scoped sitemaps (a flat static-page set plus separate blog and CMS-page sitemaps) declared as independent Sitemap: directives in robots.txt, which is valid per the sitemap protocol and keeps each file focused enough that a crawler can process it without a single monolithic file becoming a bottleneck. Crawl budget: every redirect hop, duplicate parameterized URL, and dead sitemap entry is a request spent on something other than real content — on a large site this is the difference between a new page getting crawled same-day and taking weeks. Redirect chains and their crawl cost: a request that resolves through two or more redirects before reaching a final 200 costs the crawler multiple requests for one page and dilutes the link signal passed through each hop — we collapse these to a single direct redirect wherever found. Indexation control via robots meta / X-Robots-Tag: page-level noindex, either in an HTML meta tag or an X-Robots-Tag HTTP header, is checked independently from robots.txt since the two operate differently — a robots.txt disallow prevents crawling but not necessarily indexing of a URL Google already knows about, while a page-level noindex requires the crawler to actually fetch the page to see it. Log-file analysis basics: raw server or CDN access logs, filtered to verified crawler user agents by reverse DNS (not just the user-agent string, which is trivially spoofable), show exactly which URLs a crawler requested, how often, and what status code each request returned — the closest thing to ground truth for how crawl budget is actually being spent. Crawler-specific behavior: Googlebot and Bingbot both generally respect robots.txt and execute JavaScript on a second rendering pass; AI crawlers such as OpenAI's OAI-SearchBot and GPTBot are checked against the same robots.txt rules and confirmed not to be inadvertently blocked when the intent is to remain visible to AI-driven search and answer engines, consistent with this site's broader answer-engine-optimization work.

Common mistakes

  • Writing a robots.txt Disallow rule intended to block one specific path, without checking that its prefix-matching behavior doesn't also block unrelated paths that happen to share the same prefix.

  • Leaving a page's robots meta tag or X-Robots-Tag header set to noindex after a staging or redesign deploy, so a page renders correctly but never enters the index.

  • Listing redirected or 404ing URLs in sitemap.xml, which both wastes crawl budget and signals a poorly maintained sitemap to the crawler that indexes it.

  • Letting internal links create multi-hop redirect chains over time (old link -> old redirect target -> newer redirect target) instead of periodically updating internal links to point directly at the final URL.

  • Blocking a path in robots.txt as a way to try to remove it from the index — robots.txt prevents crawling, not indexing, so a URL Google already has indexed can stay indexed with a URL-only listing even while blocked, and page-level noindex is the correct tool for that instead.

Validation

We validate with Search Console's URL Inspection tool per fixed URL (confirming "crawl allowed," "indexing allowed," and a successful fetch), the Sitemaps report showing zero errors against the live sitemap, a fresh robots.txt fetch diffed against the intended rule set, and, where logs are available, a follow-up log-file check confirming Googlebot's request pattern shifted away from the previously wasted paths and toward the pages meant to rank.

EN/AR considerations

Crawlability rules apply identically across locales — robots.txt, sitemaps, and redirect logic are locale-agnostic by design on this site — but each locale's sitemap and hreflang alternates are checked independently, since a redirect chain or dead sitemap entry introduced only on the Arabic URL set is invisible if validation only ever checks the English pages.

Related service & solutions

Crawlability is the foundation the rest of technical SEO builds on: a page with perfect schema markup, hreflang, and Core Web Vitals still can't rank if a crawler never reaches it, so this page is meant to be read alongside the more specific implementation guides below.

Frequently asked questions

Common questions about crawlability, robots.txt, and crawl budget

Crawlability is whether a crawler can reach and request a page at all (governed by robots.txt, internal linking, and redirect health). Indexability is whether, once fetched, that page is allowed into the index (governed by the robots meta tag / X-Robots-Tag and canonical signals). A page can be crawlable but not indexable (fetched, then excluded by a noindex tag), or blocked from crawling entirely while a previously indexed URL-only listing lingers — they're separate controls and both need to be correct.
Not reliably. Disallowing a URL in robots.txt stops crawling, but if Google already knows about that URL (from external links, for example) it can still show a URL-only listing without crawling it, because it was never told the page shouldn't be indexed — only that it shouldn't be crawled. To reliably keep a page out of the index, use a page-level noindex directive instead, which requires the page to be crawlable so the crawler can see the tag.
Crawl budget is mostly a concern for very large or very fast-changing sites where Google can't crawl every URL every day. On a smaller site, crawl budget itself is rarely the bottleneck — but the same underlying issues (redirect chains, dead sitemap entries, accidental robots.txt blocks) still directly keep individual pages from being indexed regardless of site size, so fixing them is worth doing either way.
Reputable AI crawlers identify themselves with their own user agent and are expected to respect robots.txt the same way traditional search crawlers do, but a rule written with only Googlebot and Bingbot in mind can still unintentionally block or allow an AI crawler differently depending on how the rule is scoped — we check AI crawler user agents against the live rule set explicitly rather than assuming coverage.
Search Console's Crawl Stats report gives an aggregated view, but raw server or CDN access logs give the ground truth — filtered to verified crawler requests (confirmed by reverse DNS, not just the user-agent string), they show exactly which URLs were requested, how often, and what status code each returned.

Want a crawlability audit of robots.txt, sitemaps, and redirect health?

Request a crawlability audit