Why Your WooCommerce Store Is Slow — and the 5 Plugins Causing 80% of It
WooCommerce is not inherently slow. It is, however, used by an ecosystem that builds plugins as if performance is something other people worry about. The result is what you're seeing in your Lighthouse score.
I've optimized 80+ WooCommerce stores over nine years. The diagnosis is almost always the same. This post is the playbook — the plugins, the server mistakes, and the order of operations that actually moves your LCP from 6 seconds to under 2.5.
The five plugins causing most WooCommerce slowdowns
1. WooCommerce Subscriptions (when misconfigured)
Subscriptions is a great product, but it loads cart fragments via AJAX on every page load by default. On a homepage with no cart functionality, that's a 200–400ms request that does nothing. Fix: dequeue the cart fragments script on pages where it's not needed.
// In functions.php
add_action('wp_enqueue_scripts', function() {
if (!is_cart() && !is_checkout() && !is_account_page()) {
wp_dequeue_script('wc-cart-fragments');
}
}, 11);
2. Page builders (Elementor, Divi, WPBakery)
Page builders load their entire framework site-wide. Even on pages you didn't build with them. The framework alone adds 200–500KB to your bundle and 300–800ms to render.
Fix: For builds where speed matters, replace page builder pages with a custom theme or block theme. For builds where you're committed to the builder, use a plugin like "Asset CleanUp" to dequeue builder assets on pages that don't need them.
3. WPML / Polylang (for multi-language)
Both load translation tables on every request. On stores with 5+ languages and 1000+ translatable strings, that's 100–300ms before WordPress can render anything. Fix: aggressive object caching (Redis), and consider whether you actually need 5 languages live or could ship just two.
4. Real-time tracking + analytics plugins
MonsterInsights, ExactMetrics, MetricsTracker, every "connect WooCommerce to GA4" plugin — they all add real-time hooks to order events that block the cart. Use Google Tag Manager + Server-Side Tag Manager instead. Almost always a 200–500ms saving.
5. Backup plugins that run during business hours
UpdraftPlus and BackupBuddy default to running backup processes that can spike CPU during traffic peaks. Schedule backups for 3 AM in your store's timezone, not "continuous."
The two server-side mistakes
1. Cheap shared hosting
If you're paying less than $30/month for WooCommerce hosting, your store is shared with 200 other sites. There is no amount of plugin optimization that fixes this. The fix is to move to managed WooCommerce hosting — Kinsta, WP Engine, SiteGround Cloud, Rocket.net, or a properly-configured DigitalOcean droplet. Budget $50–$200/month for hosting that doesn't bottleneck you.
2. No object cache
WooCommerce queries the database aggressively. Redis or Memcached object caching keeps frequently-accessed data in memory and cuts database load by 60–80%. Most managed WooCommerce hosts include it. If yours doesn't, install it.
The fix that always works — the order of operations
- Move to managed WooCommerce hosting. Single biggest lever. Skip this step and the rest barely matters.
- Install Redis object cache. Free, 10-minute install, 30–50% TTFB improvement instantly.
- Install a real caching plugin. WP Rocket ($59/year) or LiteSpeed Cache (free if you're on LiteSpeed servers). Page caching, browser caching, GZip compression.
- Audit plugin count. Healthy WooCommerce stores run 15–25 plugins. If yours is over 40, half are doing work for the other half. Deactivate, test, decide.
- Optimize images. Install ShortPixel or Imagify. Set up automatic WebP conversion. Resize uploads to a max width of 2000px on upload.
- Lazy load below-the-fold content. Native browser lazy loading works in modern browsers. Add
loading="lazy"to images below the fold. - Defer non-critical JavaScript. Use the "Delay JavaScript Execution" feature in WP Rocket or equivalent.
- Audit your theme. If you're on a heavy multipurpose theme (Avada, Flatsome with everything enabled), consider migrating to a leaner option. This is the biggest lift but often the biggest win.
The numbers you should target
- TTFB — under 600ms (under 400ms is excellent)
- LCP — under 2.5s on mobile
- CLS — under 0.1
- INP — under 200ms
- Total page weight — under 2MB for a typical PDP
- Total HTTP requests — under 80
If you hit all of these, your Lighthouse mobile score will be 85+ and your conversion rate will measurably improve. I've watched it happen 80+ times in a row.
The honest summary
WooCommerce stores are slow because the ecosystem is permissive — anyone can ship a plugin that destroys your performance. The fix isn't WordPress's fault. It's the operator's responsibility to choose hosting that scales, plugins that respect performance, and a theme that doesn't load everything for everyone. Do those three things and your store will be in the top 10% of WooCommerce performance.
If you'd rather not do this yourself
This is the work I do for clients. If you want it done properly, the relevant offer is WooCommerce Development.
Read about WooCommerce Development →
Adnan K.
Senior Shopify & WooCommerce engineer. Top Rated Plus on Upwork. 307 projects shipped, 100% Job Success.