DEV Community

Cover image for How to Speed Up Your WordPress Website in 2026 (From 45 to 100 PageSpeed)
CrestVox for CrestVox Studio

Posted on

How to Speed Up Your WordPress Website in 2026 (From 45 to 100 PageSpeed)

Is your WordPress website slow? You're losing money.

Google confirmed it: a 1-second delay in page load time reduces conversions by 7%. If your site takes 5+ seconds to load, most visitors leave before they even see your offer.

I recently took a client's WordPress site from a 45 PageSpeed score to a perfect 100. In this guide, I'll show you exactly how — step by step.


Why WordPress Sites Get Slow

Before fixing anything, you need to understand why WordPress sites slow down:

  • Unoptimized images (biggest culprit)
  • Too many plugins running unnecessary scripts
  • No caching — PHP regenerates every page on every visit
  • Unminified CSS and JavaScript files
  • Cheap shared hosting with slow server response times
  • Render-blocking resources in <head>
  • No CDN — serving files from one location worldwide

Most WordPress sites have 5 or more of these issues. Let's fix them all.


Step 1: Run a Baseline Test

Before touching anything, test your current speed.

Go to PageSpeed Insights and enter your URL. Also run it on GTmetrix.

Write down:

  • Performance score (mobile + desktop)
  • Largest Contentful Paint (LCP)
  • Cumulative Layout Shift (CLS)
  • Total Blocking Time (TBT)
  • Page size and number of requests

This is your baseline. Every fix you make should improve these numbers.


Step 2: Optimize Every Image

Images are usually 60-80% of your page weight. This is the single biggest win.

Convert to WebP format. WebP images are 25-35% smaller than JPEG/PNG with the same quality.

Use a plugin like Smush or ShortPixel to:

  • Convert existing images to WebP automatically
  • Compress new uploads on save
  • Add width and height attributes to prevent layout shift (CLS)
  • Enable lazy loading for below-fold images

For your hero image (the first image visitors see), do NOT lazy load it. Set loading="eager" and fetchpriority="high" so it loads immediately.

Before: Hero image 450KB JPEG, no dimensions set
After: Hero image 89KB WebP, dimensions set, CLS = 0


Step 3: Install a Caching Plugin

Without caching, WordPress runs PHP + database queries for every single visitor. With caching, it serves pre-built HTML files — 10x faster.

Install WP Rocket (paid, best option) or W3 Total Cache (free).

Configure it to:

  • Enable page caching
  • Enable browser caching
  • Minify CSS and JavaScript
  • Defer non-critical JavaScript
  • Enable GZIP compression

Important: Do NOT defer your main stylesheet CSS. This causes CLS (layout shift) — the page renders unstyled then jumps. Only defer scripts, not styles.


Step 4: Minify CSS and JavaScript

Every CSS and JS file adds HTTP requests and bytes. Minification removes whitespace, comments, and unnecessary characters.

If you're using WP Rocket, it handles this automatically.

If you're doing it manually, use tools like npx terser for JavaScript and cssnano for CSS.

I reduced a client's main.js from 19,859 bytes to 10,986 bytes — a 45% reduction — just by minifying.


Step 5: Use a CDN

A CDN (Content Delivery Network) stores copies of your site's static files (images, CSS, JS) on servers worldwide. When someone in the US visits your site, they get files from a US server — not your server in India or Europe.

Cloudflare (free tier) is the easiest option:

  1. Sign up at cloudflare.com
  2. Change your domain's nameservers to Cloudflare
  3. Enable "Auto Minify" and "Brotli compression"
  4. Turn on caching

This alone can cut load time by 30-50% for international visitors.


Step 6: Choose Fast Hosting

No amount of optimization fixes bad hosting. If your server response time (TTFB) is over 600ms, you need better hosting.

Look for hosting with:

  • LiteSpeed or Nginx servers (faster than Apache)
  • PHP 8.1+ support
  • SSD storage
  • Server locations close to your audience

Hostinger Business plan offers excellent speed at an affordable price. Cloudways is great for scaling.

Avoid cheap shared hosting where your site shares resources with hundreds of others.


Step 7: Audit and Remove Unused Plugins

Every active plugin adds PHP execution time, database queries, and often CSS/JS to every page load.

Go through your plugins and ask:

  • Do I actually use this?
  • Is there a lighter alternative?
  • Can I replace 3 plugins with 1?

Common offenders:

  • Page builders loading CSS on every page (even pages that don't use them)
  • Contact form plugins loading scripts site-wide
  • Social sharing plugins with heavy JavaScript
  • Multiple SEO plugins installed simultaneously

Rule of thumb: If a plugin loads scripts on your frontend and you don't need it on every page — either configure it to load only where needed, or replace it.


Step 8: Preload Key Resources

Tell the browser in advance what it will need. Add preload hints in your head tag for your main font file, hero image, and dns-prefetch for Google Fonts. This reduces the time the browser spends discovering these resources late.

Preloading your hero image and primary font can reduce LCP by 0.5-1 second.


Step 9: Fix Render-Blocking Resources

"Render-blocking" means the browser stops loading your page to download and parse a CSS or JS file. This delays when the user actually sees content.

Fixes:

  • Move non-critical JS to the footer (or add defer attribute)
  • Inline critical CSS (above-the-fold styles) directly in head
  • Load Google Fonts asynchronously or self-host them

Self-hosting Google Fonts is underrated. Download the font files, serve them from your own server, and add proper font-display: swap CSS. Zero DNS lookups, zero third-party dependency.


Real Results: 45 to 100 PageSpeed

Here's what we did for a client's WordPress site:

Fix Impact
Converted images to WebP -68% image weight
Added hero image dimensions CLS: 0.18 to 0
Enabled caching TTFB: 800ms to 180ms
Minified JS -45% JS size
Removed 6 unused plugins -12 HTTP requests
Added Cloudflare CDN -40% load time globally
Preloaded hero + fonts LCP: 3.2s to 1.1s

Final result: Mobile 99 / Desktop 100


Quick Checklist

  • [ ] All images converted to WebP
  • [ ] Hero image has eager loading and dimensions set
  • [ ] Caching plugin installed and configured
  • [ ] CSS and JS minified
  • [ ] Unused plugins removed
  • [ ] CDN enabled (Cloudflare minimum)
  • [ ] Fonts preloaded or self-hosted
  • [ ] PageSpeed score 90+ on both mobile and desktop
  • [ ] CLS under 0.1
  • [ ] LCP under 2.5 seconds

Need Help Optimizing Your WordPress Site?

Speed optimization takes time to get right — wrong settings can break your site or cause layout shifts.

At CrestVox Studio, we've optimized WordPress sites from sub-50 scores to 95-100 PageSpeed. We handle everything: image optimization, caching configuration, code minification, CDN setup, and Core Web Vitals fixes.

Get a free speed audit → crestvox.com


Related Posts from CrestVox Studio


Got questions about a specific step? Drop them in the comments — I read every one.

Originally published on CrestVox Studio Blog

Top comments (0)