Skip to content
Back to blog
Product · 5 min read

WordPress With Thousands of Products: Where Your Catalog Starts to Struggle

WordPress with thousands of products

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".

A drawer full of notes vs. a filing cabinet sorted by attribute
How WordPress stores product attributes vs. a system built for catalogs

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

  1. Measure what's slow. Query Monitor shows which plugin is firing the slow queries.
  2. Clean up plugins. If you don't use it, delete it.
  3. 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.
  4. Turn off filter counts if your plugin lets you. They're expensive.
  5. Get an indexing plugin. FacetWP keeps its own index of attributes and, according to its makers, handles hundreds of thousands of items.
  6. 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 WordPressSystem built for catalogs
Several filters at onceyes with an indexing plugin, slow withoutyes
SEO for filter combinationsthrough another pluginbuilt in
Inquiry instead of a cartbending WooCommerceyes
Cart and paymentsyesno, SQRL doesn't have them
Reliance on pluginshighlow
Developers availableplentyfewer

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.

The SQRL catalog with filters and result counts
The SQRL catalog: counts next to options, greyed-out empty options and filters in the URL

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.

Running a catalog your site can't handle?

Book a SQRL demo and see the filters working on your own products.

Book a demo