I Cut My WordPress Load Time From 4.2s to 0.9s — Exact Steps

My site loaded in 4.2 seconds. Visitors were leaving before the page finished, and search rankings were sliding. Over two weekends I got it to 0.9 seconds. Here is exactly what I did, in the order that mattered.

Step 0: measure properly

Run PageSpeed Insights on mobile, not desktop. Note three numbers: Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift. Without a baseline you cannot tell which change helped.

1. Moved hosts (saved 1.4s)

This was the biggest single win and no plugin could have matched it. The old shared host had no server-level caching and slow disk I/O. Moving to a host with LiteSpeed or NGINX caching plus NVMe storage cut more than a second on its own.

2. Enabled page caching (saved 0.6s)

A caching plugin turns dynamic PHP pages into static HTML. Enable page cache, browser cache and compression. Also turn on cache preloading so pages are ready before visitors arrive.

3. Compressed and resized images (saved 0.7s)

My media library was full of 4000-pixel photos displayed in an 800-pixel column. I resized everything to the largest size actually used, converted to WebP, and compressed at quality 80. Page weight dropped by more than half.

4. Removed five plugins (saved 0.3s)

Each active plugin loads CSS, JavaScript and database queries. I deleted three abandoned plugins and replaced two "all-in-one" plugins with lighter single-purpose ones. Audit yours: if you cannot say what a plugin does, you do not need it.

5. Added a free CDN (saved 0.2s)

Cloudflare’s free plan caches static files at edge locations worldwide. Most of my readers are on another continent, so this mattered. It also cut bandwidth on the origin server.

6. Self-hosted fonts (saved 0.1s)

Loading Google Fonts from a third party added two extra DNS lookups before text could render. Self-hosting or using system fonts removed that delay entirely.

The two things that broke

  • Combining CSS and JavaScript broke the mobile menu. Fix: enable it, test on a phone, and exclude the offending file
  • Remove unused CSS stripped styles used only on one template. Fix: add exclusions per template

Lesson: change one setting at a time and re-test. Chasing a perfect score by enabling everything at once costs you a weekend of debugging.

Where it ended

LCP 0.9s, INP 120ms, CLS 0.02. Bounce rate dropped noticeably and pages began ranking again within a month. Start with hosting and images — they are 80% of the result.

Latest tips and tricks on digital marketing, internet, and technology by professional tech enthusiasts. Stay updated with the latest news, insights & advice.

Leave a Reply

Your email address will not be published. Required fields are marked *