On an online store, facets are the filter options down the side of a category page. A shopper on Bean & Barrel Coffee’s “Coffee” category can tick “Dark roast”, “Whole bean”, “1 kg” and “Under $30”. Each choice usually changes the URL:
/shop/coffee/?roast=dark&grind=whole-bean&size=1kg&price=0-30
That’s handy for people. For search engines, it’s a potential trap.
Why it matters
The number of combinations multiplies fast. Five filters with five options each, plus sorting and the order parameters appear in, can produce hundreds of thousands of URLs from a category of 140 products. Most show the same few products in a different order. Google’s crawler can spend its time on these instead of new products, which is a classic crawl budget problem, and the near-identical pages create duplicate content.
Some filtered pages are worth ranking, though. “Decaf coffee beans” or “dark roast espresso beans” are real searches with buying intent. The goal is to let a handful of valuable combinations be indexed and keep the rest out of the way.
How to handle facets
- Decide which facets deserve their own page. If people search for it (check search volume), give it a clean, static URL like
/shop/decaf/, a unique title and intro text, and link to it from the main category. - Keep the rest from being crawled. Google’s guidance (updated in late 2024) is to block crawling of filter parameters you don’t want indexed with robots.txt, or to use URL fragments (
#) for filters, which Google generally doesn’t crawl as separate pages. - Use canonicals as a backstop. Filtered URLs can carry a canonical tag pointing to the unfiltered category, though Google may ignore it if the content differs a lot, and it doesn’t stop crawling.
- Keep parameters in a consistent order, so
?roast=dark&size=1kgand?size=1kg&roast=darkdon’t become two URLs. - Return a 404 for empty combinations rather than an empty page with a 200 status.
User-agent: *
Disallow: /*?*price=
Disallow: /*?*sort=
Common mistakes
- Indexing every filter combination and ending up with thousands of thin pages.
- Blocking all parameters, including the pagination parameter that leads to deeper products.
- Noindexing filtered pages and assuming that saves crawl budget. Google still has to crawl them to see the noindex.
- Filters built only in JavaScript that change the page without changing the URL, so the valuable ones can’t rank either.
How to check
Search Console’s Crawl Stats report shows if Googlebot is spending a large share of requests on parameter URLs. A Site Audit crawl will also surface duplicate titles and duplicate content created by filters. Faceted navigation is one of the biggest technical topics in ecommerce SEO.