Search "WordPress slow" and you will get 200 articles each recommending the same generic 30-item list. The reality: 80% of WordPress speed problems come from the same handful of causes, and fixing them in the right order saves you weeks of trial and error.
1. The hosting itself
Most "WordPress is slow" complaints are really "shared $4/month hosting is slow." If you are running a real business on a $4 plan, no amount of caching will rescue you from oversold servers. Move to a host that actually allocates resources — DigitalOcean, Hetzner, Cloudways, Kinsta, or your favorite managed WordPress host. This is the single highest-leverage change available, and most owners avoid it because it feels like cheating.
2. A real caching plugin, configured right
WP Rocket, LiteSpeed Cache (if your host supports it), or W3 Total Cache. Out of the box, page caching alone usually halves page-load time. Object caching (Redis or Memcached, if your host offers it) cuts dynamic queries by another 30–60%.
3. Image optimization
Most WordPress sites serve images at 4x the resolution they need. Run every image through a compression plugin (ShortPixel, Imagify, Smush) and convert to WebP. The savings are massive — often 60–80% of total page weight is images.
One WordPress-specific gotcha: WordPress generates multiple sizes of every uploaded image automatically (thumbnail, medium, large, etc). If you are not actually using them, disable the unnecessary sizes via functions.php or a plugin. Each unused size is wasted disk space and confused responsive image markup.
4. Database cleanup
WordPress stores everything in the database — including post revisions, expired transients, spam comments, and trashed posts. On a site that has been live for two years, that adds up to hundreds of MB of dead weight.
Run WP-Optimize or a similar database cleaner. Schedule weekly. Do not rely on it without backups — database cleaners occasionally delete things you wanted.
5. Disable scripts on pages that do not need them
Out of the box, every WordPress page loads every active plugin's CSS and JavaScript, even on pages where the plugin is not used. Tools like Asset CleanUp or Perfmatters let you turn off scripts page-by-page.
The biggest win here: contact form plugins (Contact Form 7, WPForms) load their JS and CSS on every single page. Disable them everywhere except the actual contact page.
6. Defer non-critical JavaScript
Render-blocking JS is the single biggest cause of poor Largest Contentful Paint scores. Use a plugin (or your caching tool) to defer or async every JS file that does not need to load before the page renders. Google Tag Manager, Facebook Pixel, chat widgets — all of these can be deferred.
7. A CDN
Cloudflare's free tier alone usually shaves 200–800ms off Time to First Byte for international visitors. Their paid Pro tier adds image optimization and Argo smart routing. KeyCDN, BunnyCDN, and others are also good. There is no good reason a 2026 WordPress site should be served only from one origin server.
What does NOT meaningfully help
This is the short list of things that get recommended endlessly online but rarely move real-world performance:
- Removing emoji support and other minor head-tag cleanups (saves 200 bytes; nobody cares).
- Switching from HTTP/1 to HTTP/2 (your host probably already does this).
- Lazy-loading images (browsers do this natively now).
- Minifying inline CSS (the savings are noise).
If you do the seven things above in order, most WordPress sites land at 90+ PageSpeed and green Core Web Vitals. Anything more is diminishing returns.