Skip to main content
Knowledge

SEO-friendly filter URLs in WooCommerce

Product filters can help your SEO or get badly in its way. Every filter combination can produce its own URL, and without rules Google sees thousands of nearly identical pages. With the right approach, filters stay findable and shareable without draining your crawl budget.
In short
  • Give every filter state its own URL that works without JavaScript
  • Set loose combinations to noindex with a self-canonical
  • Create landing pages for combinations you want to rank for

The problem with filter URLs

Three filters with ten options each already produce a thousand possible combinations, and many more once sorting and pagination are added. Search engines can keep crawling endlessly, your crawl budget runs out and Google sometimes picks a canonical version you do not want. Loading filters only through JavaScript is no solution: search engines and shared links then see nothing at all.

Shareable and server-rendered

Spark Power Filters gives every filter state its own URL that also works without JavaScript, because the server fully renders the result. Visitors can share a filtered view and come back to it later, and search engines see the same content as visitors.

Noindex and canonical in the right place

Loose filter combinations get noindex and a self-canonical. They exist for visitors without ending up in the index as thin, duplicate pages. Your category page remains the page that ranks.
  • Self-canonical on every filter state
  • Noindex on loose combinations
  • No duplicate pages in Google

Landing pages for combinations with search volume

Some combinations are valuable: think of a brand within a category, or a color of a popular product. For those you create optional landing pages that do get indexed, so you rank for search terms with real demand.

Tip: Choose landing pages based on data. Check in Search Console which combinations already get impressions and start there, instead of indexing everything.

Filters that help your SEO instead of hurting it?

Frequently asked questions

Preferably not. Google cannot read a page that is blocked in robots.txt, so it will not see the noindex and canonical either. Noindex with a self-canonical is usually the better route.

Yes. Known filter states have a fixed, canonical form, so the same selection always produces the same URL, whatever order someone clicks in.

Yes. Spark Speed caches known, finite filter states as regular pages. Free combinations and price ranges never enter the cache, so it cannot fill up.