Have a slow WooCommerce site?
A slow WooCommerce site is almost always related to your infrastructure: hosting, theme, plugins, CDN, and your cache plugin are all high impact. However, there are quite a few things you can do inside WooCommerce to speed it up even more: clearing customer sessions, transients, and optimizing WooCommerce scripts, styles, cart fragments, and product images.
Is my site WooCommerce? No. But I’ve worked on several WooCommerce sites since doing speed optimization sine 2015. I listed the most common solutions based on my experience as well as feedback from multiple Facebook Groups. Leave me a comment if you have questions.
How To Speed Up A Slow WooCommerce Store
- Remove WooCommerce Bloat
- Clear Customer Sessions And Expired Transients
- Optimize Product Images
- Go Easy On WooCommerce Extensions
- Use A Lightweight WooCommerce Theme
- Unload Unused Assets
- Hard Code When Possible
- Configure A Solid Cache Plugin
- Avoid Resource-Hungry Plugins
- Remove Junk From Your Database
- Block Bad Bots
- Disable Heartbeat
- Upgrade To PHP 7.4
- Optimize Google Fonts
- Use Cloudflare APO, BunnyCDN, or QUIC.cloud
- Check CPU Usage And Server Response Times
- Reduce TTFB With Faster Hosting
1. Remove WooCommerce Bloat
Disable WooCommerce Bloat removes WooCommerce bloatware and can speed up the frontend and admin panel. In the front end, you can disable WooCommerce scripts, styles, and cart fragments. In the admin, you can disable features to make your admin cleaner and faster. Perfmatters also has options to remove WooCommerce bloat, but this plugin does a better job.
Disable WooCommerce Scripts And Styles – WooCommerce loads 3 stylesheets throughout your site (woocommerce-layout.css,woocommerce-smallscreen.css, and woocommerce.css). Since you don’t need these loading on every page, disable them on non-eCommerce content.
Disable WooCommerce Junk In The Admin – remove WooCommerce admin junk: widgets, analytics, notifications, status meta box, marketplace suggestions, and extensions submenu.
Disable Cart Fragments – cart fragments update the cart total without refreshing the page but can also slow down your site. Check your GTmetrix or Pingdom Waterfall chart to see how long your cart fragment take to load. I don’t recommend disable cart fragments until you have done all other WooCommerce speed optimizations since it’s actually a useful feature for your users.
2. Clear Customer Sessions And Expired Transients
In your WooCommerce Status settings, clear customer sessions and expired transients.
As explained in this article, clearing customer sessions helps when the wp-options table grows too fast usually due to ineffective cron jobs or bots crawling your WooCommerce site and creating sessions on the fly. Clearing expired transients should be done once in awhile as well.
3. Optimize Product Images
There are quite a few ways to optimize product images:
- Properly size images – find huge images and resize them to correct dimensions.
- Compress images – losslessly compress images using a plugin like ShortPixel.
- Convert images to WebP – use a plugin to convert images to next-gen format.
- Serve images through a CDN – if using a CDN URL which most CDNs use besides Cloudflare (e.g. https://x7r6b9v3.rocketcdn.me), make sure your images are being served from it. You can do this using Perfmatter’s CDN Rewrite option.
- Disable hotlinking – prevent people from copying/pasting your images on their website (which consumes bandwidth). Do this using Cloudflare or WP Rocket.
- Use adaptive images – use a plugin to serve smaller product images to mobile devices. It’s one of the few things you can do to improve your site’s mobile speed.
- Lazy load images – lazy load images that appear below the fold (exclude above the fold images). Can be done using many speed plugins, otherwise try Optimole.
4. Go Easy On WooCommerce Extensions
Just like plugins, too many WooCommerce extensions also slow down your site.
5. Use A Lightweight WooCommerce Theme And Page Builder
Many themes are page builders are slow.
Elementor, Divi, and other page builders add extra CSS and JavaScript to your site which hurts multiple items in PageSpeed Insights. WP Jonny even offers page builder removal as part of his speed optimization service (he is currently hard coding my header, menu, footer, and sidebar) so I can completely remove Elementor and use Gutenberg blocks instead). There is a big trend in Facebook Groups of people removing their page builder and posting better GTmetrix scores.
Recommend Themes
- Astra
- Flatsome
- Oxyen Builder
- GeneratePress
- Kadence Theme
- Gutenberg Blocks
- StudioPress Themes
6. Unload Unused Assets
You’ve probably heard of Asset CleanUp and Perfmatters.
They let you selectively disable plugins and scripts from pages where they don’t need to load. I personally use Perfmatters because the UI/UX is much better, but either one should do the job.
Install one of these plugins then view the script manager. This requires testing (or a staging site) but you need to learn where your scripts are loaded. Once you learn this, you can disable them on current URLs, use regex to disable them based on URL patterns, or disable them everywhere but pages or posts. This will reduce JavaScript and CSS on your site (a PageSpeed Insights item).
Examples
- Disable slider plugin on pages that don’t use sliders.
- Disable rich snippets plugin on pages that don’t use rich snippets.
- Disable contact form plugin on pages that don’t have a contact form.
- Disable WooCommerce scripts and styles on non-eCommerce pages.
- Disable affiliate link management plugin on pages that don’t use aff links.
- Disable social sharing plugin on all pages (since it’s usually for blog posts).
- Disable unused functionality in your page builder (see this post for Elementor).
7. Hard Code When Possible
Headers, footers, menus, and blog sidebars should ideally be hard coded.
Try replacing plugins with manual code too where it makes sense. You shouldn’t need to rely on page builders for these areas since they add extra div wrappers and code bloat throughout your entire website and blog. At least consider hard coding things that appear site-wide. This was the first thing WP Johnny did when I hired him (I noticed a big improvement in PageSpeed Insights).
8. Configure A Solid Cache Plugin
There are 3 factors when it comes to cache plugins:
- If you’re using a cache plugin
- Which cache plugin you’re using
- Whether you’ve configured the optimal settings
For free, I recommend either Swift Performance or WP Fastest Cache. But if you’re willing to drop $49, WP Rocket was rated #1 in most Facebook polls. That’s because it comes with a ton of features most cache plugins don’t, in which case you would need about 6 additional plugins:
- Database cleanup (built-in to WP Rocket, or use WP-Optimize)
- Heartbeat control (built-in to WP Rocket, or use Heartbeat Control)
- Lazy load images/videos (built-in to WP Rocket, or use WP YouTube Lyte)
- Host Google Analytics locally (built-in to WP Rocket, or use CAOS For Analytics)
- Optimize Google Fonts (built-in to WP Rocket, or use CAOS For Fonts, or SHGF)
- Integration with Cloudflare + other CDNs (built-in to WP Rocket, or use CDN Enabler)
WP Rocket and LiteSpeed are usually #1 in recent Facebook polls.
Cache Plugin Tutorials:
- WP Rocket (recommended)
- Swift Performance
- WP Fastest Cache
- W3 Total Cache
- WP Super Cache
9. Avoid Resource-Hungry Plugins
These are the most common plugins that drain CPU, but there’s a full list of them.
High CPU plugins usually include social share, statistic, calendar, page builders, chat, and plugins that run ongoing scans/processes or appear multiple times in GTmetrix.
- AddThis
- AdSense Click Fraud Monitoring
- All-In-One Event Calendar
- Backup Buddy
- Beaver Builder
- Better WordPress Google XML Sitemaps
- Broken Link Checker
- Constant Contact for WordPress
- Contact Form 7
- Contextual Related Posts
- Digi Auto Links
- Disqus Comment System
- Divi Builder
- Elementor
- View Full List Of 73 Slow Plugins
You can also find slow loading plugins in your GTmetrix Waterfall chart. If they appear multiple times, take a long time to load, or generate multiples requests, you will know something’s up.
Or use Query Monitor (check the “queries by components” tab):
WP Hive is a handy Chrome Extension for seeing whether plugins in the WordPress repository will have an impact on memory usage, PSI scores, and other speed data. Install the extension, view a plugin in the WordPress repository, and view the data in the “WP Hive Insights” section.
10. Remove Junk From Your Database
Use WP Optimize to clean your database thoroughly.
Some caching and speed plugins like WP Rocket let you clean your database, however they don’t let you delete tables left behind by old, uninstalled plugins. If you deleted a plugin, it leaves behind data (e.g. pre-configured settings) in your database. So if you don’t plan on using that plugin again, use WP-Optimize to delete it’s tables. These will be marked as “not installed.”
11. Block Bad Bots
Are bad bots crawling your site and consuming CPU?
You would never know this without checking. Bad bots can constantly hit your site and consume CPU with no benefit. It’s pretty common with WordPress so here’s how to block them.
Step 1: Install Wordfence.
Step 2: View your live traffic report.
Step 3: Find spam bots in your live traffic report (if the same bot is constantly hitting your website and looks sketchy, Google it’s hostname to see if other people reported it as spam).
Step 4: Block the spam bots.
Wordfence itself can cause high CPU (but is good for seeing IF you have spam bots). I recommend blocking them using the Blackhole For Bad Bots plugin, or with Cloudflare firewall rules. Wordfence and Cloudflare have a log so you can see whether the bots are actually being blocked. If successful, you can uninstall Wordfence and use Cloudflare or the Blackhole plugin.
12. Disable Heartbeat
The WordPress heartbeat shows you real-time plugin notifications and when other users are editing a post. It generates a request every 15-60 seconds. To disable heartbeat, add this code to functions.php or use WP Rocket, Heartbeat Control, or most speed plugins have an option.
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}
13. Upgrade To PHP 7.4
WooCommerce sites should always be running a fast PHP version (i.e. PHP 7.4) which you can upgrade in your hosting account. Higher PHP versions make your site run much faster, even though most WordPress users run outdated PHP versions (since they don’t know how to do it).
You can upgrade to PHP 7.4 in your hosting account:
14. Optimize Google Fonts
View your GTmetrix Waterfall tab to see:
- How long your fonts take to load
- How many requests your fonts created
- Whether your fonts are served locally (or through fonts.gstatic.com)
There are quite a few ways to optimize fonts. First, limit the number of font families, weights, and icons loaded on your site. Host them locally using Transfonter or the OMGF plugin. Next, satisfy the “ensure text remains visible during Webfont load” item in PSI with WP Rocket or the Swap Google Fonts Display plugin. Finally, prefetch and try preloading fonts in WP Rocket or Perfmatters. Rerun your site through GTmetrix and hopefully the load times have improved.
15. Use Cloudflare APO, BunnyCDN, or QUIC.cloud
The two CDNs I recommend are Cloudflare + APO or BunnyCDN.
Cloudflare is usually fine for smaller sites on a budget, but it can actually slow down your WooCommerce site in some cases (you will need to test it). If using Cloudflare, it’s definitely worth $5/month to use the automatic platform optimization. Be sure to configure page rules, setup Firewall, enable hotlink protection, and use WP Cloudflare Super Page Cache if needed.
BunnyCDN is a more performant CDN. It’s recommended in multiple Facebook threads (including this one) above other CDNs. They have 50 data centers and you can choose your location(s) to only pay for certain locations. BunnyCDN uses pull zones and a CDN URL which you paste into WP Rocket or use the BunnyCDN plugin. Here are instructions for setting it up.
If you’re using LiteSpeed, you can also use their free QUIC.cloud CDN which is a solid choice.
16. Check CPU Usage And Server Response Times
CPU usage can be checked in your hosting account. CPU issues are mostly due to high CPU plugins or cheap shared hosting (including SiteGround who is infamous for having unfixable CPU issues / CPU limits). Many recommendations in this guide should help you reduce CPU.
Server response times and TTFBs can be checked using PageSpeed Insights, GTmetrix, or KeyCDN’s performance test and should be under 200ms. This is mostly controlled by hosting.
17. Reduce TTFB With Faster Hosting
Most hosting recommendations are garbage and I suggest joining the WP Speed Matters Facebook Group which is one of the only groups not controlled by affiliates or SiteGround’s community manager who “moderates” negative posts about their brand like in other groups.
Hosts I Don’t Recommend
- SiteGround has a slow TTFB, CPU limits, declined support, price increases, and other issues. Their TOS (sec. 9) prevents affiliates from using ‘SiteGround’ in bad reviews. I left them in 2019 and stopped endorsing them entirely. As one person said, “SiteGround is no longer any kind of value for the money.” Do your research.
- Hostinger writes fake reviews, votes for themselves in FB polls, also unethical. Employees pose as customers and trick people into buying Hostinger (view poll).
- GoDaddy can actually have a decent TTFB but comes with problems: paying for SSL, malware, slow DNS, and the dashboard gives you little control (see thread).
- WP Engine makes absurd claims like “the unequivocal performance leader in WordPress” when most people migrate away and post much faster load times.
- EIG brands like Bluehost and HostGator have overcrowded servers, slow TTFB, bad support/uptimes, and malware issues (view thread). Mainly promoted by “how to start a blog” affiliates and pay a lot to be “recommended” by WordPress.
Hosts I Do Recommend
Cloudways has excellent feedback in Facebook Groups if you read the threads. I use their Vultr HF plan and have a fast TTFB with nice GTmetrix results (feel free to click through my blog to see how fast it loads). They use Object Cache Pro (Redis), NVMe, and have 39 data centers worldwide. Main cons are no file manager and email hosting is $1/email/month. Cloudways is a little techier because they use a custom dashboard which requires launching a server, but most people find it easy once you get used to it. It’s monthly pricing with no high renewals, 3-day trials, and includes a free migration. If your TTFB is slow, try cloning your site on Vultr HF and test the results (you can also see screenshots of people’s migration results + Facebook polls below). They have high TrustPilot ratings and if for some reason you’re not happy, just cancel your 3-day trial.
NameHero uses LiteSpeed servers which are a newer/faster type of server (it’s cheap and voted highly in Facebook polls). You can find lots of positive feedback in Facebook Groups. I suggest NameHero over similar hosts (like A2) because they’re more reliable with better uptimes and US-based support. They also use cPanel which is beginner-friendly. NameHero has a 30-day refund policy and does free migrations, but I would only use them if your visitors are in the US or Netherlands since that’s where the data centers are. I generally recommend the Turbo Cloud plan which comes with 3GB RAM + NVMe. Large (WooCommerce) sites should use their managed cloud (or Cloudways).
WPX – also uses LiteSpeed (not sure why it’s buried on this page) with excellent support and TrustPilot ratings, but they only have 3 data centers in Chicago, London, and Sydney. Good choice if your visitors are near there, otherwise choose someone else. They also have great feedback in Facebook Groups and include a free migration as well as free site speed optimization where they optimize your site for core web vitals. Main con is price and the dashboard is kind of oversimplified and can be buggy.
Affiliate Disclaimer – I use aff links to the hosts I recommend, but not the ones I don’t.
Each have different setups. On Cloudways, I use FlyingPress + BunnyCDN (or use WP Rocket). On NameHero or WPX, you’ll use the LiteSpeed Cache plugin + QUIC.cloud CDN. They’re both great setups and should give you a fast TTFB – see my WP Rocket or LiteSpeed Cache tutorials.
When in doubt, check Facebook polls and migration results (view more).
Frequently Asked Questions
Why is my WooCommerce site slow?
WooCommerce are naturally slower because they add extra WooCommerce scripts, styles, and cart fragments. They also usually requires more plugins. This is partially why WooCommerce sites can have poor load times in PageSpeed Insights and GTmetrix.
Should I disable WooCommerce scripts and styles?
You can safely disable WooCommerce scripts and styles if your not using them on non-eCommerce pages.
Should I disable cart fragments?
It's not recommended you disable cart fragments unless you have done all other speed optimizations. Still, cart fragments can be helpful for your visitors which you should consider before disabling.
Why are my product pages slow?
Optimizing images is the most important part of making individual product pages load faster. This includes avoiding huge images and compressing, lazy loading, and serving them from a CDN. Trying using WebP.
How many plugins is too much for WooCommerce?
It's not the number of plugins that slow down your site, it's the quality. You can easily run over 30 lightweight plugins without them having hardly affect on your load time.
I hope this helped! Comment if you have questions.
Cheers,
Tom
It’s a WooCommerce e-commerce website that sells about 300 retail products. It takes a too long to load (~20 seconds).
What can I do to speed up? Cache plugins? Smaller image files? Better servers?
Please help me understand best practices and merits in this regard, and if possible, expected costs.
Thanks for your expertise!
Your TTFB is 3 seconds so yes, faster servers will help. I usually recommend Vultr High Frequency on Cloudways. You’ll want at least a 2GB server for $26/month since it’s a WooCommerce site, possibly more depending on your traffic, plugins, and resource consumption. Set that up with WP Rocket and I would think you’ll see a big improvement.
Next thing I would do is host fonts locally instead of fonts.gstatic.com. Then do a plugin audit and see if you can eliminate plugins, hard code things instead of using plugins, and find more lightweight plugins. Finally, use Asset CleanUp or Perfmatters to disable unused script/styles where they don’t need to load. Total cost would be $26/month (Vultr server), $49/year (WP Rocket). Here’s a promo code for Cloudways (OMM25) and you can get 10% off WP Rocket by signing up for their email list on their coupons page. Both would credit me an affiliate sale and is appreciated, but that’s what I would do. Asset CleanUp is free, Perfmatters is a premium plugin.
Due to cost issue i will upgrade hosting first to Vultr VPS
Thanks for reply!