Scrape Info

Crawl Budget Optimization for Large Sites

Google only worries about crawl budget if you have ten thousand pages or more updating frequently.

Contributing Editor · · 10 min read
Cover illustration for “Crawl Budget Optimization for Large Sites”
Crawling & Sitemaps · July 22, 2026 · 10 min read · 2,150 words

Per Google's official documentation, crawl budget is primarily relevant in two scenarios: sites with more than one million unique pages updated weekly or more frequently, and sites with more than ten thousand pages changing daily. Gary Illyes confirmed in 2025 that the one-million-page threshold hasn't shifted since 2020. John Mueller has been blunter, stating publicly that crawl budget is "over-rated" and that most sites never need to think about it.

He's right, for most sites. The practical threshold for treating crawl budget optimization as an active engineering concern is roughly ten thousand URLs, or any site generating new content faster than Google is visibly indexing it.

The self-diagnostic is straightforward. In Google Search Console, navigate to Settings, then Crawl Stats, and note the average pages crawled per day. Divide your total page count by that daily figure. If the result exceeds roughly ten, meaning Google is crawling fewer than one-tenth of your pages on a given day, you have a real coverage gap. At that ratio, important pages stay unindexed for weeks. A mid-size e-commerce site with eighty-five thousand product pages, cited by LinkGraph as an illustrative case, saw new products taking three to four weeks to appear in search results, with an estimated fifty thousand dollars per month in lost organic revenue attributable to that indexation lag.

Once a site crosses these thresholds, the question shifts from whether a crawl budget problem exists to what is consuming the crawl capacity that does exist.

How Crawl Capacity Expands and Contracts Based on Server Behavior

Diagram: TTFB vs. Crawl Throughput: The Hidden Multiplier. Visualizes: Visualize the relationship between server time-to-first-byte (TTFB) and Googlebot's crawl throughput.

Google starts conservative and adjusts continuously. Crawl capacity, governed by what Google calls the crawl rate limit, is not provisioned once; it is renegotiated with every server interaction. Consistent, stable response times push capacity higher. Rising latency, HTTP 5xx errors, and HTTP 429 rate-limiting responses push it lower, sometimes sharply.

The lever practitioners most underestimate is time-to-first-byte (TTFB). Google's documentation references a TTFB target below three hundred to four hundred milliseconds as the relevant threshold Googlebot experiences. At a hundred milliseconds TTFB, Googlebot can theoretically sustain roughly ten page fetches per second. At five hundred milliseconds, that falls to approximately two per second. Improving server response time can multiply daily crawl throughput by a factor of four or more. But what if your infrastructure looks healthy on paper? Is a low error rate and reasonable uptime enough? Not necessarily — the culprit is often subtler than outright failures.

Gary Illyes surfaced a related point on the Search Off the Record podcast in 2025: expensive database calls are the underappreciated culprit in crawl rate degradation. His observation, quoted directly: "If you are making expensive database calls, that's going to cost the server a lot." A site with five hundred thousand pages serving cached content may comfortably outperform a two-million-page site running slow SQL queries against a live database on every Googlebot request. The crawl capacity limit tracks server behavior, not page count. That distinction trips up a lot of teams who assume their crawl problems are fundamentally about scale.

One additional mechanism worth implementing: HTTP 304 Not Modified support. When content hasn't changed, returning a 304 tells Googlebot to reuse its cached version rather than re-fetching the full response. This preserves crawl connections for pages that have actually changed, which is where capacity is most valuable.

The implication for organizational structure is real. Platform and engineering teams are stakeholders in crawl budget decisions, not passive recipients of SEO recommendations. Getting that buy-in is often harder than the technical work itself.

How Crawl Demand Is Shaped by Popularity and Update Signals

Venn diagram: Crawl Capacity vs. Crawl Demand. Compares Crawl Capacity and Crawl Demand; overlap: Shared Levers.

Where crawl capacity is a site-wide constraint, crawl demand is page-level. Google's urgency to fetch a given URL is shaped by two sub-factors: URL popularity, roughly approximated by PageRank; and observed update frequency, meaning how often content at that URL has changed on prior visits.

