Home › Blog › Faceted search
SEO · ECOMMERCE

Faceted search SEO: which filters get a URL

Filters are the best thing on your category page for shoppers and the fastest way to make your site uncrawlable. Here is the rule that gets you both.

By the Digital Hangover team · Updated October 2026 · 8 min read
Quick answer: Faceted search lets shoppers filter a category by size, colour, brand or price. Each filter usually creates a new URL, so a handful of filters can generate millions. Give an indexable URL only to filter combinations people actually search for. Block sort order, price sliders and multi-select combinations from being crawled at all.

What faceted search is, and why it breaks crawling

Faceted search is the filter panel on a category page. Size. Colour. Brand. Price. Availability.

Shoppers love it, and they should: it is the shortest route from a 400-product category to the four products someone will buy. Our SEO guide treats it as a conversion feature first.

The problem is the address bar. Tick a filter, the URL changes. Tick two, it changes again. Crawlers follow those links, and every unique URL is a request Google spends on your site.

Google's faceted navigation page says these URLs can create a huge URL space that causes overcrawling and slows discovery of your genuinely new pages (Google Search Central, updated 18 December 2025).

Three things go wrong at once:

  • Crawling. Googlebot spends requests on near-identical filtered lists instead of your new products — see our crawl budget guide for that trade-off.
  • Duplication. Twenty URLs show the same twelve products in a different order. A duplicate content problem of your own making.
  • Dilution. Internal links spread across thousands of filter states, not the few pages you want ranking.

Do not remove filters. Decide, deliberately, which filtered URLs a search engine may see.

HOW 400 PRODUCTS BECOME 96,000 URLSHypothetical category, real arithmeticcategory1URLsindexablesize6URLsindexable if demandedcolour60URLsindexable if demandedbrand480URLscanonicalprice band2,400URLsrobots.txt disallowsort order9,600URLsrobots.txt disallowpagination96,000URLscrawl, do not noindexrobots.txt plus noindex is the trap: a blocked URL is never fetched, so its noindex is never read.

One category, 96,000 URLs.

The combinatorial explosion, with the actual arithmetic

Most people nod along without feeling the scale. So do the sum.

Take one hypothetical saree category holding 400 products, with five filters and ten pages of results. No statistics here — just multiplication.

What you addChoicesUnique URLs so far
The category page itself11
+ size66
+ colour1060
+ brand8480
+ price band52,400
+ sort order49,600
+ pagination1096,000

96,000 URLs for 400 products. That is 240 addresses per product, and not one of them is a page you would choose to write.

Now allow multi-select on colour, which almost every modern filter panel does. Ten colours stop being ten options and become every possible subset, which is 1,023. The filter states go from 2,400 to 245,520. Add the four sort orders and ten pages and you are past 9.8 million URLs.

From one category. With five filters.

The demand test: does anyone search that combination?

This is the whole decision, and simpler than the tooling suggests.

A filtered page earns an indexable URL when real people type that combination into a search box. Nothing else qualifies it.

Four questions, and a page has to pass all four:

  1. Is there measurable search volume for the phrase? "Banarasi silk sarees" yes. "Banarasi silk sarees between ₹1,200 and ₹4,500 sorted by newest" no. Check it with proper keyword research.
  2. Is there enough inventory to land on? A filtered page with three products is a bad result for the searcher and a thin page for Google.
  3. Can you write something unique on it? A real title, a real intro, real links. If the only copy possible is a template with the filter name slotted in, it is not a page.
  4. Can a crawler reach it without clicking a filter? If it only exists behind a JavaScript tick-box it is an orphan page. Give it a link in the navigation.

In practice this leaves a short list — usually one high-demand attribute per category, occasionally two. Everything else is a shopping tool, not a landing page.

The decision table: index, noindex, or never crawl

Hand this to whoever builds the filter panel.

