How to Increase WordPress Website Speed
Find what is actually slowing your site, then fix it in order of impact. Core Web Vitals, images, hosting, plugins and database — measured, not guessed.
Most speed advice is a list of twenty tips applied at random. That is why people install six plugins, change nothing measurable, and sometimes make the site slower.
This guide works the other way round: measure first, find the actual bottleneck, then fix in order of impact. Usually two or three changes do almost all the work.
Step 1: Measure properly
Run your slowest page — not the homepage — through PageSpeed Insights. Look at the mobile tab, because that is what Google uses to rank you.
The three numbers that matter
| Metric | Target | What it measures |
|---|---|---|
| LCP | under 2.5s | When the main content appears |
| INP | under 200ms | How fast the page responds to a tap |
| CLS | under 0.1 | How much the layout jumps while loading |
Ignore the score out of 100. It is a weighted summary. The three metrics above are what Google actually uses, and a site can score 70 while passing all three.
Read the diagnosis, not just the number
Scroll to Opportunities and Diagnostics. PageSpeed tells you exactly which file is slow and how much time it costs. That list is your work order.
Also check the server response time
In the diagnostics, find Initial server response time (TTFB). Above 600 ms means the problem is your hosting or your database, and no amount of image compression will fix it.
Step 2: Images — usually most of the problem
On a typical WordPress site, images are 60 to 80 percent of the page weight. Fix these first.
Compress and convert to WebP
A phone photo is often 4 MB. The same image at the right size, as WebP, is under 150 KB — and looks identical on screen.
Use a plugin that converts automatically: ShortPixel, Imagify or Converter for Media. Set it to bulk-convert what you already have.
Stop uploading enormous files
Resize before uploading. Nothing on a web page needs to be wider than about 2000 pixels, and most images need far less.
Lazy loading
WordPress does this by default now. One exception matters: the main image at the top of the page should not be lazy loaded, because that delays LCP. Most image plugins have a setting to exclude the first image.
Always set width and height
An image without dimensions makes the page jump when it loads, which is exactly what CLS measures. WordPress adds them automatically; check that your theme is not stripping them.
Step 3: Hosting — the floor you cannot beat
If TTFB is over 600 ms, this is your bottleneck and everything else is decoration.
- PHP 8.1 or newer. PHP 8 is roughly twice as fast as 7.4 for WordPress. Switch it in cPanel — it is free and takes a minute.
- Enough memory. The cheapest shared plans run out and start swapping.
- A server near your visitors. A server in the US serving readers in Asia adds real latency before anything else happens.
- LiteSpeed or NGINX handle WordPress better than default Apache under load.
See what actually matters in cheap web hosting.
Step 4: Caching
Without caching, WordPress rebuilds every page from the database on every visit. Caching saves the finished page and serves that instead.
Pick one caching plugin:
- LiteSpeed Cache — if your host runs LiteSpeed. The best option by a distance, and free.
- WP Super Cache — simple and reliable.
- W3 Total Cache — most control, most settings to get wrong. See the dedicated setup guide.
Never run two caching plugins. They fight, serve stale pages, and produce bugs that are extremely hard to trace.
Step 5: Plugins — count them
Every plugin adds code to every page load. The number is less important than what they do, but in practice the two correlate.
- Delete what you do not use. Deactivating is not enough — delete it.
- Find the expensive ones. Install Query Monitor, load a page, and see which plugin is running the slow queries.
- Replace heavy page builders where you can. Elementor and similar add significant weight to every page. The block editor is much lighter.
- Watch for plugins loading everywhere. A contact form plugin often loads its scripts on all pages, not just the contact page.
Step 6: The database
An old WordPress database fills with things nobody needs: post revisions, spam comments, expired transients, leftover tables from deleted plugins.
Back up first, then use WP-Optimize to clear revisions, spam and transients.
Limit revisions going forward in wp-config.php:
define( 'WP_POST_REVISIONS', 5 );
Without that line, a page edited fifty times stores fifty full copies.
Step 7: A CDN
A CDN serves your files from a location near the visitor. Cloudflare's free tier is enough for most sites, and it also gives you free SSL and basic attack protection.
It matters most when your audience is spread across countries. If everyone is in one city and your server is there too, the gain is small.
Step 8: Fonts and third-party scripts
Often the last unexplained second.
- Host fonts locally rather than loading from Google Fonts. It removes a DNS lookup and a connection to another domain.
- Load only the weights you use. Loading nine weights when the design uses two is common and wasteful.
- Audit third-party scripts. Chat widgets, heat maps, multiple analytics tools — each one is a separate connection. Remove what you do not read.
What order to do this in
Fix in this sequence and stop when you pass the metrics:
- Switch to PHP 8.1+ — one minute, free, immediate
- Compress images and serve WebP — usually the largest single gain
- Add one caching plugin
- Delete unused plugins
- Add Cloudflare
- Clean the database
- Fix fonts and third-party scripts
- Only then consider changing host
Most sites pass after the first three.
Common problems
The score went up but the site still feels slow
You are looking at the lab score. Check the real user data at the top of the PageSpeed report, which comes from actual visitors. That is what Google uses.
The site broke after enabling caching
Usually JavaScript minification or combining files. Turn those two options off, keep page caching on. Clear the cache and test again.
Changes do not show up
You are seeing a cached page. Clear the plugin cache, clear Cloudflare, and hard-refresh the browser. In that order.
CLS is high and I cannot see why
Usually images without dimensions, ads reserving no space, or a font swap moving text. The PageSpeed report highlights the exact element.
Everything is optimised and TTFB is still bad
The host. No plugin fixes a slow server. Move.
What not to bother with
- Chasing 100/100. Diminishing returns after you pass the three metrics.
- Stacking optimisation plugins. They overlap and conflict.
- Aggressive JS combining. Breaks more sites than it speeds up, and HTTP/2 made it largely pointless.
- Removing jQuery unless you know exactly what depends on it.