WooCommerce Speed Optimization: How to Make Your Store Fast

WooCommerce Speed Optimization: How to Make Your Store Fast

A prioritized WooCommerce speed guide: hosting and PHP, HPOS, caching, images, database, and front-end, in the order that actually makes your store fast.

WooCommerceJakub Rusniok
Updated August 13, 2026
15 min read

A slow WooCommerce store costs you twice. Shoppers leave before they buy, and poor real-user performance makes it harder to compete in Google Search when other pages satisfy the same intent. WooCommerce speed optimization is the work of finding what is dragging your store down and fixing it in the order that matters.

Most WooCommerce slowness comes from a few places: hosting, PHP, database work, caching gaps, and image weight. Fix them in that order instead of changing everything at once.

This is a prioritized guide, not a list of eighteen tips. What follows is what actually moves the needle on a store, ordered the way you should tackle it and grounded in WooCommerce's own performance guidance. It pairs with the broader WooCommerce SEO checklist and our ecommerce site speed guide.

LeverWhat it fixesEffort
Hosting and PHPThe foundation, slow server responseMedium
HPOSCart, checkout, and order adminLow
CachingRepeated page and database workMedium
ImagesPage weight and LCPLow
DatabaseBloat that runs on every pageLow
Front endRender-blocking scripts and stylesMedium

How to measure your WooCommerce store's speed

Before you change anything, measure, because a score tells you whether you have a problem and the field data tells you whether shoppers feel it. Run your store through our WooCommerce speed test. It scores the store on mobile and desktop, shows the lab metrics, adds Google's real-user field data when there is enough of it, and groups what to fix into WordPress and ecommerce steps. It calls Google PageSpeed Insights under the hood, so the numbers are the same, sorted into actions instead of raw diagnostics. Run PageSpeed directly if you want the unfiltered Lighthouse report.

EcomHint WooCommerce speed test report, showing the mobile score, an ecommerce verdict, and grouped fixes with time and weight savings
EcomHint WooCommerce speed test report, showing the mobile score, an ecommerce verdict, and grouped fixes with time and weight savings

Either way you get two kinds of numbers: lab scores from a simulated load, and field data from real visitors over the last 28 days. Field data is the one to trust for judging the real shopper experience, while the lab score is useful for diagnosing what to fix. The targets are an LCP under 2.5 seconds, an INP under 200 milliseconds, and a under 0.1 (web.dev).

There is also one signal specific to a store. WooCommerce treats a checkout that sits consistently above 800 milliseconds as the point where you should move host (WooCommerce).

A speed test flags the heavy scripts and images by name, but slow database queries are a server-side problem it cannot see. To find which plugin or theme is running them, install Query Monitor, a free plugin that profiles your queries.

WooCommerce also points to GTmetrix and WebPageTest for a second opinion (WooCommerce). It is common for stores to miss at least one mobile speed target, so treat the first run as a baseline, not a verdict.

A simple order to diagnose in:

  1. Run the speed test for the homepage, a category page, a product page, the cart, and checkout.
  2. Read the field data first, then work through the grouped fixes to see what to change.
  3. Check the checkout time to first byte on its own, since checkout cannot be fully page-cached.
  4. Use Query Monitor to find slow plugins, database queries, and theme bottlenecks.
  5. Re-test after one change at a time.

Check your WooCommerce store's real speed score

1400+ stores audited
Run the Speed TestNo credit card needed

Start with hosting and PHP

Hosting is the foundation, and no plugin can rescue a store sitting on cheap, overloaded shared hosting. WooCommerce is blunt about it: general hosting plans are fine for blogs, but a store has heavy catalogs, a secure checkout, and traffic spikes that need more (WooCommerce).

The reason is that cart and checkout pages cannot be cached and served as static files, so every shopper hits live code at once.

That live code runs through PHP workers, the processes that build each page from your products, prices, and stock. WooCommerce suggests starting with five to ten dedicated workers, where a blog gets by on far fewer (WooCommerce).

Run a current PHP version too. At the time of writing WooCommerce asks for PHP 8.3 or newer and a 256 MB memory limit (WooCommerce), and old PHP is one of the quietest causes of a slow store.

WooCommerce names hosts at each tier as examples, from WordPress.com Commerce and Bluehost Cloud up to Pressable and WordPress VIP, rather than crowning a single best one. Managed WooCommerce hosts also bundle server-level caching and a staging copy, which makes the rest of this list safer and quicker to apply.