A product page updating price and inventory hourly carries high crawl demand. A static about page carries low demand. The ratio between them is vast, and Google honors it.

Site-wide events can spike demand across an entire domain. Migrations force Google to reprocess large volumes of content under new URLs, temporarily elevating crawl demand site-wide. This is why migrations without supporting architecture work can surface crawl budget problems that were previously dormant. I've watched technically competent migrations stall indexation for months because no one coordinated the crawl demand side of the equation.

The structural challenge for large sites is distributional. Crawl demand is naturally concentrated on high-authority pages: the homepage, major category pages, anything with significant external link equity. Pages with the highest commercial priority, new products, recently published articles, seasonal landing pages, often start with the lowest popularity signal. They have no inbound links yet. Google has no reason to treat them as urgent. Without deliberate architecture decisions to surface them, they wait.

Internal linking is the primary mechanism for shaping demand. Google uses internal link density and link position to infer importance. A page accessible from the homepage navigation receives materially different crawl attention than a page reachable only after five clicks through a subfolder, a gap that maps directly onto click depth. For large e-commerce or publishing sites, that distinction frequently maps directly onto the gap between indexed and unindexed content.

The Patterns That Drain Crawl Capacity on Low-Value URLs

Crawl budget optimization is, in large part, an exercise in identifying where capacity is being consumed before it reaches the pages that matter.

Faceted navigation is the primary offender on e-commerce sites. Filter combinations, size crossed with color crossed with price range, can generate millions of unique URLs representing a few hundred underlying products. The critical nuance practitioners consistently miss: canonical tags do not stop the crawler from fetching the page. Google's own documentation confirms it fetches canonical-tagged pages before processing the tag. Five hundred faceted URLs pointing canonical to a single category page still consume five hundred crawl requests. The canonical prevents indexation of duplicates; it does not prevent the fetching. That is a frequently misunderstood distinction.

JavaScript-rendered navigation creates a related but structurally distinct problem. Googlebot processes JavaScript in a second wave, separate from the initial HTML crawl. Critical internal links rendered by JavaScript, navigation menus, load-more buttons, infinite scroll, may not be discovered on the first pass. For large sites, this creates a systemic crawl coverage gap. Pages dependent on JS-rendered links for discovery are structurally deprioritized, not because Google dislikes them but because it cannot see them at the moment it matters.

Redirect chains waste crawl requests at each hop. Every intermediate URL in a chain consumes a request that could have gone elsewhere. Google's documentation flags long redirect chains as having a negative effect on crawling. Collapsing chains to a single direct redirect is unglamorous work; it is also straightforwardly effective. On one site I audited through log file analysis, forty percent of the crawl log was spent following chains that terminated at the same destination URL.

Soft 404s are a persistent drain. An out-of-stock product page rendering a "not found" message while returning a 200 OK status code signals live content to Googlebot. It keeps returning. The Page Indexing report in Search Console surfaces these; remediating them is a matter of returning a proper 404 or 410 status, which tells Googlebot definitively to stop.

Orphan pages, those with no internal links pointing to them, are reachable via sitemap but neither pass nor receive link equity or PageRank. They contribute nothing to the authority structure and generate no organic crawl demand. Sitemap inclusion keeps them technically reachable; it does not make them structurally sound.

Sitemap hygiene compounds all of the above. A monolithic sitemap containing every URL provides no priority signal. Inaccurate lastmod timestamps, reflecting template deployments or footer changes rather than genuine content updates, erode Googlebot's trust in the sitemap signal over time. When trust degrades, the bot falls back on its own crawl scheduling, which is less favorable to new and updated pages than a well-maintained sitemap would be.

Using robots.txt, noindex, and Status Codes Correctly, and Where Each One Fails

Diagram: Three Crawl Signals: What Each One Actually Does. Visualizes: Illustrate the decision logic for three distinct crawl control signals: robots.txt (blocks fetching entirely — Google cannot read any on-page signals), noindex meta tag…

These three signals are not interchangeable. Practitioners who treat them as roughly equivalent alternatives make decisions that produce the opposite of the intended effect.

