On this page
If you run an online store and most of your category pages aren’t indexed, check your filter navigation first. It’s the most common technical cause I find, and it’s almost always an accident.
What filter navigation does
Filter navigation (also called faceted navigation) is the set of filters on a category page: size, colour, brand, price, rating. Shoppers find it useful. The trouble is that every combination of filters usually creates its own URL, and Google can crawl every one of them.
The numbers add up fast. Six filters with five options each, combined in any order, produce tens of thousands of URLs from one category. Repeat that for every category, and a store with 400 real pages can expose several million crawlable URLs.

Google doesn’t crawl your site endlessly. It gives each site an amount of crawling based on how important the site is and how fast it responds. If most of that goes on URLs like ?color=blue&size=m&sort=price_asc, the pages you actually want to rank get crawled rarely, or not at all.
How to check whether this is your problem
- In Search Console, open Pages and compare the “Crawled, currently not indexed” count with the number of real pages on your site. A number far bigger than your catalogue is the warning sign.
- Look at “Discovered, currently not indexed”. A high number here means Google found the URLs and decided they weren’t worth crawling.
- If you have server logs, count the Googlebot requests that include a query string. Anything above about 30% of all crawling is a problem.
- Crawl the site with Screaming Frog with parameters switched on, and compare the number of URLs with the number of products.
Four fixes, best first

1. Don’t create the URL
The cleanest fix. Apply the filters in the browser without changing the URL, or send them with POST instead of GET. If there’s nothing to crawl, no crawl gets wasted.
2. Block them in robots.txt
Disallow the parameter patterns that nobody searches for. It’s quick to deploy and stops the wasted crawling straight away. Keep in mind that blocked URLs can still get indexed if other sites link to them.
3. Point the canonical at the main category
Use this when a filtered view has to stay crawlable for shoppers. It combines the ranking signals, but it doesn’t save crawl budget, because Google still has to crawl the page to read the canonical.
4. Index only the filters people search for
A few filter combinations do get real searches. “Men’s running shoes size 44” is something people type. Give those their own indexable pages with proper titles, and block the rest.
What to avoid
- Don’t use
noindex, followon thousands of pages. Over time Google treats pages that stay noindexed asnofollow, and you lose the internal link value passing through them. - Don’t rely on the old URL Parameters tool in Search Console. Google retired it in 2022.
- Don’t block a parameter that your indexable filter pages need. Check before you deploy.
- Don’t judge the fix after one week. Google takes weeks to recrawl a large catalogue.
What to expect afterwards
On the catalogues I’ve worked on, real category pages start getting indexed within two to six weeks of the fix, and traffic follows the indexing rather than coming first. If nothing has changed in Search Console after a month, the fix usually didn’t do what it was meant to. Run a fresh crawl to check before you decide the diagnosis was wrong.
Frequently asked
Will blocking filters hurt my rankings?
Blocking filter URLs that nobody searches for doesn’t remove anything that was ranking. The risk is blocking a pattern some of your indexable pages depend on, which is why you crawl and check before deploying, not after.
How do I know which filter combinations deserve their own page?
Use keyword data. If enough people search for a combination to justify a page, build it properly with its own title and intro, and let Google index it. If nobody searches for it, it’s a filter, not a page.
Does this apply to Shopify and WooCommerce?
Yes. Both create parameter URLs by default. On Shopify the usual culprits are the ?filter.v patterns, and on WooCommerce the ?filter_ and ?orderby parameters.


