Skip to main content

Faceted navigation: ecommerce's biggest index bloat machine

Will Sibley

Will Sibley
London-based SEO and website consultant, ten years in. About Will

In my ecommerce SEO strategy I listed faceted navigation first among the technical problems that quietly cap everything else on a store, and my technical SEO checklist calls filtered URLs the biggest source of index bloat on ecommerce sites. Both posts gave the problem a sentence. It deserves a full one, because in audits it's the single most common reason I find a store where Google is spending most of its attention on pages nobody will ever search for.

The frustrating part is that faceted navigation is good. Filters by size, colour, brand and price are exactly what shoppers want, and no sensible person would remove them. The problem is never the feature. It's what the most common implementation, filters written into URL parameters, does to the URL space behind the shop.

One category, a million URLs

The maths is the whole story. Take a category with five filter types, each with a handful of options, and allow them to combine. Size times colour times brand times price times material, then multiply again by sort orders and pagination, and a single category of eighty products is suddenly reachable at tens of thousands of URLs. Across a whole store the space is effectively infinite, which is the word Google itself uses. Its crawling documentation describes parameter-based faceted navigation generating "infinite URL spaces", and names the two costs: overcrawling, because a crawler can't tell a useless filtered URL from a useful one without fetching it, and slower discovery, because time spent on filter permutations is time not spent finding your new products.

Nearly all of those URLs are near-duplicates of the parent category, showing the same products reshuffled with thinner and thinner selections. They add server load, they spread internal link signals across pages that shouldn't exist, and at scale they slow down how quickly Google picks up the pages that do matter.

Not every filter page is bloat

Before blocking anything, it's worth flagging that some filtered views deserve to be pages, because some filter combinations are real searches. "Sofas" filtered to leather and brown is index bloat's raw material, but "brown leather sofa" is a query with genuine demand, and a store that surfaces that combination as a proper indexable page is building exactly the kind of category coverage I argued for in the category page post.

The test is search demand. If a facet combination maps to a query people actually type, promote it into a real category page, with a clean URL, its own title and opening copy, and internal links pointing at it. If it doesn't, it exists for shoppers who are already on the site, and search engines have no business crawling it. That sorting exercise, deciding which combinations earn indexation and which get blocked, is the actual work of faceted navigation SEO. Everything after it is implementation.

Blocking the rest, the way Google recommends

Google updated its faceted navigation guidance at the end of 2024, and the current documentation is refreshingly blunt. If you don't need filtered URLs to show up in search, prevent them from being crawled, because oftentimes there's no good reason to allow it. The two methods it puts first are robots.txt rules that disallow the filter parameters, and building the filters on URL fragments (everything after a #), which Google generally ignores in crawling and indexing.

The same documentation says something practitioners took years to learn the hard way, which is that canonical tags and nofollow, the traditional fixes, are "generally less effective in the long term". A canonical on a filtered page is a hint, not a barrier. Google still has to crawl the page to see it, so the server cost and the wasted crawl are already spent, and hints get ignored when signals conflict. Here's where each tool actually stands.

ApproachStops crawling?Stops indexing?Where it fits
robots.txt disallow on filter parametersYesMostly (a blocked URL can still appear, rarely, if heavily linked)Google's first recommendation, and mine, for facets that shouldn't exist in search
Filters built on URL fragments (#)Yes, by designYesThe cleanest option if you're building or replatforming now
Canonical to the parent categoryNoConsolidates, slowlyA supporting signal on pages that stay crawlable, not a fix on its own
nofollow on filter linksPartially, and only if every link to the URL carries itNoRarely worth the maintenance burden
noindex meta tagNo, the page must be crawled to see itYesWhen you need pages out of the index but can't touch robots.txt

One nuance worth keeping in mind is that robots.txt controls crawling, not indexing. A blocked URL that picks up links can occasionally appear in results as a bare URL with no description. On filter pages this is almost never a problem in practice, but it's the reason the noindex row exists in that table, and I've seen the two mechanisms combined badly, blocking a page in robots.txt so Google can never see the noindex tag it was supposed to obey.

If your filter pages must stay crawlable

Some setups genuinely need filtered URLs crawlable, usually because a set of them has been promoted to landing pages. Google's guidance for that case comes down to three rules. Use the standard ampersand separator for parameters, since commas, semicolons and brackets confuse crawlers. If filters live in the URL path, keep their order consistent so the same combination can't exist at two addresses. And return a proper 404 when a filter combination has no results, rather than a page cheerfully displaying zero products, because empty combinations at 200 status are how the infinite space fills up with indexable nothing.

Finding out how bad yours is

Search Console gives you the evidence quickly. The page indexing report on a store with a facet problem shows the pattern at a glance, thousands of URLs sitting in "Duplicate without user-selected canonical", "Alternative page with proper canonical tag" and "Discovered, currently not indexed", most of them carrying filter parameters. The crawl stats report tells you where Googlebot's time is actually going, and a site search for your domain plus a filter parameter shows what's already leaked into the index. On a large store I'd crawl it properly and segment parameterised URLs from clean ones, which is part of what a technical audit covers.

The fix is rarely urgent in the way a broken canonical or a stray noindex is urgent, and cleaning it up won't double your traffic by Friday. What it does is remove a tax. Every signal the store earns starts concentrating on pages that can rank and sell, and Google's attention shifts from filter permutations to products. On stores of any size, that's some of the highest-value ecommerce SEO work there is.

Faceted navigation SEO FAQs

Is faceted navigation bad for SEO?

The feature isn't, and shoppers expect it. The damage comes from implementations that put every filter into a crawlable URL parameter, which turns one category into thousands of near-duplicate pages. Handled deliberately, with demand-backed combinations promoted to real pages and the rest blocked from crawling, faceted navigation and SEO coexist happily.

Should filter pages be indexed?

Only the ones that match real searches. If people search "brown leather sofa", that combination deserves to be a proper indexable category page with its own title and copy. Combinations nobody searches, sort orders, price sliders and three-filter stacks, should be blocked from crawling, because they can only dilute the store's signals.

Does a canonical tag fix faceted navigation?

Not on its own. Google's own documentation says canonicals and nofollow are generally less effective for this in the long term than robots.txt or fragment-based filters, because Google still has to crawl every filtered page to see the tag, so the crawl waste has already happened. Canonicals help consolidate the pages that stay crawlable; they don't stop the flood.

Do small stores need to worry about this?

Less, and honestly a store with forty products and light filtering can leave this alone. Crawl waste bites hardest at scale, where filter permutations run into the millions. That said, the indexation side, duplicate filtered pages competing with your real categories, affects stores of any size, so the sorting exercise of which filter pages should exist is worth doing even when crawl budget isn't a concern.

Want your store's crawl pointed at pages that sell?

Tell me what you're working on and what you're trying to achieve, and I'll give you an honest view of whether I can help and what it would take.

Get in touch