Crawl budget, and the sites that actually have a problem
Crawl budget is the most over-diagnosed problem in technical SEO. Most sites do not have one. The sites that do are usually generating URLs combinatorially — filters, parameters, pagination — and spending their crawl allowance on pages nobody should ever see.
Part ofTechnical SEO Engineering
A site with four hundred pages does not have a crawl budget problem. It may have an indexation problem, which is a different thing with different causes, and conflating the two leads to work that changes nothing. This article is about telling them apart, and about the specific structures that create genuine crawl waste.
What crawl budget actually is
Google describes crawl budget as the product of two things: crawl capacity, which is how much your server can take without degrading, and crawl demand, which is how much Google wants your content based on its perceived value and update frequency. Neither is a fixed quota you can top up.
- Capacity rises when your server responds quickly and falls when it returns 5xx errors or slows down
- Demand rises with perceived quality, freshness and popularity — and falls for URLs that keep returning near-duplicate content
- Neither is negotiable through a setting; both respond to what your site actually does
Diagnosing it properly
Before changing anything, establish whether crawling is actually the constraint. Two data sources answer this, and neither is a third-party crawler.
That last distinction is the one most often missed. "Crawled — currently not indexed" means crawl budget was spent successfully and the page was still not worth keeping. Adding crawl capacity cannot fix a page Google has already declined.
Faceted navigation: the usual culprit
Filters multiply. Four filter dimensions with five options each produce over six hundred combinations per category, most of which return substantially the same products in a different order. Left unmanaged, a catalogue of two thousand products becomes hundreds of thousands of crawlable URLs.
The fix is a deliberate policy about which combinations deserve to exist as indexable URLs, driven by whether anyone actually searches for that combination.
- Identify facet combinations with genuine search demand — "waterproof walking boots" usually has it, "waterproof boots size 9 blue sorted by price" does not.
- Give the valuable combinations clean, static, indexable URLs and real internal links.
- For everything else, decide one mechanism and apply it consistently: canonical to the parent category, or block the parameter pattern in robots.txt.
- Never rely on canonical tags alone for the long tail — Google still has to crawl the URL to see the canonical, so the budget is already spent.
- Remove low-value combinations from internal linking entirely; if nothing links to it, it is far less likely to be discovered.
Parameters, session ids and sort orders
Tracking parameters, session identifiers and sort orders each create a distinct URL serving identical content. They are the cheapest crawl waste to eliminate because no legitimate search query targets them.
Verify every rule against real URLs before shipping it. A pattern that accidentally matches your category pages will deindex a section, and the failure is silent until traffic drops.
Sitemaps as a signal, not a dumping ground
A sitemap listing every URL including redirects, 404s and canonicalised duplicates is a weak signal. A sitemap containing only canonical, indexable, 200-returning URLs is a strong one, and it makes the Search Console index-coverage report interpretable.
- Include only canonical URLs that return 200 and are intended for indexing
- Exclude anything noindexed, redirected, or canonicalised elsewhere — listing them contradicts your own directives
- Keep lastmod accurate; a file where every entry claims today's date teaches Google to ignore the field
- Split large sitemaps by section so coverage reporting isolates which part of the site has a problem
- Generate it from the same source of truth that renders the pages, so it cannot drift
Pagination and infinite scroll
Deep inventory reachable only through JavaScript-driven infinite scroll is frequently unreachable in practice. Crawlers do not scroll. If page fifty of a catalogue has no crawlable link pointing at it, it may never be discovered regardless of budget.
Keep real paginated URLs with real anchor links, even if the user experience is infinite scroll. The two can coexist: render standard links server-side and enhance with scrolling behaviour for humans.
The order that actually helps
- Fix 5xx errors and slow responses — these suppress crawl capacity directly and cost nothing in strategy.
- Eliminate parameter-generated duplicates through robots.txt.
- Impose a faceted-URL policy and enforce it in internal linking.
- Clean the sitemap down to canonical, indexable URLs only.
- Ensure deep inventory has crawlable paginated paths.
- Only then consider whether crawl demand — that is, content quality — is the remaining constraint.
Steps one and two are usually where the measurable change comes from, and both are unglamorous server and configuration work rather than anything resembling content strategy.
Questions
How do I know if my site has a crawl budget problem?
Check crawl stats in Search Console against your URL count. If crawl requests per day are flat or declining while your indexable URL count grows, and valuable pages sit in "Discovered — currently not indexed," you likely have a genuine constraint. Below a few thousand URLs, it is almost certainly a quality, duplication or directive problem instead.
Should I block faceted URLs in robots.txt or use canonical tags?
It depends which problem you are solving. robots.txt saves crawl budget but prevents Google from reading any canonical or noindex on those URLs. Canonical tags consolidate ranking signals but require the URL to be crawled first. For a genuinely large combinatorial long tail, robots.txt is usually correct because the crawl saving is the point.
Does noindex save crawl budget?
Not immediately — Google must crawl the page to see the noindex directive, so the initial fetch is spent either way. Over time, consistently noindexed URLs tend to be crawled less often, so there is a long-run saving. If the goal is to avoid the crawl entirely, robots.txt is the right mechanism.
Can I increase crawl rate directly?
Not by request. Search Console's crawl-rate setting only allows limiting it. Crawl capacity responds to server speed and error rate, which you control; crawl demand responds to content value and freshness, which you influence more slowly. Fixing 5xx errors and response times is the most direct lever available.