{"id":30203,"date":"2026-04-01T09:53:00","date_gmt":"2026-04-01T08:53:00","guid":{"rendered":"https:\/\/www.web-systems.pl\/faceted-navigation-store-filters-seo\/"},"modified":"2026-10-13T14:55:58","modified_gmt":"2026-10-13T13:55:58","slug":"faceted-navigation-store-filters-seo","status":"publish","type":"post","link":"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/","title":{"rendered":"Faceted navigation in an online store: filters that don&#8217;t hurt SEO"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Thousands of URLs with filter parameters in Search Console? It usually means Google&#8217;s crawlers are wasting time going through one filter combination after another. There is no penalty for that. You can sort it out with a few technical decisions. <strong>Faceted navigation<\/strong> makes shopping easier for customers, but left unchecked it produces an almost infinite number of pages. Below I answer three questions: which filters to block, which to keep and which Google tools to use for it.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#What_is_faceted_navigation_and_where_do_thousands_of_parameter_URLs_come_from\" >What is faceted navigation and where do thousands of parameter URLs come from?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Are_filter_URLs_in_Search_Console_a_problem_for_a_stores_SEO\" >Are filter URLs in Search Console a problem for a store&#8217;s SEO?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Indexing_product_filters_when_to_block_and_when_to_keep_them\" >Indexing product filters: when to block and when to keep them?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#How_to_block_filters_in_robotstxt_and_when_are_URL_fragments_enough\" >How to block filters in robots.txt and when are URL fragments enough?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Canonical_in_an_online_store_and_nofollow_supporting_signals\" >Canonical in an online store and nofollow: supporting signals<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Where_to_start_cleaning_up_filters_in_your_store\" >Where to start cleaning up filters in your store?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Frequently_asked_questions\" >Frequently asked questions<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Do_store_filters_hurt_rankings_in_Google\" >Do store filters hurt rankings in Google?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Is_it_enough_to_set_a_canonical_on_filter_pages\" >Is it enough to set a canonical on filter pages?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.web-systems.pl\/en\/faceted-navigation-store-filters-seo\/#Can_I_block_all_filters_in_robotstxt\" >Can I block all filters in robots.txt?<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_is_faceted_navigation_and_where_do_thousands_of_parameter_URLs_come_from\"><\/span>What is faceted navigation and where do thousands of parameter URLs come from?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Faceted navigation is a set of filters that change the view of a product list, for example by category, color or size. Most often it works through parameters appended to the URL, such as <em>?color=black&amp;size=m<\/em>. And this is where the trouble starts. Every selected filter, and every combination of filters, is a separate URL. A few attributes with a dozen or so values each are enough for the number of possible URLs to snowball. Google calls this an infinite URL space. Most of these pages show essentially the same products, so the store creates its own <a href=\"https:\/\/www.web-systems.pl\/en\/woocommerce-seo-optimization-guide-for-store-owners\/\">duplicate content problem<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Are_filter_URLs_in_Search_Console_a_problem_for_a_stores_SEO\"><\/span>Are filter URLs in Search Console a problem for a store&#8217;s SEO?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There will be no penalty, but the crawl budget goes down the drain. <a href=\"https:\/\/developers.google.com\/crawling\/docs\/faceted-navigation\" rel=\"nofollow noopener\" target=\"_blank\">Google&#8217;s guidelines on faceted navigation<\/a> explain it: the crawler does not know whether a new URL will be useful until it visits it. So it goes through a mass of variants before it decides they are useless. The industry calls this <em>overcrawling<\/em>, meaning excessive crawling. What does that mean in practice?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>new products and categories are discovered more slowly, because the crawler is stuck in the filters,<\/li>\n<li>the server renders thousands of versions of the same list and spends computing power on it,<\/li>\n<li>reports swell with URLs that do nothing for the store&#8217;s visibility.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Indexing_product_filters_when_to_block_and_when_to_keep_them\"><\/span>Indexing product filters: when to block and when to keep them?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If filtered pages do not need to be in the search results, block them from being crawled. And if they are supposed to show up there? Then they have to follow Google&#8217;s best practices. Before you decide, answer three questions honestly:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Does anyone actually search for this combination, for example a specific color in a given category?<\/li>\n<li>Does the filtered page have unique value, or does it only rearrange the same products?<\/li>\n<li>Can the same list already be seen at a URL without filters?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Google&#8217;s documentation recommends keeping individual product pages and one list of all products without filters open to the crawler. That&#8217;s it. Every extra variant you leave open is more load on the server. In my opinion it is better to start with the minimum and add only what really makes sense.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_to_block_filters_in_robotstxt_and_when_are_URL_fragments_enough\"><\/span>How to block filters in robots.txt and when are URL fragments enough?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Google points to two methods that work best in the long run: <em>disallow<\/em> rules in robots.txt for filter parameters, or filters based on URL fragments (the part of the address after the # sign). Blocking in robots.txt takes four steps:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>List the filter parameters that appear in Search Console reports.<\/li>\n<li>Add <em>disallow<\/em> rules for each of them.<\/li>\n<li>Keep an <em>allow<\/em> rule for the list of all products.<\/li>\n<li>Make sure product and category pages are still accessible to the crawler.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">An example based on the documentation:<\/p>\n\n\n\n<pre><code>user-agent: Googlebot\ndisallow: \/*?*products=\ndisallow: \/*?*color=\ndisallow: \/*?*size=\nallow: \/*?products=all$<\/code><\/pre>\n<p class=\"wp-block-paragraph\">URL fragments such as <em>#products=fish&amp;color=green<\/em> have no effect on crawling at all. Neither positive nor negative. If you are designing new filters or rebuilding old ones, this is a good moment to consider them.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Canonical_in_an_online_store_and_nofollow_supporting_signals\"><\/span>Canonical in an online store and nofollow: supporting signals<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The rel=&#8221;canonical&#8221; and rel=&#8221;nofollow&#8221; attributes hint to Google which URLs are preferred. But according to the documentation, in the long run they are less effective than robots.txt and URL fragments. A canonical on the filtered version, pointing to the list without filters, can reduce crawling of non-canonical URLs over time. Over time. Not right away. And the crawler still has to visit the page to read the canonical at all. Nofollow on links to filters? Good as an extra signal that supports the rest, just don&#8217;t make it your only safeguard when there are many parameters.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Where_to_start_cleaning_up_filters_in_your_store\"><\/span>Where to start cleaning up filters in your store?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">First comes the list of parameters and the decision on which filters should be indexed. Only then do you touch robots.txt and canonicals. The implementation itself depends on the platform, because every engine builds filter URLs in its own way. <a href=\"https:\/\/www.web-systems.pl\/en\/woocommerce-stores\/\">Stores built on WooCommerce<\/a> are configured differently from <a href=\"https:\/\/www.web-systems.pl\/en\/stores-on-the-prestashop-platform\/\">PrestaShop store implementations<\/a>. Still planning your store? Then think about filters when you choose the engine (it costs more later). Our guide on <a href=\"https:\/\/www.web-systems.pl\/en\/shopify-woocommerce-prestashop-choosing-a-platform\/\">choosing an online store platform<\/a> will come in handy. And when there are tens of thousands of URLs, or you are not sure what can be blocked safely, order a <a href=\"https:\/\/www.web-systems.pl\/en\/seo-audits\/\">technical SEO store audit<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Well-configured faceted navigation does two things at once: shoppers find the product quickly, and crawlers don&#8217;t get bogged down in filters.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Frequently_asked_questions\"><\/span>Frequently asked questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1790308534167-0\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"Do_store_filters_hurt_rankings_in_Google\"><\/span>Do store filters hurt rankings in Google?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>The filters themselves do not. The trouble is the huge number of URLs, which eats up the crawler&#8217;s time and puts load on the server. As a result, new products may be discovered later.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1790308534167-1\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"Is_it_enough_to_set_a_canonical_on_filter_pages\"><\/span>Is it enough to set a canonical on filter pages?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>A canonical helps, but according to Google it is less effective than robots.txt in the long run. With a large number of parameter URLs it is better to block the parameters and treat the canonical as an extra signal.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1790308534167-2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \"><span class=\"ez-toc-section\" id=\"Can_I_block_all_filters_in_robotstxt\"><\/span>Can I block all filters in robots.txt?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Yes, if you do not need filtered pages in the search results. One condition: product pages and the list of all products without filters must stay accessible to the crawler. After the change, look into Search Console and check that you have not blocked something important.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Thousands of URLs with filter parameters in Search Console? It usually means Google&#8217;s crawlers are wasting time going through one filter combination after another. There is no penalty for that. You can sort it out with a few technical decisions. Faceted navigation makes shopping easier for customers, but left unchecked it produces an almost infinite [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":30175,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[812,822],"tags":[2225,948,2232,1126,2227,1246],"class_list":["post-30203","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-e-commerce-en","category-seo-sem-en","tag-crawl-budget-x","tag-e-commerce-en","tag-faceted-navigation","tag-online-store","tag-product-filters","tag-seo-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/30203","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/comments?post=30203"}],"version-history":[{"count":3,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/30203\/revisions"}],"predecessor-version":[{"id":30252,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/posts\/30203\/revisions\/30252"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/media\/30175"}],"wp:attachment":[{"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/media?parent=30203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/categories?post=30203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.web-systems.pl\/en\/wp-json\/wp\/v2\/tags?post=30203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}