Facet typeExampleVerdictHow, and why
Category + one high-demand attribute /sarees/banarasi-silk/ Index Static path, self-canonical, in the XML sitemap, linked from navigation. People search this exact phrase
Category + a second attribute /sarees/banarasi-silk/?colour=red Only if it passes the demand test Promote a passing combination to a static path. Otherwise leave it a parameter and disallow that parameter. Demand falls away fast at two filters
Sort order ?sort=price-asc Never crawl Identical products, different order. Zero search demand, guaranteed duplication. Disallow the sort parameter
Price range slider ?price=1200-4500 Never crawl A slider has unlimited values and nobody searches a rupee range. The most efficient way ever invented to generate infinite URLs
Multi-select combinations ?colour=red,blue&size=m,l Never crawl Subsets grow exponentially, as the arithmetic shows. Disallow the parameters; do not try to canonical your way out
Pagination ?page=3 Crawl, do not noindex Your discovery path to deep products. Each page gets a unique URL, real anchor links, and its own canonical
Tracking and session parameters ?utm_source=… Never crawl Infinite variants of one page. Strip them server-side where you can, disallow the rest

Pagination is the row people get wrong. The instinct is to noindex page two onwards. Do not — Google crawls noindexed pages less over time, and deep products lose their route in. Google's pagination guidance says not to make page one the canonical for the sequence, and that it no longer uses rel="next" and rel="prev" (Google Search Central, updated 10 December 2025).

Three mechanisms, and why they are not interchangeable

Teams treat these as three ways of saying the same thing. They are three different instructions.

MechanismWhat it controlsUse it when
robots.txt disallow Crawling. The request is never made The URL should never be fetched — sort, sliders, multi-select. Google's faceted navigation page recommends this
noindex meta robots tag Indexing. The page is fetched, read, kept out of results The URL is already indexed and must come out, or must stay crawlable so its links work
rel="canonical" Consolidation. A signal about which version is the real one Two URLs genuinely show the same thing and both stay reachable

Two details decide whether it works.

Canonical is a signal, not a command. Google calls a rel="canonical" annotation "a strong signal" and says none of the canonical methods are required (Google Search Central, updated 10 July 2026). On faceted URLs it notes that canonicals "may, over time, decrease the crawl volume of non-canonical versions" — and calls that less effective long-term than robots.txt. Canonicals tidy the index. They do not stop the crawling.

And now the trap. A URL disallowed in robots.txt that also carries noindex is a URL whose noindex can never be read. Google's wording: "For the noindex rule to be effective, the page or resource must not be blocked by a robots.txt file" — if it is blocked, "the crawler will never see the noindex rule, and the page can still appear in search results" (Google Search Central, updated 10 December 2025).

So sequence matters. If filter URLs are already indexed, keep them crawlable with noindex until they drop out, then disallow the pattern. If they were never indexed, disallow from day one and skip noindex — robots.txt alone "is not a mechanism for keeping a web page out of Google" (Google Search Central, updated 10 December 2025) — it manages crawler traffic, nothing more.

What Google says now, and the tool that no longer exists

If an audit tells you to configure URL parameters in Search Console, the audit is at least four years out of date.

Google announced the retirement of the URL Parameters tool on 28 March 2022 (Google Search Central Blog) and switched it off on 26 April 2022 (Search Engine Land, March 2022). There is no setting left to change. Parameter handling is now your robots.txt, your canonicals and your URL structure.

What Google's current faceted navigation document does ask for, where you want filtered URLs crawled:

  • Use & as the parameter separator. The industry standard, so parsing is predictable.
  • Keep filter order fixed. With filters in the path, as in /products/fish/green/tiny, the order must never vary and duplicate filters must be impossible.
  • Return a 404 when a combination has no results — also for nonsensical combinations and pagination URLs that do not exist, rather than a generic error page.
  • No URL fragments for filters. Google "generally doesn't support URL fragments in crawling and indexing", so anything after a # is invisible.
  • Leave one unfiltered listing page crawlable — all products, no filters applied — plus the product pages.

Google's crawl budget guide says who should worry: large sites of roughly a million-plus unique pages changing weekly, 10,000-plus changing daily, or sites with many URLs stuck in "Discovered – currently not indexed" (Google Search Central, updated 22 July 2026). Faceted navigation is how a 2,000-product catalogue quietly becomes one of those sites.

The filter pattern we find eating crawl budget most often

DH's own view, from taking over ecommerce sites other people built: it is almost never the colour filter. It is sort order rendered as a crawlable link on every filtered page.

Colour and size sit at the top of the tree, so they multiply once. Sort order sits at the bottom: every filter state and every page of results gets its own sorted twins. Four crawlable copies of a list that was already a copy.

