How I Increased Website Speed from 20 to 95 in PageSpeed
Ibrahim Monir
Full-Stack Developer

A real case study: how I took a WordPress site from a PageSpeed score of 20 to 95 with faster hosting, image optimization, caching, code minification, plugin cleanup, and a CDN.
A client came to me with a WordPress site scoring a painful 20 on Google PageSpeed Insights. Pages took 8+ seconds to load, the bounce rate was climbing, and rankings were slipping. After a focused round of optimization, that same site scored 95 — and it stayed there. Here's exactly what I did, step by step, so you can do the same.
Quick answer: I took a WordPress site from 20 to 95 in PageSpeed by fixing the real bottlenecks in order — a faster host, image compression and lazy loading, caching, minifying and deferring CSS/JS, removing unused plugins and bloat, and adding a CDN. No single trick did it; the score jumped because I fixed the biggest problems first.
Where the site started: a score of 20
Before touching anything, I measured. You can't fix what you don't benchmark. Running the site through Google PageSpeed Insights and GTmetrix revealed the usual suspects:
- Largest Contentful Paint (LCP) over 6 seconds — the hero image was huge and uncompressed.
- Render-blocking CSS and JavaScript loading before the page could paint.
- No caching — every visit rebuilt the whole page from scratch.
- 23 active plugins, several loading scripts on every page for no reason.
- Cheap shared hosting with a slow server response time (TTFB).
That list is the roadmap. I fixed them in order of impact.
Step 1: I moved to faster hosting
The single biggest win was server response time. The site was on overcrowded shared hosting with a Time to First Byte (TTFB) close to 1.2 seconds. I moved it to quality hosting with SSD/NVMe storage, a modern PHP version, and server-level caching. TTFB dropped under 300ms instantly — and that alone lifted the score by double digits before I optimized a single asset.
Step 2: I optimized every image
Images were the heaviest part of the page. My fixes:
- Compressed and resized every image — no 4000px hero images being scaled down in the browser.
- Converted to WebP, which is dramatically smaller than JPEG/PNG at the same quality.
- Enabled lazy loading so off-screen images only load when the visitor scrolls to them.
- Set explicit width and height on images to eliminate layout shift (CLS).
Image optimization alone took LCP from over 6 seconds to under 2.5.
Step 3: I added full-page caching
Without caching, WordPress rebuilds every page from PHP and the database on every request. I installed a solid caching plugin (WP Rocket / FlyingPress / LiteSpeed Cache, depending on the host) and enabled page caching so visitors get a pre-built static version. This slashed load time and server strain in one move.
Step 4: I minified and deferred CSS/JS
Render-blocking resources were holding up the first paint. I:
- Minified CSS, JavaScript, and HTML to shrink file sizes.
- Deferred non-critical JavaScript so it loads after the page is visible.
- Delayed third-party scripts (analytics, chat widgets, embeds) until user interaction.
- Inlined critical CSS and loaded the rest asynchronously.
This is fiddly work — test after every change — but it's where a good score becomes a great one.
Step 5: I removed plugin bloat
Twenty-three plugins is a red flag. I audited each one and asked, "Does this earn its place?" I deleted 9 plugins outright, replaced two heavy ones with lightweight alternatives, and made sure the rest only loaded their assets on the pages that actually used them. Fewer scripts and stylesheets means a lighter, faster page everywhere.
Step 6: I added a CDN
Finally, I put the site behind a CDN (Cloudflare) so static assets are served from servers close to each visitor. This cut latency for users far from the origin server and added another layer of caching and security. It's the finishing touch that keeps the site fast for a global audience.
The result: from 20 to 95
After those six steps, the numbers told the story:
| Metric | Before | After |
|---|---|---|
| PageSpeed score | 20 | 95 |
| Load time | ~8.0s | under 2.0s |
| LCP | 6.2s | 2.1s |
| TTFB | ~1.2s | under 0.3s |
| Active plugins | 23 | 14 |
Just as importantly, the bounce rate dropped and the client started climbing back up the search results — because page speed and Core Web Vitals are confirmed Google ranking factors.
My priority order (do these in this sequence)
If you only remember one thing, remember the order. Fixing the biggest bottleneck first is what moves the score fast:
- 1. Hosting & TTFB — a fast server is the foundation.
- 2. Images — compress, WebP, lazy load, set dimensions.
- 3. Caching — serve pre-built pages.
- 4. CSS/JS — minify, defer, delay, inline critical CSS.
- 5. Plugin cleanup — remove bloat and conditional-load assets.
- 6. CDN — serve assets globally and cache at the edge.
Frequently asked questions
How can I increase my WordPress PageSpeed score?
Improve your PageSpeed score by fixing bottlenecks in order: move to fast hosting for a low TTFB, compress and lazy-load images in WebP, enable full-page caching, minify and defer CSS/JavaScript, remove unused plugins, and add a CDN. Fixing the biggest problem first gives the fastest score gains.
Why is my PageSpeed score so low?
A low PageSpeed score is usually caused by slow hosting (high TTFB), large uncompressed images, render-blocking CSS and JavaScript, no caching, and too many heavy plugins. Each of these adds seconds to load time, and PageSpeed grades your site against real-world Core Web Vitals.
Does PageSpeed score affect SEO?
Yes. Page speed and Core Web Vitals are confirmed Google ranking factors. A faster site tends to rank better, keeps visitors longer, and converts more — so improving your PageSpeed score benefits both SEO and revenue.
What is a good PageSpeed score?
A PageSpeed score of 90 or above (green) is considered good, 50–89 (orange) needs improvement, and below 50 (red) is poor. Aim for 90+ on both mobile and desktop, but prioritize passing Core Web Vitals, which reflect real user experience.
Final thought
Going from 20 to 95 wasn't magic — it was fixing the right things in the right order. Fast hosting, optimized images, caching, lean code, fewer plugins, and a CDN. Do those six things and almost any slow WordPress site can become genuinely fast. Measure first, fix the biggest bottleneck, re-measure, and repeat.
Want your site taken from slow to 90+? Get in touch and I'll audit your speed and fix what's actually holding it back.