Turn on High-Performance Order Storage

HPOS is the one speed setting that exists only in WooCommerce, and on an older store it is often switched off. High-Performance Order Storage moves your orders out of the shared WordPress posts tables into four dedicated order tables.

That gives orders their own indexes and takes the load off tables the rest of your site is also reading and writing (WooCommerce), which helps cart, checkout, and the order screens in your admin.

On a store with thousands of orders the difference shows up most in the admin, where your team spends its time.

New stores have had it on by default since WooCommerce 8.2 in October 2023, but a store built before that, or migrated from elsewhere, often still runs the old way.

Turn it on under WooCommerce, then Settings, then Advanced, then Features. Leave compatibility mode on at first so you can switch back cleanly, and check that your order-related plugins declare HPOS support, because an incompatible one greys the option out until it is updated (WooCommerce).

WooCommerce Settings, Advanced, Features screen with High-performance order storage selected and the compatibility mode option below it
WooCommerce Settings, Advanced, Features screen with High-performance order storage selected and the compatibility mode option below it

Cache the right way

Caching is the biggest single win for most stores, but on WooCommerce you have to cache the right pages and leave the rest alone. A page cache turns your pages into static files so the server stops rebuilding them on every visit.

The rule that trips people up is that Cart, Checkout, and My Account must stay out of it, since they show content specific to one shopper, and WooCommerce's guidance is to keep that uncached (WooCommerce).

Cache them by accident and shoppers can see each other's carts, so most caching plugins ship a WooCommerce setting that leaves those pages alone for you.

After changing any cache settings, test as two separate shoppers in two incognito windows. Add different products in each, then confirm the cart, mini-cart, checkout, and account pages never share state.

Which WooCommerce pages to cache, with shop and product pages safe to full-page cache and cart, checkout, and account excluded
Which WooCommerce pages to cache, with shop and product pages safe to full-page cache and cart, checkout, and account excluded

For the pages a page cache cannot touch, an object cache like Redis steps in. It saves the answers to repeated database questions so your database does not work them out again on every cart, checkout, and logged-in view (WooCommerce).

It needs either a host that provides Redis or a plugin that connects to one, and the free Redis Object Cache plugin is the usual bridge when a host runs Redis but does not wire it up for you.

On the page-cache side the common choices are LiteSpeed Cache, which is free but needs LiteSpeed hosting for its full-page cache, the free W3 Total Cache and WP Super Cache, and the paid WP Rocket. Pick one, since two caching plugins fight each other.

One more WooCommerce quirk worth checking is cart fragments, a script that older themes load on every page to keep the mini-cart live. WooCommerce scoped it back in version 7.8, but a theme that still loads it everywhere is worth a look.

See where your WooCommerce store is losing speed and sales

1400+ stores audited
Run the WooCommerce AuditNo credit card needed

Optimize your images

Images are usually the heaviest thing on a product page, and WooCommerce can still serve images far larger than the slot they appear in. The first fix is to compress every image and serve it in a next-generation format. Plugins such as ShortPixel and Imagify compress your library and convert it to or AVIF, which load lighter than JPEG, and they also add so off-screen images wait until they are needed.

WordPress has accepted WebP uploads since version 5.8, but it does not convert your existing images for you, which is why the plugin does the bulk work.

Serve images at the size they display rather than shrinking a huge original in the browser, so a 2000 pixel file never loads into a 500 pixel product slot, since compression helps but the wrong display size still wastes bandwidth. Leave the main product image that loads first out of lazy loading, since delaying that one hurts your LCP. Our product image best practices cover the sizing and format details.

Clean the database

A WooCommerce database bloats quietly, and the worst offender runs on every single page load. That offender is autoloaded options, rows in the wp_options table that WordPress loads on every page whether the page needs them or not.

WooCommerce recommends keeping that table under about 500 rows (WooCommerce), and plugins you removed often leave their options behind, so clearing the leftovers is the first move.

Then sweep the usual buildup: expired transients, old post revisions, and spam, with a database cleaner like WP-Optimize or WP-Sweep. Turning on HPOS, from earlier, helps here too, since moving orders into their own tables takes weight off the shared post tables the rest of the store depends on.

Trim the front end

