How to Speed Up WooCommerce: 20 Proven Fixes for a Slow Store

A slow WooCommerce store loses sales and rankings. These 20 fixes cover the real causes, from hosting and object caching to autoloaded options, cart fragments and slow admin pages.

WooCommerce powers a huge number of online stores, and many of them are slower than they need to be. The good news: WooCommerce can be fast. The slowness almost always comes from hosting, plugins, database bloat or the theme, and all of those can be fixed.

Here are 20 fixes, grouped by area, roughly in the order I apply them when a store owner asks: “Why is my WooCommerce site so slow?”

Measure first

Before changing anything, measure:

  • TTFB (time to first byte) on the home, category, product, cart and checkout pages
  • Core Web Vitals in Google Search Console
  • Slow database queries and slow plugins with the free Query Monitor plugin, on a staging copy

Write the numbers down so you can see what each fix achieves.

Hosting and server

1. Use hosting built for WooCommerce

Cheap shared hosting is the most common reason for a slow WooCommerce site. Cart, checkout and “My account” pages cannot be fully page-cached, so PHP and the database must be fast. Look for dedicated resources, NVMe storage and support for object caching.

2. Run a current PHP version

Newer PHP versions are significantly faster and receive security updates. Check your PHP version under Tools → Site Health → Info and upgrade on staging first.

3. Add a persistent object cache (Redis)

WooCommerce runs many repeated database queries. A Redis object cache stores results in memory. This especially speeds up uncached pages such as the cart, checkout and admin.

4. Use a CDN

A CDN serves images, CSS and JavaScript from servers close to your visitors, and can also cache full pages for anonymous users.

Caching

5. Enable page caching, with the right exclusions

Page caching (through your host, a CDN or a caching plugin) makes product and category pages much faster. Always exclude:

  • /cart/, /checkout/, /my-account/
  • Requests with WooCommerce cart or session cookies

6. Check cart fragments

The wc-cart-fragments script updates the mini cart via AJAX on every page load. On many stores this makes an uncached request for every visitor. Recent WooCommerce versions only load it where needed, but themes and plugins may still enqueue it. If your theme does not need a live mini cart on every page, limit it.

Database

7. Enable High-Performance Order Storage (HPOS)

HPOS stores orders in dedicated tables instead of the generic WordPress posts tables. It is the default for new stores. If your store still uses legacy storage, check plugin compatibility under WooCommerce → Settings → Advanced → Features, and migrate on staging first.

8. Clean up autoloaded options

WordPress loads all “autoloaded” options on every request. Old plugins leave large amounts of data behind. Check the size:

SELECT SUM(LENGTH(option_value)) FROM wp_options WHERE autoload IN ('yes','on','auto-on','auto');

If it is several megabytes, find the largest entries and remove leftovers of deleted plugins.

9. Clear expired transients and old sessions

Transients and the wp_woocommerce_sessions table can grow large. Use WooCommerce → Status → Tools to clear expired transients and sessions.

10. Control the Action Scheduler

WooCommerce and many plugins use the Action Scheduler for background jobs. Check WooCommerce → Status → Scheduled Actions. Thousands of failed or pending actions point to a problem plugin. Completed actions should be cleaned up regularly.

11. Clean revisions and spam

Limit post revisions in wp-config.php:

define( 'WP_POST_REVISIONS', 5 );

Remove spam comments and old revisions on large stores.

Plugins and theme

12. Audit your plugins

Every active plugin runs code on every request. Use Query Monitor to see which plugins add the most queries and time. Remove anything unused, and replace heavy plugins with lighter alternatives.

13. Choose a lightweight theme

Multipurpose themes and heavy page builders load a lot of CSS and JavaScript. A lightweight, WooCommerce-focused theme or a block theme usually performs much better.

14. Load scripts only where needed

Many plugins load their scripts on every page, even if they are only needed on one (for example contact forms, sliders, review widgets). Use an asset manager plugin or code to dequeue them elsewhere.

15. Reduce third-party scripts

Chat widgets, heatmaps, multiple ad pixels and review widgets add up. Load non-essential scripts after interaction or with a delay. This helps INP a lot (see Core Web Vitals for e-commerce).

Images and frontend

16. Optimise product images

Compress images, serve WebP or AVIF, and set correct image sizes for your theme in WooCommerce → Settings → Products and the Customizer.

17. Do not lazy-load the main product image

The main product image is usually the LCP element. It should load immediately with high priority.

18. Minify and combine carefully

Minifying CSS and JavaScript helps. Aggressive combining and “remove unused CSS” features can break the checkout, so always test checkout after enabling them.

Search, filters and admin

19. Speed up product search and filters

Default WordPress search is slow on large catalogs. For thousands of products, consider a dedicated search solution (for example based on Elasticsearch/OpenSearch or a hosted search service) and an efficient filter plugin.

20. Fix a slow WooCommerce admin

A slow admin usually means: too many orders in legacy storage (fix with HPOS), heavy dashboard widgets, WooCommerce Analytics imports running, or slow external API calls by plugins. Query Monitor shows which.

Quick checklist

Area Quick win
Hosting Current PHP, NVMe, Redis
Caching Page cache with cart/checkout exclusions
Database HPOS, autoload cleanup, sessions, Action Scheduler
Plugins Remove unused, dequeue scripts per page
Frontend Light theme, WebP, LCP image not lazy

Frequently asked questions

Why is my WooCommerce checkout so slow?

Checkout cannot be page cached, so it depends on PHP speed, the database, object caching and the plugins that hook into checkout (shipping rates, payment gateways, fraud checks). External API calls for shipping rates are a common culprit.

How many plugins is too many for WooCommerce?

There is no fixed number. Ten heavy plugins can be slower than forty light ones. Measure impact per plugin instead of counting.

Does WooCommerce scale to large stores?

Yes, with the right hosting, HPOS, object caching, a good search solution and disciplined development. Most scaling problems are configuration and plugin problems, not WooCommerce itself.

Is a caching plugin enough?

It helps a lot for anonymous visitors on product and category pages, but not for logged-in users, cart and checkout. Server speed and database health still matter.

Want a faster WooCommerce store?

I optimise WooCommerce stores end to end: hosting, database, plugins, theme and Core Web Vitals. See my WordPress and WooCommerce service or request a speed audit.