Crawl budget optimization for large sites

Most sites should never spend a minute on crawl budget. Google’s own large-site documentation is explicit about who it is written for: sites with roughly a million or more unique pages whose content changes moderately often, or sites of 10,000-plus pages that change very rapidly, or sites showing a large share of URLs stuck in “Discovered, currently not indexed.” If your pages tend to get crawled the same day you publish them, you are not in that group, and the better move is to work on content quality instead.

The topic gets over-applied because crawl budget sounds like a lever anyone can pull. On a small, clean site Googlebot’s crawling is effectively automatic, and “optimizing” it changes nothing. The problem only becomes real when a site is large enough that Googlebot’s attention turns into a finite resource, and important pages get stuck in a queue behind faceted-navigation URLs the site generated without anyone deciding they should exist. This piece covers how crawl budget actually works, how to tell whether you have a genuine problem, and the work that produces results on sites large enough to need it.

What crawl budget is, and what it is not #

Crawl budget is the practical limit on how much of a site Googlebot will fetch in a given period. Google’s documentation frames it as the set of URLs Googlebot can and wants to crawl, set by two factors.

The first is the crawl capacity limit: the maximum number of simultaneous connections Googlebot will use, plus the delay between fetches. Google adjusts this by how the server responds. Fast, error-free responses let the limit rise; slow responses and server errors push it down, because Googlebot backs off rather than overload a host that appears to be struggling.

The second is crawl demand: how much Google wants to crawl the site at all. Popular pages, frequently updated content, perceived quality, and the site’s overall importance raise demand. A site move or major restructuring can spike it temporarily as Google reprocesses content under new URLs.

What it is not is worth stating plainly. It is not a ranking factor by itself; Google does not rank pages higher for tidy crawl management. It is not a fixed daily quota; the number expands and contracts with the two factors above. And it is not a small-site concern, since Google states small, well-structured sites are crawled efficiently without intervention. The practical implication: crawl budget work is for large sites and for sites with concrete crawl efficiency problems. For everyone else, the same hours return more spent on content and on technical fundamentals.

How to detect a real crawl budget problem #

Three signals indicate a genuine problem, listed in order of how quickly you can confirm them.

Start with Google Search Console’s Crawl Stats report, which shows total requests per day by file type, response code, and Googlebot type. Watch for total requests trending down while the site grows, meaning either the site outproduces Google’s crawling or Google’s interest is falling. Watch for a high share of 4xx or 5xx responses, since Google reduces crawl rate when error rates climb. And watch for heavy crawling of low-value URLs such as parameter variants, deep pagination, and old archive pages; every request spent there is one not spent on pages that matter.

The second signal comes from log file analysis, which shows the requests Googlebot actually made: which URLs, which user agents, which response codes, and when. Pages that never appear in the logs are either unknown to Google or deliberately skipped. Pages crawled once and never again are usually treated as static. And the same URLs crawled hundreds of times a day often signal an infinite URL space, such as a calendar widget producing an endless run of dated URLs.

The third signal is the indexation gap. If a site has 50,000 product pages and Google has indexed 18,000, the rest are either uncrawled, crawled and excluded, or crawled and not selected. The Pages report in Search Console shows that breakdown, and a wide gap on a large site is the clearest evidence that budget is going to the wrong places.

What wastes crawl budget #

The same patterns recur across large sites that have crawl problems, and each one shares a single trait: it manufactures URLs Googlebot has to handle but that return no value to users or to ranking.

  • Faceted navigation. A category with six filter dimensions (color, size, brand, price, rating, sort) can generate hundreds of thousands of unique URLs from a few dozen products, each crawlable if it is discoverable.
  • Internal search results indexed and linked. A query like /search?q=red+shoes spawns a unique URL for every search a user has ever run, amplified by related-search modules that link them.
  • Session IDs in URLs. A ?sid=abc123 parameter mints a fresh URL for every session, and Googlebot treats each as distinct.
  • Thin pagination. Page 47 of an archive with one or two posts and mostly navigation chrome.
  • Tag and category overlap. Tag systems that produce a page for every combination, many duplicating the main category pages.
  • Endless calendar archives. Date-based archives with “next month” arrows that never terminate, running URLs into the far future.
  • Duplicate variants. Print-friendly pages, and mobile or format variants that should have been canonicalized or merged.
  • Soft 404s. Pages that return a 200 status while displaying “no results found,” which Google must crawl before it can recognize the error.

