WordPress

Why Is WooCommerce Slow? A Speed Optimization Guide for Core Web Vitals

Why WooCommerce gets slow and how to fix it step by step: hosting, caching, images, scripts and database, to pass Core Web Vitals (LCP, INP, CLS).

On this page 7 sections
  1. Step one: measure what “slow” actually means
  2. Why WooCommerce gets slow: the usual causes
  3. A WooCommerce speed optimization plan, in the right order
  4. Speed fixes that can break your store
  5. Does speed really affect sales?
  6. When to get help
  7. FAQ

A WooCommerce store usually gets slow for the same few reasons. Cart, checkout and account pages can’t be fully cached, so a weak server shows on every request. Product images are heavier than they need to be. Themes and plugins load scripts on every page. And the database fills up with orders, sessions and background jobs. The fix is to work through these in order: measure first, then hosting and caching, then images, then scripts, then the database. Your goal is to pass Google’s Core Web Vitals on real visitors’ phones, not just to get a high score in a lab test.

This guide explains what “slow” means to Google, the causes specific to WooCommerce, a fix-it plan in the right order, and the mistakes that can break checkout while you speed things up.

Step one: measure what “slow” actually means

Google measures page experience with three Core Web Vitals. A page passes when at least 75% of real visits meet the “good” threshold:

Metric What it measures Good Poor
LCP (Largest Contentful Paint) How fast the main content appears, often the hero banner or the main product image ≤ 2.5 s > 4 s
INP (Interaction to Next Paint) How quickly the page responds to taps and clicks, such as choosing a variation or opening a menu ≤ 200 ms > 500 ms
CLS (Cumulative Layout Shift) How much the layout jumps while loading ≤ 0.1 > 0.25

INP replaced First Input Delay as a Core Web Vital in March 2024, so older speed guides that mention only FID are out of date.

There are two kinds of data. Learn to tell them apart:

  • Field data comes from real Chrome users over the past 28 days. You’ll find it in Google Search Console’s Core Web Vitals report and at the top of PageSpeed Insights, when your site has enough traffic. This is what Google uses.
  • Lab data comes from a single simulated visit. It’s useful for finding causes and checking a fix right away, but scores vary from run to run.

Don’t test only your homepage. A store has several page types, and each one is slow for its own reasons. Test at least the homepage, a category page, a product page, the cart and the checkout, on a phone profile. The free FlashMax speed test runs Google Lighthouse for a phone on slow 4G and for a desktop in about a minute. It shows each metric next to Google’s target and lists the biggest problems in plain words. Save the reports: they are your baseline.

Why WooCommerce gets slow: the usual causes

1. Pages that can’t be served from cache

Page caching is the biggest single speed boost for WordPress. But the cart, checkout and My Account pages are personal, so they must never be cached. Many caching setups also skip the cache for shoppers who already have something in the cart. On those requests, your server builds the page from scratch with PHP and database queries. Here, hosting quality matters most: a current PHP version, enough PHP workers for traffic peaks, and a persistent object cache such as Redis or Memcached so repeated database lookups are kept in memory.

2. Heavy product and banner images

On category and product pages, the LCP element is usually an image: the hero banner, the first product card or the main product photo. Common problems are uploading 4000-pixel camera originals, serving JPEG or PNG where WebP or AVIF would be far smaller, and lazy-loading the main image so the browser finds it late. WordPress 6.3 and later add fetchpriority="high" to the image it thinks is the LCP image, but themes and sliders sometimes override this.

3. Cart fragments and other AJAX calls

Classic mini-carts keep their item count up to date with the “cart fragments” script, which sends an uncached request to the server. Since WooCommerce 7.8, this script is no longer loaded on every page by default, but many themes with a header mini-cart still load it. That’s often fine. Just know that it adds an extra request to every page view, and watch its response time in your browser’s Network tab.

4. Too many scripts, especially third-party ones

Every plugin can add its own CSS and JavaScript, often on every page, even where it does nothing. On top of that come third-party scripts: chat widgets, review carousels, tracking pixels, heatmaps, A/B testing tools. Heavy JavaScript is the main reason for poor INP: while the browser is busy running scripts, it can’t respond to the shopper’s tap on “Add to cart”.

5. Big catalogs, filters and variations

Attribute filters and price sliders run complex database queries, and large catalogs make them slower. Variable products have a built-in safeguard: when a product has more than 30 variations, WooCommerce loads variation data on demand instead of embedding all of it in the page (the woocommerce_ajax_variation_threshold filter). Raising that limit makes the product page HTML heavier, so change it only for a good reason.

6. A growing database and background jobs

Older stores keep orders in the generic WordPress posts tables. High-Performance Order Storage (HPOS) moves them into dedicated tables. It has been the default for new stores since WooCommerce 8.2, and existing stores can switch under WooCommerce → Settings → Advanced → Features once their plugins are compatible. Also check Tools → Scheduled Actions: thousands of pending or failed actions point to a plugin that keeps creating jobs it never finishes. Expired transients, large autoloaded options and old revisions add more load.

7. Layout shifts

CLS problems in stores usually come from images without width and height, promo bars or cookie notices pushed in at the top of the page, web fonts swapping late, and sections loaded after the page renders (reviews, “you may also like”) with no space reserved for them.

