Key Takeaways
- 30 specific, actionable speed fixes organised into 3 tiers: Quick Wins (under 30 minutes each), Medium Effort (1–4 hours), and Advanced (require developer skills or hosting changes)
- Quick Wins alone can reduce page load time by 30–50% — start here before investing in complex optimisation
- Each fix links to a detailed guide so you can understand the “why” behind every recommendation
- Prioritise fixes by impact: image optimisation, cart fragment management, and plugin cleanup deliver the biggest improvements for the least effort
- Use this checklist alongside our general WordPress speed checklist — WooCommerce stores need both general and ecommerce-specific optimisations
How to use this WooCommerce speed checklist
This checklist contains 30 specific speed fixes for WooCommerce stores, organised by effort level. Start with the Quick Wins — they take under 30 minutes each and collectively reduce page load time by 30–50%. Move to Medium Effort fixes when you’ve completed the quick wins. Advanced fixes require developer skills or hosting-level changes but deliver the final 20–30% of performance improvement.
Every fix links to the relevant detailed guide in our WooCommerce speed optimisation series so you can understand the reasoning and implementation details. Don’t just follow the checklist blindly — understanding why each fix works helps you make better decisions for your specific store.
Measure your baseline speed before starting (use Google PageSpeed Insights with your homepage, a product page, and a category page), then re-measure after completing each tier to track improvements.
Quick Wins (under 30 minutes each)
1. Disable cart fragments on non-shop pages
WooCommerce’s cart fragments AJAX runs on every page, adding 300–800ms even on cached pages. Disable it on non-WooCommerce pages with a simple functions.php snippet. This is the single highest-impact quick fix for most stores. Full guide →
2. Restrict payment gateway scripts to checkout
Stripe, PayPal, and Square load 200–500KB of JavaScript on every page by default. Dequeue their scripts on all non-checkout pages. Saves 200–500ms of load time across your entire site. Full guide →
3. Remove the main product image lazy loading
WordPress lazy-loads all images by default, but your main product image is your LCP element. Remove loading="lazy" and add fetchpriority="high" to the main product image. Improves LCP by 200–500ms. Full guide →
4. Update to the latest PHP version
PHP 8.2/8.3 is 15–25% faster than PHP 7.4 for WordPress workloads. Check your current version in WooCommerce → Status → System Status. Update via your hosting control panel — most managed hosts make this a one-click change. Full guide →
5. Enable page caching
If you don’t have page caching enabled, you’re generating every page from PHP on every visit. Install WP Super Cache, W3 Total Cache, or use your host’s built-in caching. This alone can reduce load time from 2–4 seconds to 200–400ms on cacheable pages. Full guide →
6. Remove unused checkout fields
Remove the company name field and order notes if you don’t need them. Each unnecessary field adds render time, validation JavaScript, and cognitive load for customers. Fewer fields = faster checkout and higher conversion. Full guide →
7. Limit related products to 3
WooCommerce defaults to 4 related products with random ordering. Reduce to 3 with deterministic ordering (by date instead of random). This reduces database queries and eliminates the expensive ORDER BY RAND() MySQL operation. Full guide →
8. Add autocomplete attributes to checkout fields
Proper autocomplete attributes let browsers auto-fill addresses, reducing customer interaction time from 45–60 seconds to 5–10 seconds. No performance cost — pure UX improvement. Full guide →
9. Disable Gravatar on reviews
Each product review triggers an HTTP request to gravatar.com. With 20 reviews, that’s 20 external requests with DNS and TLS overhead. Remove Gravatar images or replace with CSS-generated initials. Full guide →
10. Set browser caching headers for static assets
CSS, JavaScript, fonts, and images should be cached for 1 year with immutable headers. This means returning visitors load zero static assets from your server. Add caching headers via .htaccess or your hosting control panel. Full guide →
Medium Effort (1–4 hours each)
11. Convert images to WebP format
WebP delivers 25–35% smaller files than JPEG at equivalent quality. Use ShortPixel, Imagify, or CDN-based conversion (Cloudflare Polish). Run the bulk converter on existing images and set up automatic conversion for future uploads. Full guide →
12. Audit and remove unnecessary plugins
List all active plugins and check each one’s database queries, JavaScript size, and PHP execution time using Query Monitor. Remove plugins you’re not using, replace heavyweight plugins with lightweight alternatives, and consolidate overlapping functionality. Full guide →
13. Implement conditional plugin loading
Use Asset CleanUp Pro, Perfmatters, or manual wp_dequeue_script() to only load plugin assets on pages where they’re needed. Contact Form 7 on checkout, sharing plugins on blog posts only, analytics on all pages but with deferred loading. Full guide →
14. Set AJAX variation threshold
Products with 50+ variations embed 200–400KB of inline JSON. Set the woocommerce_ajax_variation_threshold to 10 so variations load via AJAX on demand instead of all at once. Dramatically reduces product page HTML size. Full guide →
15. Optimise product image dimensions
Audit your registered image sizes and remove sizes your theme doesn’t use. Set single product image to 800×800 max, thumbnails to 400×400. Regenerate thumbnails after changing sizes. Full guide →
16. Enable Redis object caching
If your hosting supports Redis, install the Redis Object Cache plugin and enable it. Reduces database queries by 40–60% on uncached pages (checkout, cart, my-account). The single biggest server-side speed improvement. Full guide →
17. Debounce search and filter AJAX
Add a 300ms debounce to live search inputs and product filter selections to prevent cascading AJAX requests. Reduces server load during high-traffic periods and improves perceived responsiveness. Full guide →
18. Reserve space for dynamic elements (fix CLS)
Set explicit dimensions on product image containers, price elements, review star ratings, and express checkout button containers. Use CSS min-height or aspect-ratio to prevent layout shifts during loading. Full guide →
19. Preload the LCP image on product pages
Add a <link rel="preload"> in the <head> for the main product image. This tells the browser to start downloading the LCP image immediately, before encountering the <img> tag in the body. Improves LCP by 100–300ms. Full guide →
20. Configure a CDN for image delivery
Set up Cloudflare (free tier) or BunnyCDN for image delivery. Configure long cache headers for product images. For international stores, a CDN can reduce image latency from 200–500ms to 20–50ms per request. Full guide →
Advanced (developer skills or hosting changes required)
21. Replace cart fragments with lightweight cart count
Instead of loading full cart HTML via fragments, create a custom AJAX endpoint that returns only the cart item count. Update the header cart badge with this count instead of replacing the entire mini-cart DOM. Reduces fragment response size by 90%. Full guide →
22. Tune MySQL/MariaDB for WooCommerce
Set innodb_buffer_pool_size to 50–70% of available RAM. Increase innodb_log_file_size to 256MB. Add custom indexes on frequently queried postmeta keys (price, stock status). Full guide →
23. Optimise OPcache configuration
Set opcache.memory_consumption=256, opcache.max_accelerated_files=20000, and opcache.revalidate_freq=60. Ensures compiled PHP bytecode is cached and served from memory instead of recompiled on each request. Full guide →
24. Implement edge-side includes for checkout
If your stack supports Varnish or Cloudflare Workers, use ESI to cache static parts of the checkout page (header, footer, CSS) while dynamically rendering only the checkout form. Reduces checkout TTFB by 50–70%. Full guide →
25. Cache shipping rate calculations
WooCommerce recalculates shipping on every checkout load. Cache shipping calculations for 5–10 minutes using transients to reduce redundant API calls to shipping providers and database queries for zone matching. Full guide →
26. Build REST API endpoints for custom AJAX
Replace admin-ajax.php handlers with WP REST API endpoints for custom functionality (wishlists, comparisons, store locators). The REST API is 100–200ms faster per request because it skips admin context loading. Full guide →
27. Add product lookup table indexes
Ensure WooCommerce’s wp_wc_product_meta_lookup table is populated and properly indexed. Add custom indexes on wp_postmeta for frequently queried meta keys. Rebuild the lookup table from WooCommerce → Status → Tools. Full guide →
28. Implement on-demand side cart rendering
Instead of pre-rendering the side cart on every page load, fetch and render cart contents only when the customer clicks the cart icon. Eliminates the DOM and JavaScript overhead on page load while preserving the side cart UX. Full guide →
29. Set up autoscaling for traffic spikes
Configure autoscaling PHP workers for sales events and promotions. Pre-scale before planned events and set up automatic scaling for unexpected traffic. Prevents checkout queueing that costs sales during peak demand. Full guide →
30. Implement Real User Monitoring
Deploy the web-vitals JavaScript library to capture Core Web Vitals from real customer sessions. Segment data by page type (product, category, checkout) and device type (mobile, desktop). Use this data to prioritise ongoing optimisation work. Full guide →
Measuring your progress
Track these benchmarks as you work through the checklist:
- After Quick Wins (items 1–10): Expect 30–50% reduction in page load time. Product pages should load in under 3 seconds. Category pages under 2.5 seconds. Non-shop pages under 1.5 seconds.
- After Medium Effort (items 11–20): Expect another 20–30% improvement. Product pages under 2 seconds. Category pages under 1.5 seconds. Checkout TTFB under 500ms.
- After Advanced (items 21–30): Target sub-2-second product pages, sub-1.5-second category pages, sub-400ms checkout TTFB. Core Web Vitals passing on all page types.
Re-test after each tier with the same tools (PageSpeed Insights, Chrome DevTools, WebPageTest) and the same pages. Document your before/after metrics — this data proves the value of the optimisation work and identifies areas that need further attention.
For stores that need professional help implementing these fixes, our team handles all 30 items as part of our WooCommerce speed optimisation service. We guarantee measurable improvements backed by before/after data.
How long does it take to optimise a WooCommerce store?
Quick Wins (items 1–10) can be completed in 2–4 hours by someone comfortable editing functions.php. Medium Effort items (11–20) take 1–2 days. Advanced items (21–30) typically require 2–5 days of developer time. Most stores see 80% of the improvement from the first two tiers, so full Advanced-level optimisation is only necessary for high-traffic stores or those with specific Core Web Vitals failures.
What is the most important WooCommerce speed fix?
Disabling cart fragments on non-shop pages (item 1) is the single highest-impact fix for most stores. It saves 300–800ms on every non-shop page load with a 2-line code snippet. The second most impactful fix is restricting payment gateway scripts to checkout (item 2), which saves 200–500KB of JavaScript site-wide. Together, these two quick wins typically improve non-shop page speed by 40–60%.
Should I hire a developer for WooCommerce speed optimisation?
Quick Wins (items 1–10) are manageable for store owners comfortable with WordPress. Medium Effort items (11–20) benefit from developer involvement for conditional loading configuration and image pipeline setup. Advanced items (21–30) require developer skills — database tuning, custom REST API endpoints, and server configuration aren’t DIY territory. If your store generates over £5,000/month, the revenue from faster checkout typically pays for professional optimisation within the first month.
Will these fixes break my WooCommerce store?
When implemented correctly, no. Always test on a staging site first, especially for items that modify functions.php or plugin loading. The riskiest items are conditional plugin loading (item 13) — dequeuing a script that’s actually needed on a page will break functionality — and database changes (items 22, 27). Keep backups before making changes and test the full customer journey (browse → add to cart → checkout → payment) after each change.
How do I know which WooCommerce speed fixes to prioritise?
Start with Quick Wins (items 1–10) — they’re ordered by typical impact. Then check Google Search Console’s Core Web Vitals report to identify which metrics are failing on which page types. If LCP is failing on product pages, prioritise image fixes (items 3, 11, 15, 19, 20). If INP is failing across the site, focus on JavaScript reduction (items 2, 12, 13, 14). If TTFB is high, address server-side issues (items 4, 5, 16, 22, 23).
Want all 30 fixes done for you?
Get your free WooCommerce speed audit
We’ll run through this entire checklist on your store, identify every issue, and implement the fixes — with measurable before/after results guaranteed.