Skip to content

Problem

WooCommerce site slow: how to fix it

WooCommerce runs on your own server, so slowness has two halves and they need different tools. The first half is how long the server takes to produce the page, which is a hosting, database and caching question. The second is how long the browser takes to display it, which is images, scripts and layout. Measure the split first, because most stores spend weeks optimising the front end when the server was the problem.

By CartKernel · Last reviewed 2026-09-07

Does this look familiar?

  • The page sits blank for a second or more before anything appears, on every page
  • The store is fast when logged out and noticeably slower when logged in
  • Category pages with filters take far longer than product pages
  • The site slows down during promotions and recovers when traffic falls
  • The admin area is slow to load orders and products even on a fast connection
  • Speed reports show a long initial server response rather than heavy rendering

Causes, ranked

Why it happens, most common first

Check them in this order. The first two account for most cases we open.

  • most common

    Requests are not being served from a cache

    WooCommerce marks cart, checkout and account pages as uncacheable, and some configurations extend that to the whole site by accident. Cart fragment requests can also fire on every page load. The result is that every visitor triggers full application work rather than receiving a stored copy.

  • most common

    The database is doing more work than it needs to

    Orders, product meta, expired transients and autoloaded options accumulate over years of trading. Queries that scan large meta tables slow every page, and the effect grows with catalogue size and order history rather than with traffic.

  • common

    There is no persistent object cache

    Without a persistent object cache the results of repeated database queries are rebuilt on every request. Adding one typically produces the single largest improvement in server response time on a busy store, and it also relieves the admin area.

  • common

    Plugins are adding work to every request

    Each active plugin can add queries, scripts and scheduled tasks. Plugins for a single page often load on all of them. Analytics and personalisation plugins that write to the database on every page view are particularly expensive at traffic peaks.

  • common

    The hosting plan cannot supply what the store needs

    Shared plans limit processes, memory and database resources, so the site is fast when quiet and slow when busy. An older language runtime version also costs measurable performance compared with a current one on identical code.

  • occasional

    Images and front end assets are heavy

    Full size product photographs served without modern formats or correct dimensions, several font families, and a page builder that ships large stylesheets all delay rendering. This is real but it is usually the second problem, not the first.

  • occasional

    Background tasks are backed up

    Scheduled actions for emails, syncs and imports run through a queue. When that queue is behind, tasks execute on visitor requests, so ordinary page loads pay for work that should have happened quietly in the background.

The fix

In this order

Each step is something you can do today. Do them in sequence; skipping ahead is how a review fails twice.

Prevent it next time

  • Track server response time and Core Web Vitals field data on a schedule, not after complaints
  • Test performance on a staging copy before installing or updating any plugin
  • Schedule database maintenance so transients and old records do not accumulate for years
  • Confirm the background task queue is running on a reliable trigger rather than on visitor requests
  1. Split the time between server and browser

    Measure the time to the first byte separately from rendering, on a product page and a filtered category page, from a location where your customers are. If server response dominates, do not touch images yet. Fix the half that is actually slow.

  2. Put full page caching in front of the storefront

    Enable page caching for everything except cart, checkout and account pages, and confirm it is actually serving stored copies by checking response headers as a logged out visitor. Add a content delivery network so static files are served close to the shopper.

  3. Add a persistent object cache

    Enable an in memory object cache on the host and connect it to the store. Watch the admin order list and category pages before and after, since those are where the improvement is most visible. Confirm the cache is actually connected rather than silently falling back.

  4. Clean and modernise the database

    Remove expired transients, reduce autoloaded option data, clear orphaned product meta and old revisions, and make sure the store is using the current high performance order storage rather than the legacy post based structure. Take a backup first and change one thing at a time.

  5. Audit plugins by cost rather than by count

    Profile which plugins add the most query time and the most front end assets, then remove, replace or restrict them to the pages that need them. Judge each on measured cost, since a small number of expensive plugins usually outweighs a long list of cheap ones.

  6. Reduce work on cart interactions

    Limit the cart fragment request so it does not run on pages with no cart display, and make sure any add to cart behaviour updates the display without reloading a full page. This alone removes a request from every page view on many themes.

  7. Move to hosting and a runtime that match the store

    Choose a plan with dedicated resources, a current language runtime version and a managed cache, and confirm the database is on fast storage. This is often cheaper than the engineering time spent working around an underpowered plan.

  8. Then fix images and scripts

    Serve appropriately sized images in modern formats, set explicit dimensions so layout does not shift, give the main product image loading priority, defer scripts that are not needed for the first view, and reduce the number of font files.

When to get help

Get help when the store is slow at traffic peaks rather than all the time, because that pattern points at resource limits, queue backlogs or cache misses under load, and reproducing it needs load testing rather than a page speed report. It is also worth help before a replatform or a major catalogue expansion, since the cheapest time to fix an architecture that will not scale is before the traffic and the order history arrive.

Get a Growth Analysis

Free. We reply within one business day.

Questions

Asked alongside this problem

By CartKernel · Last reviewed

Will a faster theme fix a slow WooCommerce store?

Only if rendering is the bottleneck. A lighter theme reduces the browser side work but does nothing about a slow server response, an unindexed database or a missing cache. Measure the server time first, then decide whether the theme is worth changing.

Can cart and checkout pages be cached at all?

Not as full pages, because they contain data specific to each visitor. What you can do is cache everything around them, keep the uncached pages light, and make sure the requests those pages depend on are fast. Caching them wholesale produces incorrect carts and mixed up sessions.

How many plugins is too many for a WooCommerce store?

The count matters less than what each one does on each request. Twenty lightweight plugins can be cheaper than three that write to the database on every page view. Profile the actual cost per plugin rather than working to a number.

Does moving to managed WooCommerce hosting solve this?

It solves the parts that are hosting shaped: runtime version, object cache, page cache and database performance. It does not clean up years of accumulated data, remove expensive plugins or resize images. Expect a meaningful improvement and a remaining list of store level work.

Related problems, answers and terms

All problems
ProblemWooCommerce checkout errors: how to fix itWooCommerce checkout errors usually come from caching, gateway settings or plugin conflicts. Reproduce, read the logs, then isolate the cause.OpenProblemCore Web Vitals failing on product pages: how to fix itCore Web Vitals failing on product pages has three separate causes. Fix the metric that is actually failing rather than optimising everything at once.OpenProblemEcommerce conversion rate dropped suddenly: how to fix itWhen ecommerce conversion rate dropped suddenly, check measurement, traffic mix and the site in that order. Most sharp drops have a single dated cause.OpenProblemShopify store slow on mobile: how to fix itA Shopify store slow on mobile usually comes down to app scripts, oversized images and busy theme sections. How to find the weight and remove it in order.OpenAnswerCan WooCommerce handle a large catalog?WooCommerce handles large catalogues with the right hosting and architecture. Where the strain shows first and the changes that keep it fast.OpenAnswerDoes site speed affect ecommerce rankings?Site speed is a small ranking factor and a large conversion factor. What Google measures, where store templates lose time, and how to prioritise fixes.OpenGlossaryCore Web VitalsCore Web Vitals are Google's three field metrics for loading, responsiveness and visual stability. The thresholds, a worked store report, and what moves them.OpenGlossaryInteraction to next paint (INP)Interaction to next paint (INP) measures how long a page takes to respond visibly to a tap or click. Thresholds, a worked breakdown, and what fixes it.Open

Stop the leak.

A free Growth Analysis finds what is broken and ranks it by the revenue it costs you.