Once the back end is fast, the front end is about not blocking the page from drawing. Scripts and styles that load in the wrong order hold up rendering, so defer your non-, inline the small piece of critical CSS, and add async or defer to your scripts so they do not block the page (web.dev).

A content delivery network helps from there by serving your images and static files from a server near each visitor instead of one origin, which matters most when you sell beyond your own country.

The rest is housekeeping. Minify your CSS and JavaScript, run a lightweight theme built for WooCommerce, and cut the plugins you do not use, since WooCommerce loads its own scripts widely and every extra plugin adds more. The usual targets are scripts that load on every page but are only needed on product, cart, or checkout: sliders, review widgets, wishlist scripts, recommendation tools, chat widgets, and unused payment scripts. Query Monitor, again, tells you which ones are the heaviest.

Web fonts are worth a pass too, since loading several weights you never use adds to the wait, and turning on GZIP or Brotli compression shrinks what the server sends in the first place.

Prioritize and re-test

Work top to bottom and re-test after each change, so you know what actually moved the number. Tackle the levers in this order, since each one rests on the layer above it:

  1. Hosting, PHP, and HPOS, the foundation no plugin can paper over.
  2. Caching, a page cache for static pages and an object cache for the rest.
  3. Images, compressed and served as WebP or AVIF, with everything below the fold lazy-loaded.
  4. Database, cleared of autoloaded options and the clutter old plugins leave behind.
  5. Front end, with scripts deferred, a CDN added, and the plugins you do not use removed.

Change one layer, run the speed test again, and keep what helped. Some fixes, like hosting, you make once, while images and the database are worth a check every few months. Some take an afternoon, while hosting, caching, and plugin cleanup are safer rolled out in stages, and a theme update or new plugin can quietly undo them, so it is worth checking back. The fast way to see where your store stands across speed, SEO, trust, and checkout is to scan it against the lot at once with the full WooCommerce store audit, or work through it by hand with our WooCommerce audit walkthrough.

Frequently asked questions

How fast should a WooCommerce store be?

Aim for the Core Web Vitals thresholds Google uses: an LCP under 2.5 seconds, an INP under 200 milliseconds, and a CLS under 0.1, measured on real visitors. On the server side, WooCommerce treats a checkout time to first byte over 800 milliseconds as a sign your hosting needs an upgrade. Hitting those is more useful than chasing a perfect PageSpeed score.

Will a caching plugin fix a slow WooCommerce store?

It helps, but it is not a cure on its own. A page cache speeds up your shop and product pages, yet it cannot cache cart, checkout, or account pages, and it cannot fix weak hosting or a bloated database underneath. Treat caching as one layer on top of good hosting, HPOS, and a clean database, not a replacement for them.

Is it the hosting or the plugins making my store slow?

Often both, and the way to tell is to measure. A high checkout time to first byte points at hosting, while Query Monitor shows which plugin or theme is running slow database queries. Audit the plugins you actually need, since WooCommerce loads scripts broadly and every extra plugin adds weight, then judge the hosting on its response time.

Is it safe to turn on HPOS?

Yes, for most stores, as long as your order-related plugins support it, which WooCommerce checks for you by greying out the option if one does not. Enable it with compatibility mode on at first, which keeps the old and new tables in sync so you can switch back if anything looks off. New WooCommerce stores have run on it by default since version 8.2.

Why is my WooCommerce store slow with only a few products?

Catalog size is rarely the cause. A small store can still run on weak hosting, serve huge uncompressed images, carry a bloated wp_options table, or stack heavy plugins, and any one of those slows it down. Work through the levers above in order rather than assuming you need fewer products.

What is the fastest way to speed up WooCommerce checkout?

Start with hosting, PHP workers, object caching, HPOS, and plugin cleanup. Checkout cannot be fully page-cached, so weak hosting or a slow checkout plugin shows up there faster than on cached product pages.

JR
Founder of Ecomhint

Jakub is the founder of Ecomhint, an AI-powered ecommerce audit tool focused on UX and conversion optimization. He helps online stores identify friction points across product pages, cart, and checkout using CRO best practices and original research data.

Get CRO tips weekly

Get actionable conversion tips delivered to your inbox every week.

Ready to apply what you've learned?

Find conversion issues on your store with a detailed UX and performance review.

Audit My Store

No credit card needed

1,400+ stores audited

Ready to apply these tips?

A free audit checks your store against the same things this article covers and tells you which ones need attention first.

Free preview  •  No credit card  •  Nothing to install