What to fix, in priority order #

The work runs in sequence, and each step depends on the previous one holding.

First, stop creating new low-value URLs. The faster the URL space grows, the harder cleanup becomes, so the priority is preventing new waste: block faceted URLs that carry no unique commercial value, disallow search-result pages in robots.txt, replace session IDs with cookies, and point print versions at the main version with a canonical tag.

Second, clean up the existing waste. For URLs that should never have existed, return a 410 Gone when they are truly gone, or Disallow in robots.txt when they exist but should not be crawled. For URLs that have value but should not sit in the crawl frontier, use canonical tags pointing at the version meant to rank.

Third, speed up the server. Time to First Byte matters here because Google’s crawl capacity calculation reacts to response time. Gary Illyes noted in May 2025 that expensive database queries can slow a server enough that Googlebot cuts its crawl rate, which is why a 500,000-page site with slow queries can have worse crawl problems than a faster site several times its size. There are documented practitioner cases of sites roughly quadrupling their crawl rate, reported at around 150,000 to 600,000 URLs per day, by cutting TTFB from about 800ms to under 200ms with no architecture changes. Google’s own guidance is qualitative here (faster rendering lets it read more), so treat a sub-300ms TTFB as a practitioner target rather than a published Google threshold. CDN caching, origin shielding, and query optimization are the levers that usually move the number.

Fourth, strengthen internal linking to important pages. Pages found through many internal links get more crawl attention, while orphan pages tend to go uncrawled or fall down the queue. The fix is editorial: link important pages from category pages, from related content, and from navigation. Sitemaps do not pass crawl priority the way internal links do.

Fifth, submit only the important URLs in sitemaps. A sitemap of 500,000 mostly low-value variants dilutes the signal; a focused sitemap of high-priority commercial and editorial pages concentrates it. Sitemap index files can segment by type (products, articles, categories) so diagnosis is easier, and an accurate lastmod tag helps Google prioritize what actually changed.

Robots.txt patterns for common crawl traps #

The recurring patterns that solve crawl waste look like this:

# Block faceted navigation parameter URLs
User-agent: *
Disallow: /*?color=
Disallow: /*?size=
Disallow: /*?sort=
Disallow: /*?filter=

# Block internal search results
User-agent: *
Disallow: /search?
Disallow: /search/

# Block session IDs and tracking parameters
User-agent: *
Disallow: /*?sid=
Disallow: /*?session=
Disallow: /*?utm_

# Block calendar and date-archive traps
User-agent: *
Disallow: /archive/

# Block print-friendly versions (use canonical instead if pages have value)
User-agent: *
Disallow: /*?print=
Disallow: /*/print/

One caution on syntax. Googlebot supports the * and $ wildcards in robots.txt, but support across other crawlers varies, so test rules in Search Console’s robots.txt tester before deploying. After deployment, watch Crawl Stats for two to three weeks to confirm crawl reallocation; if the pages you expected to gain crawl attention do not, the rules may be over-blocking.

The mistakes that recur in audits #

Three errors show up again and again.

The first is reaching for robots.txt when noindex was the right tool. Blocking crawling prevents Google from ever seeing a noindex tag, so the URLs can still surface in results on external signals. The correct sequence is to allow crawling, apply noindex, wait for Google to drop the URLs, and only then Disallow in robots.txt. Reverse that order and the URLs stay visible with no way for Google to learn they should not be.

The second is treating the symptom rather than the source. A site with thousands of soft 404s does not fix them by hand or with band-aid rules; it fixes the CMS configuration producing empty pages that return a 200 in the first place.