Robots.txt blocks Googlebot from fetching the URL entirely. Use it for pages you never want Google to touch: internal search results, staging paths, admin interfaces. Google's guidance is equally clear about what robots.txt is not for. It should not be used to temporarily reallocate crawl budget. Freed capacity does not automatically redirect to other pages unless the site is already at its crawl capacity ceiling. More critically, a robots.txt block makes the page opaque: Google cannot read canonical tags, noindex directives, or any other signal on a blocked page. Everything there is invisible.

Noindex is a different signal. Fetching still happens. Google requests the page, reads the noindex directive, and discards the page from the index. This is appropriate for pages you want crawled but not indexed, legal pages, internal utility pages where you want confirmation the directive is being honored. Using noindex as a crawl budget tactic is explicitly contraindicated by Google's documentation: crawling continues, wasting the request.

Status codes are the most precise and most underused crawl signal available. A 404 or 410 response to a permanently removed page is a definitive instruction: do not recrawl. Google drops these URLs from its queue faster than a robots.txt block achieves the same effect. A 304 Not Modified response tells Googlebot to reuse its cached version, preserving the crawl request for pages that have actually changed.

The decision logic is not complicated. A page that should never be fetched belongs behind robots.txt. A page that should be fetched but not indexed takes a noindex meta tag or header. A permanently removed page returns a 404 or 410. A page whose content hasn't changed should return 304 when Googlebot requests it. The confusion arises not from the logic but from the organizational tendency to reach for the nearest familiar lever, usually robots.txt, regardless of whether it fits the situation.

Internal linking is ultimately a demand-shaping exercise. Google infers importance from link density and link position. A page linked from the homepage header sits at a categorically different crawl priority than a page reachable after five clicks through a nested subfolder. For large sites, new or seasonal content sits in that deep tier by default. It has to be deliberately surfaced. That raises an important question: if internal linking is the primary lever for shaping crawl demand, why do so many teams treat it as an afterthought rather than a deliberate architectural decision?

The tactical mechanisms are well understood even if they are inconsistently implemented. Hub pages aggregate internal links to related content, compressing click depth across product families or topic clusters. Contextual cross-links within body content distribute link equity laterally across the architecture. "Recently added" and "trending" sections in navigation, updated programmatically, give Googlebot a reliable path to fresh inventory at shallow click depth. Each is a lever for elevating crawl demand on pages that need it most.

Sitemaps, when properly structured, complement internal links without replacing them. A segmented approach, splitting sitemaps by content type: products, categories, editorial content, location pages, gives Googlebot structural signals about site architecture and gives SEO teams the diagnostic capability to track crawl coverage by segment in Search Console. That visibility is operationally useful when troubleshooting indexation gaps.

The lastmod problem deserves specificity. Accurate lastmod values, tied to substantive content changes rather than deployment events, tell Googlebot which pages have genuinely changed and warrant a fresh fetch. Inaccurate timestamps train Googlebot to distrust the sitemap signal progressively, and once that trust erodes it is slow to rebuild. The discipline required is organizational as much as technical: lastmod must reflect real content changes, which means tying the timestamp update to content publishing systems rather than deployment pipelines. In practice, this requires a conversation with engineering that SEOs often avoid.

Orphan page remediation follows a similar logic. Sitemap inclusion makes a page technically discoverable; it does not generate crawl demand in any meaningful sense. Sitemaps do not carry PageRank. Internal links do. Every indexable page needs at least one internal link path from the main site architecture.

For faceted navigation, the architectural decision sits upstream of any canonical strategy. Configuring URL parameter handling in Search Console to suppress parameter-generated URLs from the crawl queue addresses the problem at the source. Implementing server-side filtering that doesn't generate unique URLs for low-value combinations eliminates it entirely. Canonicals are a legitimate fallback, but they remain a fallback: they stop indexation, not fetching. Treating canonicals as the primary solution to faceted navigation waste is accepting a degraded outcome when better options exist, and a surprising number of teams do exactly that, often because the upstream fix requires engineering resources that are easier to defer than to request.

Sources

  1. developers.google.com
  2. linkgraph.com

More in Crawling & Sitemaps