Web Development
How to speed up a slow WordPress site (without breaking it)
Most slow WordPress sites share the same four causes. Here's how I diagnose them, in the order that finds the problem fastest.
Almost every "our site is slow" call I take turns out to be one of four things. Not a mysterious combination of all of them — one. The trick is checking them in the right order, because three of the four are cheap to rule out and the expensive one is last.
Here's the order I work in.
Start with a measurement, not a plugin
Before changing anything, get a baseline from PageSpeed Insights. Run it twice and use the second result — the first often catches a cold cache and makes everything look worse than it is.
Write down three numbers:
- LCP (Largest Contentful Paint) — how long until the main content appears
- TTFB (Time to First Byte) — how long the server takes to respond at all
- CLS (Cumulative Layout Shift) — how much the page jumps around while loading
These three tell you which of the four causes you're dealing with.
If TTFB is above ~600ms, stop reading about images. The problem is on the server, and no amount of front-end work will fix it.
Cause 1: The server is slow (high TTFB)
A high TTFB means the page is slow before a single image or script is involved. Usual suspects, in order of how often I find them:
- Shared hosting that's oversubscribed. Common on cheap GoDaddy and Bluehost plans. The fix is moving hosts, not optimising code.
- No page caching. WordPress rebuilds every page from the database on every request unless you tell it not to.
- An old PHP version. PHP 8.3 is roughly twice as fast as 7.4 for typical WordPress workloads and the upgrade is usually a dropdown in your host's control panel.
Install a caching plugin before you do anything else. If TTFB drops below 400ms, you're done — go back and re-measure.
Cause 2: Images nobody resized
This is the most common single cause, and the easiest to fix.
Someone uploaded a 4000×3000 photo straight off a phone, WordPress scaled it in the browser with CSS, and every visitor now downloads 6MB to see a 600px thumbnail.
Check it in about ten seconds:
# Sort a WordPress uploads folder by file size, largest first
find wp-content/uploads -type f -name "*.jpg" -o -name "*.png" \
| xargs ls -lS 2>/dev/null \
| head -20Anything over about 300KB is worth converting. Serve WebP, set explicit width and height attributes so the browser reserves space, and lazy-load everything below the fold.
Setting dimensions is what fixes CLS, incidentally — that's the layout jumping around as images pop in.
Cause 3: Plugin bloat
Every active plugin can enqueue its own CSS and JavaScript on every page, whether the page uses it or not. A contact form plugin loading its scripts on your blog posts is pure waste.
Two questions for each plugin:
| Question | If the answer is no |
|---|---|
| Has it been updated in the last year? | Remove it — it's also a security risk |
| Is it doing something you'd notice losing? | Remove it |
I regularly cut 20 plugins to 8 with no visible change to the site.
Cause 4: The theme itself
This is the expensive one, which is why it's last. Some page-builder themes ship 400KB of CSS and jQuery on every page and there is no configuration that makes them fast.
If you've ruled out the first three and you're still slow, the honest answer is usually a rebuild on a lighter foundation. That's a project, not an afternoon — but it's also the point where a site stops fighting you.
What to do first
If you only do one thing this week: install caching and compress your images. In my experience that combination fixes the majority of slow WordPress sites outright, and it costs nothing but an hour.
Measure before, measure after, and keep the numbers. Otherwise you're guessing.
- #WordPress
- #Performance
- #Core Web Vitals
Related reading
A technical SEO audit you can run yourself
Before paying anyone for an SEO audit, run these six checks. They take an afternoon, need no paid tools, and usually find the real problem.
Your WordPress site got hacked: what to do first
Deleting the malware is the easy part — and the part that gets redone next week if you skip the rest. Here's the order that makes a cleanup stick.
Your SSL certificate broke: a 5-minute checklist
Browser shouting about your certificate? Work through these five checks in order — it's almost always one of them, and four take under a minute.
Need a hand with something like this?
I work with businesses in Dubai and remotely worldwide on websites, SEO, hosting and IT. Tell me what you're dealing with.
Get in touch