Why Is WooCommerce So Slow? 10 Causes and How to Fix Them
WooCommerce too slow? The 10 most common causes – hosting, theme, plugins, images, database – plus why checkout gets slow and how to fix each one step by step.
Every extra second of load time costs sales. Shoppers won't wait – they'll go back to Google and buy from a competitor. On top of that, Google uses speed as a ranking factor, so a slow store loses twice: visitors and rankings.
In short: The usual suspects are cheap hosting, a heavy theme, too many plugins, unoptimised images and a bloated database. Start by measuring – don't guess.
Why is WooCommerce so slow in the first place?
WooCommerce itself isn't slow – but it's easy to make it slow. It runs on WordPress, where every page is built by PHP and the database on each request, and every plugin can hook into that process. A store adds a lot on top of a regular website:
- Dynamic pages – cart, checkout and My Account are personal to each customer and can't be served from page cache.
- Heavy database queries – products, variations, attributes and orders live in large tables; filters and search multiply the queries.
- Plugins on every request – shipping, payment, invoicing, marketing and SEO plugins all run, even on pages that don't need them.
- Autoloaded data – plugins store settings in
wp_optionsthat load on every page; on older stores this can grow to several megabytes.
The good news: almost all of this can be fixed without rebuilding the store. Here's how to find what's slowing yours down.
First: measure speed properly
Before changing anything, measure. Open PageSpeed Insights (pagespeed.web.dev) and test three pages: the home page, a category and a product. Look at Google's three Core Web Vitals:
Target values (Core Web Vitals)
Test the mobile version too – it matters more. Google indexes sites primarily through their mobile version, and most online shoppers buy on their phones.
The 10 most common causes of a slow WooCommerce store
1. Cheap shared hosting
WooCommerce is not a simple blog. The cart, checkout and filters make many database queries. On an overcrowded shared server, it simply can't keep up. Fix: hosting with PHP 8.2+, enough RAM, server-side caching (LiteSpeed, Redis or Memcached) and a server close to your customers.
2. A heavy all-in-one theme
Multipurpose themes load sliders, animations and dozens of modules on every page – even when you don't use them. Fix: a lightweight or custom theme that only loads what each page actually needs.
3. Too many plugins
It's about quality, not quantity. One badly written plugin can add a second to every page. Fix: remove unused plugins, replace heavy ones and check which plugins load scripts everywhere instead of only where needed.
4. Unoptimised images
A 4 MB product photo displayed as a 300-pixel thumbnail is a classic. Fix: WebP or AVIF, correct sizes (srcset) and lazy loading for images below the fold. This alone often cuts 70–80% of page weight.
5. No caching
Without caching, the server rebuilds every page on every visit. Fix: page caching (excluding cart, checkout and account) plus object caching (Redis) for the database.
6. A bloated database
Over time the database fills up with expired transients, old revisions, sessions and plugin logs. Fix: regular cleanup, table optimisation and enabling HPOS (High-Performance Order Storage) – WooCommerce's newer order storage.
7. Render-blocking JavaScript and CSS
If the browser has to download 15 files before showing anything, the page feels frozen. Fix: defer scripts, inline critical CSS and remove unused code.
8. Third-party scripts
Chat widgets, pixels, tracking codes, embedded videos and maps all pull code from other servers. Fix: keep only what you need and load it after interaction or once the page is ready.
9. Externally hosted fonts
Google Fonts and similar services add requests and often cause text to jump. Fix: self-host fonts as WOFF2, load only the weights and character sets you need and use font-display: swap.
10. Heavy AJAX requests
Mini-cart updates (cart fragments) and live filters can load the server on every page. Fix: limit cart fragments to pages that need them and use optimised filters with indexed data.
Why WooCommerce checkout is slow
Checkout is where speed costs the most – the customer has already decided to buy. It's also a page that can't be cached, so problems show up here first. The usual causes:
- Live shipping calculations – courier plugins (e.g. Econt or Speedy) that call an external API on every address change. Fix: cache office lists and rates, and only recalculate when something relevant changes.
- Constant order-review refreshes – every field change triggers an AJAX request (
update_order_review) that recalculates totals. The more plugins hook into it, the slower each refresh gets. - Payment gateway scripts – several gateways loading their scripts at once, plus fraud-check and tracking scripts.
- Checkout field and upsell plugins – each one adds queries and scripts to the heaviest page in the store.
- Slow hosting, no object cache – without page cache, server response time (TTFB) is everything here. Redis object caching helps a lot.
How to find the culprit: temporarily install the free Query Monitor plugin, open checkout and look at slow queries, external HTTP calls and which plugin they come from. A slow checkout directly drives abandoned carts.
Where to start
If you can only do three things, start with these – they give the biggest impact for the least time:
- Images – WebP + correct sizes.
- Caching – page and object cache.
- Plugin audit – remove everything that doesn't make you money.
💡 From practice: The Wood Wonders Workshop store loads in 0.8 seconds not because of a magic plugin, but because it was built lightweight from day one – no heavy theme, no unnecessary extensions. Speed is designed in, not bolted on at the end.
Frequently asked questions
Want to know exactly what's slowing your store down? Get in touch – I'll audit it and tell you which changes will make the biggest difference. More about the service: SEO & Core Web Vitals.
Need an online store?
Describe your project and get a detailed quote within 24 hours.
Request a quote