A customer opens your catalog and ticks two filters. Stainless steel, 20 mm diameter. The spinner spins, the page freezes. By the time anything shows up, they're on a competitor's site.
Your developer suggests better hosting and another plugin. That buys you a month.
And it doesn't take thousands of products. I've seen a site with two hundred products that was barely usable. Here's why it happens and how to tell when optimizing won't cut it anymore.
Why a WordPress Catalog Slows Down
WordPress was built for blogs. Product attributes like price, size or material all go into one general-purpose table. Picture a drawer you keep throwing notes into: "product 1543, material: stainless steel".
Every time a customer filters, the database has to dig through the drawer and match up the notes. Each extra filter makes it worse. And showing result counts next to every option means digging through it all over again.
It's not just about the number of products. What matters is how many attributes they have and how many filters a customer combines. That two-hundred-product site was bogged down by WooCommerce and a few poorly optimized add-ons.
Why Another Plugin Won't Fix It
It loads everything
Some filter plugins load every product first and filter afterwards. One of them started struggling past 2,000 products. At 6,000, the results never showed up.
Caching isn't enough
Every filter combination is a different page. You can't pre-build thousands of combinations, so caching only hides part of the problem.
Layers break
Plugins patch things up with their own caches and precomputed tables. It's a workaround, and every layer is one more thing the next update can break.
What to Try Before You Switch Platforms
- Measure what's slow. Query Monitor shows which plugin is firing the slow queries.
- Clean up plugins. If you don't use it, delete it.
- Use global attributes. Predefined values you set up once and then pick for each product filter much faster than text typed into every product by hand.
- Turn off filter counts if your plugin lets you. They're expensive.
- Get an indexing plugin. FacetWP keeps its own index of attributes and, according to its makers, handles hundreds of thousands of items.
- Only then, hosting. A badly built filter on a faster server is just slightly less slow.
Do all this properly and WordPress can handle a large catalog. Personally, though, I don't think it's the right fit for a filter-heavy catalog in most cases. The data structure just isn't built for efficient filtering, and the index is a patch to make up for it. You'll feel it most when customers combine several filters at once.
Stay or Switch?
Stay on WordPress if
- you have hundreds of products and people filter by one or two attributes
- the catalog is an add-on to your site, not your main sales tool
- you sell through a cart and need payments
- you have a developer who keeps an eye on performance and plugins
Switch if
- customers combine several attributes and end up waiting
- every update is a gamble
- products and attributes keep piling up
- you need inquiries instead of a cart, or multiple languages
Shoptet isn't automatically the answer either. I moved a catalog from WordPress to Shoptet, a Czech hosted e-commerce platform similar to Shopify. Speed improved, but a different URL structure, tricky redirects and a custom script just to export products meant a lot of work. And the design is tied to the platform. You gain speed and pay for it in design freedom. For a classic online store with a cart, though, it's a good choice.
| Optimized WordPress | System built for catalogs | |
|---|---|---|
| Several filters at once | yes with an indexing plugin, slow without | yes |
| SEO for filter combinations | through another plugin | built in |
| Inquiry instead of a cart | bending WooCommerce | yes |
| Cart and payments | yes | no, SQRL doesn't have them |
| Reliance on plugins | high | low |
| Developers available | plenty | fewer |
How We Solve It in SQRL
The catalog was the first thing we built in SQRL. Everything else grew around it.
Data ready for filtering
Attributes are stored in a form that's ready to filter on. Same idea as FacetWP, just built in.
Counts next to options
Every option shows how many results it leads to, and empty ones are greyed out. No more clicking into dead ends.
Filters in the URL
A sales rep sends /catalog?material=stainless&diameter=20 to a customer, and they see exactly that selection.
SEO without duplicates
Google skips the throwaway filter combinations, and the system hands it the ones that matter ("stainless only"). When you migrate, you can bulk-import your old URLs as redirects.
Conclusion
WordPress is great for websites, blogs and smaller stores. It wasn't built for a filter-heavy catalog, and plugins can hide that, not fix it.
My advice - measure first. If one plugin is the bottleneck, replace it. If it's the data structure, switch once and do it right instead of paying for patches every year.
Your customers won't wait for a filter.
Book a SQRL demo and see the filters working on your own products.
Useful links
- Query Monitor - shows what's slowing WordPress down
- How FacetWP works - filter indexing in WordPress
- Product attributes in WooCommerce - global vs. custom attributes
- PageSpeed Insights - measure your catalog's speed