ClasesSEO
ES EN
SEO Search Engine Optimization

Faceted Navigation SEO: How to Manage Filter URLs Without Wasting Crawl Budget

9 min read Leer en español
Faceted Navigation SEO: How to Manage Filter URLs Without Wasting Crawl Budget
Table of contents

Sorting by price, filtering by size or colour: every click creates another URL. Google says it plainly: faceted navigation is the most common source of overcrawling reported by site owners. Here is how to decide which combinations deserve to exist without wasting crawl.

What faceted navigation is and why it multiplies URLs

It lets a visitor change how the items on a page are displayed (products, articles, events) by applying filters to their properties. A typical URL stacks parameters, for example ?products=fish&color=radioactive_green&size=tiny: change any value and you see other items, another URL.

The arithmetic explains it: with ten values per facet and four facets, the combinations run into the thousands, not pages anyone decided to create but permutations of the system. Google describes near-infinite URL spaces in its guide on managing the crawling of faceted navigation URLs.

The two consequences: overcrawling and slower discovery

With overcrawling, faceted URLs look new and the crawler cannot tell whether they are useful until it downloads them, so it ends up fetching a huge number of useless URLs. Slower discovery is the other side: time spent there is time not spent on new and useful pages.

And watch the cost: crawling facets consumes large amounts of server compute and competes for the crawler's capacity limit (managing crawl budget).

The decision first: do you need those URLs indexed at all?

Google lays out two paths and you must choose before touching code: if you do not need those URLs, prevent crawling; if you do need them, follow best practices and accept the cost.

The criterion is a business one: a combination deserves to be its own page only if there is real search demand for it, or if the business needs it for a campaign. Everything else multiplies URLs without bringing traffic.

How to find the combinations with real demand

Search for the query the way a person would type it ("running shoes size 42"), not the technical name of the attribute. The evidence comes from Search Console, Google Trends and whatever keyword tool you use. Note of common sense: combinations of two or more facets almost never have volume; the value sits in category plus one attribute. Cross this with your own keyword clustering method and with the logic of long-tail keywords.

If you don't need them: block crawling

The primary route is robots.txt with parameter patterns: Google says, without embellishment, that there is often no good reason to allow crawling of filtered items, because it consumes resources for no or negligible benefit.

Parameter patterns in robots.txt

