How to speed up a WordPress site
Measure first, then work through caching, images, plugins, PHP version and the database in the order that gives the biggest gain.
A slow WordPress site is nearly always one of a small number of causes, and guessing at fixes without measuring first wastes time on changes that were never going to matter. Find out where the time is actually going, then work down this list in order — each step tends to give a bigger return than the one after it.
Measure before you change anything
Run the site through a page speed testing tool and note two figures: the time to first byte (how quickly the server starts responding) and the overall load time. Test a real inner page as well as the homepage, since caching and plugin behaviour can differ between them. Testing your website speed properly covers how to get a reading that reflects a real visitor rather than your own cached browser.
Step 1: turn on caching
This is usually the single biggest improvement available, because it is the difference between WordPress rebuilding a page from the database on every single visit and simply serving a stored copy. A caching plugin, or page caching enabled in your control panel, generates that static copy once and serves it to every subsequent visitor until the content changes.
Setting up caching on WordPress covers the different types of cache and how to configure each without breaking a logged-in admin experience or a shop's cart.
Step 2: fix your images
Unoptimised images are the next most common cause of a slow site, and the easiest to fix without touching any code.
- Resize before upload. An image uploaded at 4000 pixels wide and displayed at 800 forces every visitor to download five times more data than they see.
- Compress. A compression tool or plugin can reduce file size substantially with no visible difference in quality.
- Use modern formats where you can. WebP files are typically smaller than JPEG or PNG for the same image.
- Lazy-load below-the-fold images so the browser does not download images the visitor has not scrolled to yet.
See compressing images for the web for the detail.
Step 3: find and deal with slow plugins
Every active plugin adds some amount of processing to every page load, and the amount varies enormously — some are negligible, and a small number are genuinely responsible for most of a site's slowness on their own. Rather than guessing which one, measure it directly: finding the plugin that is slowing your site covers how to isolate the actual culprit rather than removing plugins at random.
Deactivate and delete any plugin that is not doing anything for the site any more. An inactive theme or an old plugin left in place still gets scanned during updates and still adds to what has to be maintained, even when it is switched off.
Step 4: check your PHP version
Each major PHP version has generally been faster than the last, and running an old one leaves genuine performance on the table for no benefit. Check your current version and the newest one your plugins and theme support, then upgrade PHP without breaking your site. This is a change worth making on every site, not just slow ones, since there is no reason to run an outdated version once compatibility is confirmed.
Step 5: reduce database load
A WordPress database accumulates overhead over time: post revisions, spam comments, expired transients, and orphaned data left behind by plugins that were removed without cleaning up after themselves. On an older site this can genuinely slow down every single page load, since WordPress queries the database on almost every request.
Cleaning up and optimising the WordPress database covers what is safe to remove and how to do it without losing anything that matters.
Step 6: consider what caching alone cannot fix
Caching is extremely effective for content that is the same for every visitor, but it does not help logged-in areas, a shopping cart, or anything genuinely dynamic on every load. For a WooCommerce store specifically, see speeding up a WooCommerce store, since carts and account pages need a different approach to caching than a blog or brochure site.
Things that make a smaller difference than people expect
- Minifying CSS and JavaScript — worth doing, but it saves kilobytes where caching and images save seconds. Do it after the bigger items, not instead of them.
- Switching themes — a bloated theme can matter, but most slow sites are slow because of plugins and uncached database queries, not the theme itself.
- Adding more plugins that claim to speed things up — a second caching plugin, or an "optimisation" plugin stacked on top of another, often conflicts with what is already running rather than adding to it.
When hosting itself is the ceiling
All of the above assumes the hosting resources available to the site are sufficient for its traffic. If a site is heavily optimised and still slow under real visitor load, the account may simply have outgrown its current plan. See telling when you have outgrown your plan for the signs that this, rather than a WordPress setting, is the actual bottleneck.
Related reading
Page caching turns a rebuilt-every-visit page into a stored copy — how to set it up and avoid caching the parts of a site that must stay live.
How to find the plugin that is slowing your siteA methodical way to find out which plugin is actually responsible before you start deactivating things at random.
How to clean up and optimise the WordPress databaseWhat actually accumulates in a WordPress database over time, and how to clear it out safely before optimising the tables.
Why is my WordPress site slow?A handful of causes account for almost every slow WordPress site. Here is what to check, roughly in order of likelihood.