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.