Most advice about speed is a list of plugins to install. That is backwards. If your WordPress site slow problem comes from underpowered hosting or a 4MB hero image, no caching plugin will save it.
Diagnose first. The causes below are roughly in order of how often they turn out to be the real culprit.
Measure before you change anything
Run the site through a speed testing tool and note three numbers: time to first byte, largest contentful paint, and total page weight.
Those three point in different directions. Slow time to first byte is a server problem. Slow largest contentful paint with a fast server is usually images or render-blocking code. High page weight is too much stuff.
Test more than the homepage. Homepages are often the most optimised page on a site, and the least representative.
Cause 1: Hosting that is too cheap
The most common cause, and the one people resist most. On budget shared hosting, hundreds of sites share one server. Your site is competing for CPU and memory with everyone else's traffic spikes.
The symptom is a slow time to first byte — often over 600ms — that no plugin improves. The server is simply taking a long time to start responding.
You can optimise a site on poor hosting and gain a little. Moving to decent hosting often halves the load time in an afternoon. It is the highest-leverage change available on most slow sites.
Cause 2: Unoptimised images
The single biggest contributor to page weight on most sites. Someone uploads a photo straight from a phone or a stock library at 4000 pixels wide, and it gets displayed in a 600 pixel container.
What to do: resize images to the dimensions they are actually displayed at, serve modern formats like WebP, compress them, and lazy-load anything below the fold.
This is usually the fastest visible win after hosting.
Cause 3: Too many plugins doing too much
The number of plugins matters less than what they do. Thirty lightweight plugins can outperform five heavy ones.
The expensive ones tend to be page builders, sliders, anything adding scripts to every page, plugins running queries on every request, and analytics or chat widgets loading third-party code.
A useful exercise: deactivate everything, measure, then reactivate one at a time and measure again. The results are often surprising — the culprit is rarely the plugin you suspected.
Cause 4: No caching
Without caching, WordPress rebuilds every page from the database on every single visit. With page caching, the finished HTML is served directly.
For a site whose content does not change every minute, this is a large gain for very little effort. Add a content delivery network if you have visitors far from your server, and the geography stops mattering as much.
Note the order though. Caching applied on top of the first three problems hides them rather than fixing them.
Cause 5: A bloated database
Over years, the database fills with post revisions, spam comments, expired transients, and orphaned data from plugins removed long ago. Queries get slower.
Cleaning it up helps, particularly on older sites. Take a backup first — database cleanup tools are blunt instruments.
Cause 6: Render-blocking code
CSS and JavaScript that must load before anything appears on screen. The page is technically downloading fine, but the visitor sees nothing for two seconds.
Fixes include deferring non-critical JavaScript, inlining the CSS needed for the visible area, and removing scripts from pages that do not use them. There is no reason for a contact form script to load on every page of the site.
Cause 7: Something malicious
Worth ruling out, especially if the slowdown was sudden with no changes made. Compromised sites are often used to send spam, mine cryptocurrency, or serve files to others — all of which consume the resources your visitors need.
Treat it as suspicious if the site slowed abruptly, if your host mentions unusual resource usage, or if there are other odd symptoms. Our guide to removing malware from WordPress covers what to check.
Why it matters commercially
Speed is not vanity. It affects three things directly.
Conversions. Visitors leave slow pages, and mobile visitors leave fastest. The gap between a two-second and a five-second load is measured in lost enquiries.
Search rankings. Core Web Vitals are a ranking signal. They will not lift bad content, but between two similar pages, speed is a tiebreaker.
Ad costs. If you run paid traffic, a slow landing page raises your cost per acquisition twice over — worse quality scores and worse conversion.
Where to start
- Measure and record your current numbers
- Check time to first byte — if it is poor, address hosting first
- Fix images: resize, compress, modern formats, lazy loading
- Audit plugins and remove what earns its place
- Add page caching and a CDN if relevant
- Clean the database
- Defer non-critical scripts
- Measure again and compare
Change one thing at a time and measure after each. Otherwise you learn nothing about what actually worked.
A realistic expectation
Not every site can hit a perfect score, and chasing one is usually a poor use of money. A well-built WordPress site on decent hosting with sensible images and caching will load in one to two seconds. That is fast enough for almost any business.
The gap between three seconds and one second matters. The gap between one second and 0.8 seconds rarely does.
If you would rather it was just handled
Performance is not a one-off task. Sites slow down again as content and plugins accumulate. Our managed website plans include ongoing performance work, image optimisation, caching and monitoring — so speed is maintained rather than fixed once and forgotten.
Send us your web address and we will tell you what is actually slowing it down, with numbers rather than guesses.
Get Shielded
We build, host, secure and monitor business websites — cleaning up hacks and keeping sites online for clients across the UK, USA, Australia and the UAE.