Speeding Up a Slow WordPress Site
Diagnosis before treatment. The order that finds the real bottleneck instead of optimising things that were already fine.
This is an implementation example, not a client case study. It describes how this work is actually carried out — the method, the sequence and the reasoning. No client is named and no result is claimed, because inventing either would make it worthless as evidence.

Speed work fails when it starts with a checklist instead of a measurement. Minifying CSS on a site whose problem is a 4MB hero image is effort spent on the wrong thing, and it produces a report full of green ticks and a site that is still slow.
- Project type
- Performance remediation on an existing WordPress site
- Sector
- Professional services
The challenge
'The site is slow' can mean at least four different things: slow server response, a heavy payload, render-blocking resources, or a layout that shifts while loading. Each has a different cause and a different fix, and they are frequently confused with each other.
The objective
Identify which of those four is actually happening, fix that, and verify the fix against real user data rather than a lab score.
Approach
Measure first, on a mid-range mobile profile over a throttled connection. Then work down in order of typical impact — images, plugin weight, caching, hosting — changing one thing at a time so the effect of each is attributable.
Implementation
1. Establish what kind of slow
Four distinct signals, four distinct causes:
| Symptom | Metric | Usual cause |
|---|---|---|
| Long wait before anything appears | TTFB | Server, uncached PHP, slow database |
| Main content appears late | LCP | Oversized hero image, render-blocking CSS |
| Page feels unresponsive when tapped | INP | Heavy JavaScript on the main thread |
| Layout jumps while loading | CLS | Images without dimensions, injected banners |
Field data from Search Console is what matters here. A lab test on a fast connection will tell you everything is fine while real users on a phone experience something else entirely.
2. Images
Usually the largest single win and usually unchecked. Serve at rendered size, modern format, compressed, explicit dimensions, lazy-load below the fold only — never the hero.
3. Plugin audit
List everything. For each: what it does, where it is used, whether it loads globally. A slider plugin shipping its CSS and JavaScript to the contact page is pure cost.
Deactivate on staging, measure, delete what is not needed rather than leaving it dormant.
4. Caching
Page cache first — it is the largest step on an uncached site. Then object cache, browser cache headers, and a CDN for static assets.
One caching layer configured properly beats two fighting each other.
5. Hosting
If server response stays above roughly 600ms with caching active, the plan is the constraint and no further optimisation will move it.
6. Verify
Re-measure in the same conditions. Then wait four weeks and check field data, because that is the number Google actually uses.
Technology
- WordPress
- PageSpeed Insights
- Search Console
- WebP / AVIF
- Query Monitor
Decisions worth explaining
Field data over lab scores as the success measure
Lab tests run on fast hardware and connections. Search Console reports what real visitors experienced, which is both what Google uses and what actually costs you customers.
One change at a time
Batching five changes and seeing an improvement tells you nothing about which one worked, or whether one of them made things worse.
No pursuit of a perfect score
The last few points routinely cost more than they return. Real-world load time is the goal; the number is a proxy.
What it produces
A site where the actual bottleneck has been identified and removed, verified against real user data. No percentage improvement is quoted, because the available improvement depends entirely on how bad the starting point was.
What it teaches
- Checklists applied without measurement optimise things that were already fine.
- Lab scores and field data regularly disagree, and field data is the one that counts.
- A deactivated plugin is still a dependency and still a vulnerability.
- Lazy-loading the hero image delays the exact element LCP measures.
Related services
Related guides
WordPress
How to Make a WordPress Website Faster and More Reliable
The changes that move the needle, ordered by impact — and the ones that get recommended constantly but rarely help.
Website Performance
Core Web Vitals Explained for Business Website Owners
Three metrics, in plain English — what each one measures, what breaks it, and which number Google actually uses.
Website Performance
Why Is My WordPress Website Slow?
Four kinds of slow, four different causes. Work out which one you have before changing anything.
Website Performance
Website Speed Optimisation Checklist
Ordered by impact rather than alphabetically, so you fix the thing that matters before the thing that does not.