8. A theme that loads everything everywhere

Some themes and page builders load all their features on every page and produce deeply nested HTML. Theme choice sets a ceiling on how fast a store can be. Our guide on how to choose a fast WooCommerce theme covers what to check. XStore, for example, uses selective asset loading: each page loads only the CSS and JavaScript it needs. It also has built-in image compression, WebP support and lazy loading.

A WooCommerce speed optimization plan, in the right order

The order matters. Each step makes the next one easier to measure. Make changes on a staging copy where you can, and test checkout after every step.

  1. Record a baseline. Test your five page types on a phone profile and save the reports. Note LCP, INP or Total Blocking Time (the lab stand-in for responsiveness), and CLS.
  2. Fix the server side. Use a PHP version that WooCommerce currently supports, get enough server resources for your traffic, and turn on a persistent object cache. If the HTML of an uncached product page takes well over a second to arrive, no front-end tweak will fix that.
  3. Set up page caching correctly. Use one caching solution, not two. Make sure cart, checkout and My Account are excluded (good WooCommerce-aware cache plugins do this automatically). Serve images, CSS and JavaScript from a CDN.
  4. Optimize images. Resize to the largest size your theme actually shows, convert to WebP or AVIF, keep the main product and hero images out of lazy loading, and give every image width and height attributes.
  5. Trim CSS and JavaScript. Minify files, remove unused CSS, defer non-critical scripts and delay third-party widgets until the visitor interacts. Exclude payment gateway scripts from deferral on cart and checkout.
  6. Audit plugins. Remove anything unused, and replace several overlapping plugins with one where you can. Five separate upsell, pop-up and coupon plugins usually cost more speed than one tool that does all of it.
  7. Clean the database. Move to HPOS if you haven’t, clear failed scheduled actions, remove expired transients and limit post revisions.
  8. Re-test, then wait for field data. Lab results improve right away. Search Console’s field data updates over the next 28 days.

Speed fixes that can break your store

  • Caching cart or checkout. Shoppers see each other’s carts, or totals that don’t update.
  • Delaying payment scripts. Card fields, express wallets or address autocomplete stop working, and you lose orders without noticing.
  • Lazy-loading the main product image. The page looks fine, but LCP gets worse.
  • Running two caching or optimization plugins. They fight over the same files and cause problems that are hard to trace.
  • Judging by one test run. Lab scores move a few points between runs. Compare several runs, and trust field data most.
  • Chasing a perfect 100. A store that passes Core Web Vitals with a score in the 90s is in good shape. Removing features shoppers rely on just to gain the last points is a bad trade.

Does speed really affect sales?

Speed is not the only factor, but the evidence that it matters is solid. In Deloitte’s 2020 study for Google, Milliseconds Make Millions, a 0.1-second improvement in mobile site speed went with an 8.4% increase in conversions for retail sites. For Google Search, page experience is one of many signals: a faster store won’t outrank a much more relevant page. But slow pages lose visitors before they ever see your products. That is why mobile performance is a big part of our guide to mobile optimization for WordPress stores, and why speed is high on our list of reasons an online store isn’t converting.

When to get help

If you’ve done the steps above and your product pages still miss the targets, the cause is usually deeper: a plugin making slow queries, an underpowered hosting plan, or a theme you can’t slim down further. Start with a free test at FlashMax, which explains what to fix first and can make lighter copies of the heavy images it finds. If you’d rather not do the work yourself, the FlashMax team offers a done-for-you speed fix starting at $399. All work is done on a copy of your site first, with a full backup, and you get a before/after Lighthouse report.

FAQ

Why is my WooCommerce site so slow?

The most common causes are underpowered hosting with no object cache, pages that can’t be cached (cart, checkout, logged-in shoppers), oversized images, too many plugin and third-party scripts, and a database full of old sessions, transients and scheduled actions.

What is a good PageSpeed score for a WooCommerce store?

The score is a lab summary. What matters more is passing Core Web Vitals in field data: LCP up to 2.5 s, INP up to 200 ms and CLS up to 0.1 for at least 75% of visits. A mobile lab score of 90 or higher is a good sign. Many stores pass Core Web Vitals with lower scores, and some with high scores don’t.

Does the theme affect WooCommerce speed?

Yes, a lot. The theme decides how much CSS and JavaScript loads on each page, how images are served and how complex the HTML is. A lightweight, well-built theme makes every other optimization easier.

How do I test my WooCommerce store speed for free?

Use PageSpeed Insights for Google’s field and lab data, Search Console’s Core Web Vitals report for your whole site, and the FlashMax free test for a phone and desktop Lighthouse run with fixes explained in plain words.

Should I cache the cart and checkout pages?

No. They are different for every shopper. Exclude cart, checkout and My Account from page caching, and speed them up with better hosting, an object cache and fewer scripts instead.

Will a faster store rank higher on Google?

Page experience is one of many ranking signals, so speed alone won’t move a weak page to the top. It does help: faster pages keep more visitors, and that helps both SEO and sales.

Share

Written by

Ayan Rahman

Ayan writes practical WordPress and WooCommerce guides for the 8theme blog.

All 3 articles by Ayan Rahman