The third is treating crawl budget as a contest with Google. Framing it as “saving” or “wasting” budget produces defensive tinkering that helps nothing. The framing that works is simpler: make sure Google can find and process the pages that matter, quickly, without distraction from the ones that do not.

How AI crawlers enter the picture #

The crawl budget model was built when Googlebot was the only crawler most sites had to think about. AI crawlers such as GPTBot, ClaudeBot, PerplexityBot, CCBot, Google-Extended, Meta-ExternalAgent, and Bytespider now account for a substantial and growing share of automated traffic. Cloudflare’s public Radar data in 2026 has repeatedly shown AI-related crawling running around a fifth of verified bot traffic across its network, with Anthropic and OpenAI crawlers among the largest individual sources, so the infrastructure cost is real on any large site.

The link to crawl budget is indirect but genuine: AI crawlers compete with Googlebot for the same origin capacity. When several hit a site at once and response times degrade, Googlebot reads the same slower TTFB and reduces its crawl rate, so its crawling can fall not because its appetite changed but because origin capacity was consumed elsewhere. The diagnostic is a log pattern of simultaneous high-rate AI crawling and reduced Googlebot activity in the same windows. The fix is not necessarily blocking AI crawlers, a separate strategic decision about visibility and licensing; it is ensuring enough origin capacity for all crawlers, or rate-limiting selectively at the CDN. Sites that do block should verify the block is honored at the CDN layer, not merely declared in robots.txt.

Measurement and timeline #

Crawl budget changes show up in Crawl Stats within days. The effect on indexation compounds over weeks, and the effect on ranking takes two to six months, because the new crawl pattern has to feed through indexing and quality decisions before it moves anything.

The metrics that move when the work succeeds are total requests per day (rising or stabilizing as budget reallocates), the share of requests going to important URLs (product pages climbing from, say, 12% to 45% of crawl signals that budget is now focused), the indexation rate as the gap between submitted and indexed URLs closes, and discovery time for new pages, which should shorten from days to hours.

The metrics that should not be expected to move are direct ranking lift for pages already indexed, and total traffic in the first month. Crawl budget work makes ranking possible for pages that were absent from the index; it does not lift pages already there. On sites with severe indexation gaps, the largest gains typically appear a quarter or two later, as more pages enter the index.

FAQ #

Does a 50,000-page site need crawl budget optimization?
Not automatically. Google’s threshold guidance starts around a million pages, or 10,000-plus pages that change daily, or a visible “Discovered, currently not indexed” backlog. A 50,000-page site with a clean structure and no indexation gap is usually fine; the same site with a large gap and heavy parameter crawling is worth investigating.

Is crawl budget a ranking factor?
No. It is a prerequisite for pages to be crawled and indexed, not a direct ranking signal. It helps ranking only in the sense that a page cannot rank if Google never crawls and indexes it.

Should I block AI crawlers to protect crawl budget for Googlebot?
Only after diagnosing that AI crawler load is actually degrading server response during Googlebot’s crawl windows. The real lever is origin capacity, through CDN caching or selective rate-limiting; blocking is a separate strategic call about AI visibility and licensing, and any block should be enforced at the CDN, not just stated in robots.txt.

Why did my crawl rate drop after I added robots.txt rules?
Either the rules are over-blocking pages you wanted crawled, or crawl demand shifted for another reason. Monitor Crawl Stats for two to three weeks after any robots.txt change, and confirm in the robots.txt tester that the rules match only the URL patterns you intended.

Crawl budget rewards taste more than volume. A site can hold a million URLs with almost none earning their place, or fifty thousand where every one does. Googlebot spends attention where attention is repaid, so if you are large enough to be reading this seriously, treat crawl budget the way you treat uptime: a continuous metric on a dashboard with someone responsible for it, not a one-time cleanup. Start this week by pulling the Crawl Stats report and asking a single question of the top-crawled URLs: do these actually deserve to exist?