Faceted navigation SEO

Faceted navigation lets users filter category pages by attributes, brand, size, color, price, rating. Each filter combination can create a unique URL. On a large site, this can generate millions of URLs, most of which are noise. Handled wrong, it wrecks SEO.

The problem

A category with 4 brands × 6 sizes × 8 colors × 5 price ranges = 960 possible filter combinations per category. Across 100 categories, that's 96,000 URLs. Most are duplicates of each other with trivial differences; all get crawled by Google at the expense of important pages.

The framework

Decide per filter combination:

  1. Is this a page users search for?
  2. Is there enough unique value to warrant its own URL?
  3. Can it rank on its own (not cannibalizing parent category)?

If yes to all three: let it be indexed.

If no: noindex it or block it.

Filters worth indexing (typically)

Filters NOT worth indexing

Implementation options

1, robots.txt

Block crawling of specific parameter patterns:

Disallow: /*?sort=
Disallow: /*?view=
Disallow: /*?size=

Pro: simple. Con: Google still sees links to these URLs from internal nav; they might still be indexed if externally linked.

2. Meta robots noindex

Add <meta name="robots" content="noindex, follow"> to filter-result pages you don't want indexed. Google crawls them, sees noindex, drops from index.

Pro: clean signal. Con: uses crawl budget.

3. Canonical to parent

Filter URLs canonical to the unfiltered category. Signals to Google "this is a variation; consolidate to the parent."

Pro: preserves link equity. Con: Google sometimes ignores canonicals it doesn't buy.

4. AJAX-based filters (no URL change)

Filters update content via JS without changing URL. No crawl issue because no new URLs exist. But: users can't share specific filtered views, and rankings don't attach to specific filter combos.

5. Hybrid: some filters = new URLs (indexable), others = JS-only

Often best. Brand + major category filters change URL + are indexable. Size/color/price/sort use JS without URL change.

Decision-making approach

For each filter on your site:

  1. Check search volume for the filter+category combination in keyword research tools
  2. If <50/mo volume, skip indexing
  3. If >200/mo, create a dedicated landing page OR allow the filter URL to be indexable
  4. 50-200/mo: case-by-case based on competition + conversion value

Canonical ambiguity

Common setup: brand filter is indexable (/shoes/nike), size filter isn't (/shoes/nike/size-10 canonical to /shoes/nike).

Be careful that:

Parameter handling in Search Console

Historically GSC had a "URL Parameters" tool for telling Google how to treat each parameter. Deprecated in 2022. Google now figures this out from canonical + noindex + internal linking signals.

Sitemap + faceted URLs

Only include indexable URLs in your sitemap. Canonical-consolidated + noindexed URLs stay out.

Common mistakes