Measure before you change anything
Speed work goes wrong when people install a caching plugin, see a better score on the home page and stop. A shop has several very different page types, and the slow one is often not the one you tested. Before changing anything, write down a baseline for five pages:
- the home page
- a busy category page with plenty of products
- a product page with a full gallery and variations
- the basket with two or three items in it
- the checkout
Use a free testing tool such as Google PageSpeed Insights and test the mobile result, because that is where most shoppers will feel the difference. Also click through the shop yourself on a phone over mobile data, logged out, in a private window. A tool score is a guide; the real question is whether pages appear quickly and whether adding to basket feels instant.
Then change one thing at a time and test again. If you change five things together and something breaks, you will not know which one caused it.
Images: usually the biggest win
Product photography is the heaviest thing on most shop pages. A camera or phone produces files far larger than any screen needs, and WooCommerce will happily serve them if you upload them as they are. Work through this list:
- Resize before uploading. Export product images at roughly the largest size your theme actually displays, not the full camera resolution.
- Compress. Use an image optimisation plugin or compress before upload. For product photos, a moderate compression level is rarely visible to shoppers.
- Use modern formats. WebP files are usually much smaller than JPEG at the same visual quality, and current browsers support them. Many optimisation plugins convert automatically and keep a fallback.
- Check thumbnail sizes. In the WooCommerce settings and your theme, make sure category grids use small thumbnails rather than scaled-down full images. After changing sizes, regenerate thumbnails.
- Keep lazy loading on. WordPress lazy loads images below the fold by default. Make sure a plugin or theme setting has not switched it off, and that the main product image at the top is not lazy loaded, since it should appear straight away.
Sliders on the home page deserve a special mention. A carousel of five large banners loads five large images for a message most visitors never scroll through. One strong image with a clear link to your best category is faster and often clearer. If you are reshooting products anyway, our guide to product photos that sell covers how to shoot them so they need less editing afterwards.
Plugins: audit what runs on every page
The number of plugins matters less than what each one does. One badly built plugin that loads scripts on every page or runs heavy database queries can slow a shop more than twenty small, tidy ones. Common culprits are social feeds, live chat widgets, pop-up builders, visitor tracking, related product engines and old plugins that duplicate something WooCommerce now does itself.
A simple plugin audit
- List every active plugin and write next to it what it does for the business. If you cannot answer, it is a candidate for removal.
- Remove plugins that duplicate each other, such as two SEO plugins or two caching plugins.
- On a staging copy, deactivate the remaining suspects one at a time and retest your five pages.
- For plugins you keep, check whether they offer a setting to load only where needed, for example a contact form script only on the contact page.
- Delete, not just deactivate, what you no longer use.
Our guide to which WooCommerce plugins a small shop actually needs helps decide what belongs on the list at all.
Caching for a shop, and what must never be cached
Caching stores a ready-made copy of a page so the server does not have to build it from scratch for every visitor. For a brochure site that is simple. For a shop it needs care, because some pages are personal to each shopper.
| Type of cache | What it does | Shop caution |
|---|---|---|
| Page cache | Serves stored copies of whole pages | Basket, checkout and My account must be excluded |
| Object cache | Keeps database query results in memory | Helps busy shops and the admin area; needs server support |
| Browser cache | Lets returning visitors reuse files | Safe for images, styles and scripts |
| CDN | Serves static files from servers closer to the visitor | Useful if many customers are far from your server |
Well known caching plugins detect WooCommerce and exclude the basket, checkout and account pages automatically, but check it. Add something to the basket, browse a cached category page and confirm the basket count is correct. Log in as a test customer and make sure nobody else's details could ever appear. If prices change by customer group or currency, confirm the cache respects that too.
Trim the front end and the database
Theme and page builder
A heavy theme loads styles and scripts for features you never use. If your theme bundles its own sliders, mega menus and animation libraries, each one adds weight to every page. With Elementor or any page builder, a few habits keep pages lean:
- Limit yourself to one or two font families and only the weights you use.
- Avoid deeply nested sections and containers just to create spacing.
- Turn off entrance animations; they delay content and add script.
- Use the builder's performance settings, such as loading assets only when a widget is on the page.
- Remove embedded videos from the home page or use a lightweight preview that loads the player on click.
Database housekeeping
Shops build up clutter over time: expired sessions, old transients, thousands of post revisions, logs from scheduled tasks and abandoned basket data. A slow admin area, especially the orders screen, is often a sign of this. Every few months, on a backup you have checked, clear expired transients and old revisions, look at the size of the scheduled actions log under WooCommerce status, and remove tables left behind by plugins you deleted. If your WooCommerce version offers high performance order storage and your plugins support it, it is worth enabling, as it keeps order data in dedicated tables rather than mixed in with posts.
Hosting: the floor under everything
Everything above makes pages lighter. Hosting decides how quickly the server can build a page that cannot be cached, which in a shop means the basket, the checkout, search results, filtered category pages and the admin. If those stay slow after you have cleaned up images and plugins, the server is usually the limit. Things to check with your host:
- a current, supported PHP version
- enough memory and processing power for WooCommerce, not a plan sized for a small blog
- server-level caching that understands WooCommerce
- whether an object cache is available
- how many other sites share the same resources
Our guide to what to look for in WooCommerce hosting goes through these in more detail. If you would rather not tune a server yourself, Retail Web Hosting's managed WooCommerce hosting includes SSL, regular backups and automatic WordPress, WooCommerce and plugin updates, with hosting faults fixed for you.
A sensible order of work
If you only have an afternoon, do it in this order: measure the five pages, fix the largest images, remove plugins you do not need, set up page caching with the shop pages excluded, then retest. Most shops see the clearest improvement from the first three steps alone. Leave database work and theme changes for a quieter day, always with a fresh backup, and keep your baseline notes so you can see what actually helped.
Frequently asked
Will a caching plugin alone make my WooCommerce shop fast?
It helps pages that can be cached, such as the home page and categories, but the basket, checkout and account pages must not be cached. Heavy images, slow plugins and underpowered hosting still need fixing separately.
Does the number of plugins slow WooCommerce down?
What each plugin does matters more than the count. One plugin that loads scripts everywhere or runs heavy queries can cost more than many small, well built ones, so audit by impact rather than by number.
Which pages should I test for speed?
Test the home page, a busy category page, a product page with variations, the basket and the checkout, on mobile and logged out. These behave differently and the slowest one is often not the home page.
Is Elementor too heavy for a shop?
It can be used on a fast shop if you keep layouts simple, limit fonts and animations, and use its option to load assets only where widgets appear. Problems usually come from overbuilt pages rather than the builder itself.
Read next
Open your shop this week.
Sign up in a minute. We set up your WooCommerce shop with you and run it from there.
Start my shop