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 indexation signals at the page level (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 · GEO & Website Development Company, 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. Because these are infrastructure 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 explanation in content quality.

  • Server logs (or a crawl analysis of log files) 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, an analysis of the log files shows which paths Googlebot, Bingbot, and AI crawlers such as OAI-SearchBot are actually requesting and how often. That is 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 blocks too much, 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 rapidly changing URL set, we also reduce the crawl surface that offers little value (parameterized duplicate URLs, thin pages generated automatically, 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 paths or paths without content (auth pages, API routes, internal font files with no SEO value). This site keeps the retired URLs of Link Builder and Link Shortener 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 crawl again a blocked URL it still has indexed. XML sitemaps and crawl signals: rather than one oversized file, this site publishes a set of sitemaps, each with a defined scope (a flat set of static pages plus separate sitemaps for blog and CMS pages), declared as independent Sitemap: directives in robots.txt. This is valid under 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 the 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 or X-Robots-Tag: noindex at the page level, 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 noindex on the page 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. This is the closest thing to ground truth for how crawl budget is actually being spent. Behavior of specific crawlers: 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 search and answer engines driven by AI, 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 redirect chains with several hops over time (old link to old redirect target to 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 as a bare URL listing even while blocked, and a noindex on the page is the correct tool for that instead.

Validation

We validate with Search Console's URL Inspection tool for each 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 independent of locale 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 or 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 bare URL listing indexed earlier 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 bare URL 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 noindex directive on the page 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 rapidly 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