User-agent: *
disallow: /*?*products=
disallow: /*?*color=
disallow: /*?*size=
allow: /*?products=all$

The allow exception matters as much as the blocks: if a useful URL uses the same parameter, leave it accessible with a more precise rule, because the most specific rule wins. The flip side: a blocked URL stays in the crawl queue much longer, so robots.txt does not "forget" URLs. Full syntax in the guide on robots.txt.

Filters with URL fragments (#): the shortcut Google ignores

The documentation proposes encoding filters as a URL fragment instead of parameters, and it works because Google Search does not support fragments for crawling or indexing: they have no impact. The caveat: those combinations will never be indexable and the filtered page cannot be shown; if you change content with JavaScript, the official route is the History API. It is a valid shortcut only when you do not want any of that to appear in search.

Canonical and nofollow: they help, they are slow, they are not interchangeable

A rel="canonical" pointing to the unfiltered version can reduce crawling of the variants over time, but the signal "takes time to get picked up": it is not a switch. And rel="nofollow" must be applied to every link pointing at that URL, internal and external, or it is lost. Google rates both as less effective in the long run than robots.txt or fragments.

If you do need them: make the facet URLs sound

When a combination deserves to exist as a page, three technical rules keep absurd duplicates at bay.

Parameter separator and order

Use the standard & separator: commas, semicolons and brackets are hard for crawlers to detect as separators. And if the facets live in the path (/products/fish/green/tiny), the order must always be the same and no filter repeated, so that color=red&size=42 and size=42&color=red are not two URLs.

Return a real 404 when a combination returns nothing

If there are no green fish, return a proper HTTP 404, also for duplicate filters and non-existent pagination. Do not redirect to a generic "not found" page: serve the 404 on the URL where it happened (apart from single-page applications). Soft 404 pages keep getting crawled and burn budget, as the article on 404 and soft 404 errors explains.

Each indexable combination must look like a page

It needs content of its own: a title and an h1 that name the combination, a paragraph of useful context and breadcrumbs. A listing recycled from the parent category is not enough. The canonical must match the decision: if the combination is indexed, self-referencing. And in the sitemap include only those combinations, never all the facets.

robots.txt, noindex and 404/410 are not the same thing

noindex does not save crawl

The crawl budget documentation states it explicitly: do not use noindex here, because Google still requests the page and only drops it after seeing the meta tag, wasting crawling time. With thousands of faceted URLs, a blanket noindex does not reduce server load. Nor does it work for picking a canonical within the same site, because it blocks the page entirely. Details in meta robots and noindex.

robots.txt isn't for canonicalization

Google may still index URLs that are disallowed in robots.txt without their content, especially when external links point at them. So if a faceted URL is already indexed, blocking it will not remove it and it also stops Google from reading its noindex: blocking is decided before the URLs become known. If they are already indexed, you need noindex with a crawlable page, or a 404/410.

404/410 does get URLs out of the queue

Google does not forget a URL it already knows, but a 404 is a strong signal not to crawl it again, whereas blocked URLs stay in the queue much longer; a 410 confirms the removal is permanent. For facets: retired combinations get a 404/410, never a silent block.

SituationRight tool
Never knew it, never want itrobots.txt
Out of the index, but it may be crawlednoindex (and never block it at the same time)
It no longer exists404 or 410
Duplicates of one good versionrel="canonical" (plus redirects, the strongest signal)

How to verify it in Search Console and server logs

The Page indexing report lists the exclusion reasons typical of facets ("Duplicate: Google chose different canonical", "Crawled: currently not indexed"): count how many of those URLs are filters. The Crawl stats report gives requests by file type and response code, and a spike in URLs with parameters is the footprint of overcrawling.

Cross that with your server logs: if the share of facet requests against product requests is high, that is the budget being spent. URL Inspection lets you test three to five URLs by hand (one indexable, one blocked, one empty) and check the chosen canonical. And remember the server cost: HTTP caching and 304 responses.

Common mistakes in stores and catalogs

  1. Indexing every permutation "just in case": overcrawling and cannibalization with the parent category.
  2. Believing a blanket noindex saves crawl, or pairing it with a robots.txt block (the tag is never read).
  3. Leaving sorting, view, currency, session or tracking parameters.
  4. Keeping an inconsistent filter order in the path.
  5. Returning 200 with an empty listing, or redirecting to a generic page.
  6. Blocking a combination that does have demand, or indexing the ones that compete with the main category.
  7. Putting facets in the sitemap: including them is asking for them to be crawled.
  8. Forgetting pagination inside the facets.
  9. Never measuring: the block stays for years and the damage shows up when traffic drops.

Seven-step implementation plan

  1. Inventory: facets, their values and the combinations the catalog generates today.
  2. Flag the combinations with demand; the rest are permutations.
  3. Write the robots.txt rules with parameter patterns and the necessary allow exceptions.
  4. Implement the real 404 for empty combinations and non-existent pagination.
  5. Standardise the & separator and the filter order, and remove parameters that do not change content.
  6. Add minimum content to the indexable combinations and narrow the sitemap to those URLs.
  7. Verify after 2-4 weeks in Search Console and close with this checklist.

Facets are a great usability feature: the work is not to remove them, but to decide which ones deserve to exist and to make sure Google does not spend its budget there. If the underlying question is how much your site gets crawled, start with the article on crawl budget.

We use cookies to improve your experience and analyze site traffic. By continuing to browse you accept their use.

Privacy