E-commerce

Ecommerce SEO Tips: Fix Faceted Navigation Before It Eats Your Crawl Budget

The ecommerce SEO tip worth doing first: stop filter combinations creating thousands of near-duplicate pages, without hiding your real categories.

The article

My best ecommerce SEO tip is to fix faceted navigation before you touch anything else. Every filter on a category page (size, colour, brand, price range) can create its own URL, and three or four filters combined can turn one category into hundreds of near-duplicate pages. Google spends its crawl time on those copies instead of the products and categories you actually want found.

New product descriptions, better category copy and backlinks all help, but they compete for the same crawl time as the filter pages. Clear the filter noise first and everything you do after it gets found sooner.

Why faceted navigation is the first thing to fix

Faceted navigation is the filter panel down the side of a category page. It is good for shoppers, because nobody wants to scroll through every pair of shoes to find a black size 10. The trouble is how most platforms build it. Each filter adds a parameter to the URL, and each combination of filters is a new address as far as a search engine is concerned.

The numbers grow quickly. Take a simple example: a category with 8 colours, 10 sizes and 6 brands.

  • One filter applied: 8 + 10 + 6 = 24 URLs, several of which may match real searches.
  • Two filters applied: 80 + 48 + 60 = 188 URLs.
  • Three filters applied: 8 x 10 x 6 = 480 URLs.
  • Add 5 price bands: the three-filter set alone becomes 2,400 URLs.
  • Add 4 sort orders on top: 9,600 URLs, all from one category page.

Those figures are arithmetic, not a measurement of any particular store, but the shape is the point. Most of those pages show the same products in a slightly different order, or a handful of products that already appear on the parent category.

Google describes the result plainly in its own guidance on managing faceted navigation URLs: because each filter URL looks new, crawlers tend to fetch a very large number of them before working out they are not useful, and the time spent there means new, useful URLs are discovered more slowly. On a store that adds products every week, slower discovery means new lines sitting unseen while Google works through filter combinations nobody searches for.

How to tell if it is happening to you

You do not need a paid tool to check. Open Google Search Console and look at the Page Indexing report.

Look at two rows in particular: "Crawled - currently not indexed" and "Duplicate without user-selected canonical". If either count is far larger than the number of products you sell, open the example URLs. When they are full of filter parameters such as ?colour=, &size= or &brand=, faceted navigation is the cause.

Two more quick checks help confirm it:

  • Inspect one deep filter URL. Paste a URL with three filters applied into the URL Inspection tool and see whether Google has crawled it and which canonical it chose.
  • Crawl a single category. Run any site crawler over one category with filters and count how many unique URLs it finds compared with the number of products in that category.

If you want the wider version of this health check, my technical SEO audit checklist covers the rest of the crawl and indexing signals worth reviewing at the same time.

The fix, in order

The order matters, because each step depends on the one before it.

  1. Decide which filters deserve their own page. One filter applied to a category often matches a real search, such as "black running shoes". Keep those as clean, indexable URLs with their own heading and a short introduction, and link to them from the category so they are treated as proper pages.
  2. Canonical everything else back to the parent. Any URL with two or more filters applied should carry a canonical tag pointing at the parent category or at the one-filter page it belongs to.
  3. Noindex the deep combinations. Add a noindex tag to filter combinations that should never appear in search, so they drop out of the index once Google recrawls them.
  4. Only then block crawling, and only for patterns that carry no noindex. Use robots.txt for parameter patterns that should never be crawled at all, such as sort order or items per page. The next section explains why this step has to come last.
  5. Stop linking to the noise. Render filter links so the deep combinations are not plain crawlable links in your HTML, and keep them out of your XML sitemap. A sitemap should only list pages you want indexed.

This is the same thinking behind a good site structure in general: a small set of strong category and subcategory pages that everything else supports. If you are planning that structure from scratch, my guide to hub and spoke SEO architecture walks through how to choose which pages earn a place.

The robots.txt mistake that undoes the whole fix

The most common mistake I see is blocking filter URLs in robots.txt while also relying on their noindex or canonical tags. It feels like belt and braces. In practice the two cancel each other out.

Google cannot read a tag on a page it is not allowed to fetch. Its noindex documentation says it directly: for noindex to work, the page must not be blocked by a robots.txt file. The same applies to a canonical tag. If the URL is blocked, Google never sees either instruction, and a blocked URL that other pages link to can still be indexed without its content.

So keep the two jobs separate:

  • URLs you want consolidated or dropped from the index stay crawlable, carrying their canonical or noindex tag, until Google has processed them.
  • URLs that never need to be crawled at all, such as sort order and items per page, can be blocked in robots.txt, because you are not asking Google to read anything on them.

A robots.txt rule for those patterns might look like this:

User-agent: *
Disallow: /*?*sort=
Disallow: /*?*per_page=

Check the parameter names your own platform uses before copying any rule, and test changes with the robots.txt report in Search Console before relying on them.

What to expect after the fix

The change is not instant. Google has to recrawl the site and drop the duplicates, which usually takes weeks, not days. Larger stores take longer, because there are more filter URLs to work through.

What you should see in Search Console is the duplicate and "not indexed" counts falling over the following weeks, while your real category and product pages are crawled more often. Check the Page Indexing report once a fortnight rather than every day, and note the date you made the change so you can read the trend against it.

If a count does not move after a couple of months, go back to the example URLs. The usual causes are a filter link still sitting in the sitemap, a theme or app that adds new parameters, or a robots.txt rule that is quietly blocking pages you needed Google to read.

If your store has grown a filter problem like this and you want it fixed properly, see how I approach search engine optimisation for online stores, or how I design and build websites with clean filter URLs from the start.

More articles

Tell me what you need.

You get a straight answer, from me.

Join the waitlist