The second pattern, and the one developers resist removing, is a crawlable in-stock toggle. The URLs are stable; the content behind them is not, because it moves with stock. Google re-crawls a set that never settles.

We are not attaching a percentage to either — we have not measured it across a sample we could defend. Check your own server logs and crawl stats.

What to tell the developer

Marketers lose this argument by describing the goal instead of the change. Paste this into the ticket.

TICKET: Faceted navigation — crawl and index control

1. INDEXABLE FACETS (list supplied by SEO, approx 15-25 URLs)
   Render as static paths: /category/<attribute>/
   Self-referencing canonical. Include in XML sitemap.
   Link from category navigation, not only the filter panel.

2. EVERYTHING ELSE
   Render as query parameters on the category path.
   Separator "&". Fixed parameter order. No duplicate parameters.
   Values lowercase and sorted. No free text. No session IDs.

3. ROBOTS.TXT — disallow these parameter patterns
   sort, price (or any slider), multi-select values, utm_* and
   other tracking parameters. Keep page= crawlable.
   Test the file against a sample of real URLs before release.

4. DO NOT add noindex to any URL that robots.txt disallows.
   A blocked page's noindex is never read. One rule per URL class.

5. PAGINATION
   ?page=N with real <a href> links between pages.
   Each page keeps its own canonical. Page 1 is not the canonical
   for the series. No noindex on page 2 onwards.

6. STATUS CODES
   Return 404 for empty, nonsensical or nonexistent combinations.
   Never redirect them to a generic error page.

7. ALWAYS CRAWLABLE
   One unfiltered listing page per category. All product pages.

Then give them the indexable facets as actual URLs — fifteen to twenty-five lines of plain text, one each.

If the filter panel is built in JavaScript and filtered states never render as real links, that is a separate technical SEO and internal linking job: the facets you want indexed need crawlable anchors, whatever the framework.

Filters that sell, and a catalogue Google can still read

Get this right and two things improve at once, which is rare.

Shoppers keep the whole filter panel, because none of this changes what a human can click. Google gets a catalogue it can crawl in a sitting.

Start with the arithmetic for one category. Count the filters, multiply, look at the number. Then list the filtered URLs that pass the demand test and treat the rest as tools. The wider groundwork is in our ecommerce SEO guide, the page-level work in category page SEO.

Key takeaways: Five filters on a 400-product category can generate 96,000 URLs, or millions with multi-select on. Index only filter combinations with real search demand. Disallow sort order, price sliders and multi-select. Keep pagination crawlable. Never put noindex on a URL robots.txt already blocks.

Frequently asked questions

Is faceted search bad for SEO?

No — uncontrolled faceted search is. The filter panel helps shoppers and has no downside in itself. The damage comes from letting every filter combination exist as a crawlable, indexable URL. Decide which combinations deserve a real page and block the rest.

Should I use robots.txt or noindex for filter URLs?

robots.txt if the URL should never be fetched — sort order, price sliders, multi-select. noindex if it is already indexed and you need it out. Never both on one URL: Google states a page blocked by robots.txt can never have its noindex rule read.

Can I still configure URL parameters in Search Console?

No. Google announced the URL Parameters tool's retirement on 28 March 2022 and switched it off on 26 April 2022. Any guide telling you to use it is obsolete. Parameter handling now lives in robots.txt, canonical tags and URL structure.

Which filtered pages should be indexable?

Usually one high-demand attribute per category — a fabric, a material, a brand, a vehicle fitment. The test: do people search that phrase, is there enough inventory to land on, can you write unique copy for it, and can a crawler reach it without clicking a filter.

Should paginated category pages be noindexed?

No. Paginated URLs are how crawlers reach products deep in a category. Give each page its own URL and canonical, link them with ordinary anchors, and never set page one as the canonical for the sequence. Google no longer uses rel="next" and rel="prev".

Ecommerce SEO

Filters working for shoppers and for Googlebot?

We write the facet list, the robots rules and the developer ticket — then check the crawl actually changed.

Explore ecommerce SEO →

Get our posts in Google

Make Digital Hangover a preferred source

One tap tells Google to show more of our SEO and marketing coverage in your Top Stories.