How to Speed Up a Slow WordPress Site (2026)

·

·

Analytics dashboard showing website performance metrics and speed scores

A slow WordPress site costs you visitors, search rankings, and revenue. Google uses page speed as a ranking factor, and studies consistently show that every extra second of load time increases bounce rate and reduces conversions. The good news: most WordPress speed problems are fixable in an afternoon.

This guide walks you through the complete WordPress speed optimization process for 2026: how to measure your site, what to fix first, and the specific settings and tools that make the biggest difference. It was written for site owners and developers who want a faster site without rebuilding from scratch.

Analytics dashboard showing website performance metrics and speed scores
Measuring your WordPress site speed is the first step to fixing it.

How to measure your WordPress speed

Before you fix anything, measure. You cannot improve what you do not measure. Use these tools:

  • Google PageSpeed Insights (pagespeed.web.dev) — the gold standard. Gives you a 0–100 score for mobile and desktop, plus Core Web Vitals data from real users (CrUX). Free.
  • GTmetrix (gtmetrix.com) — detailed waterfall view of every request. Shows exactly which files are slow. Free tier is generous.
  • Lighthouse (built into Chrome DevTools) — audit tab, run on your own browser. Good for quick checks during development.
  • Query Monitor plugin — shows database queries, hook execution time, and enqueued assets on each page. Essential for finding plugin bloat.
  • WebPageTest (webpagetest.org) — multi-location, multi-device testing. Best for seeing how your site loads on slow connections.

What to aim for: a PageSpeed score of 90+ on mobile, LCP under 2.5 seconds, INP under 200 ms, CLS under 0.1. These are Google’s “good” thresholds for Core Web Vitals.

Core Web Vitals: what they mean

Google ranks sites partly on three user-experience metrics. Understanding them helps you prioritize fixes:

  • LCP (Largest Contentful Paint) — how long until the biggest element (usually a hero image or heading) is visible. Target: under 2.5 s. Fix: optimize images, use a CDN, reduce server response time.
  • INP (Interaction to Next Paint) — how responsive the page is to clicks/taps. Target: under 200 ms. Fix: reduce JavaScript, avoid long tasks, defer non-critical scripts.
  • CLS (Cumulative Layout Shift) — how much the page jumps around while loading. Target: under 0.1. Fix: set explicit width/height on images and embeds, avoid injecting content above existing content.

The biggest speed killers (in order)

Not all optimizations are equal. Fix these in order — each one has an outsized impact:

  1. Slow hosting — if your server takes 2+ seconds to respond (TTFB), nothing else matters.
  2. Unoptimized images — a single 4 MB hero image can add 3 seconds to load time.
  3. Too many plugins — each plugin adds PHP execution time, database queries, and often CSS/JS files.
  4. No caching — without page caching, WordPress rebuilds every page from scratch on every visit.
  5. Bloated theme — multipurpose themes with 50+ features load code you never use.
  6. External scripts — analytics, ads, chat widgets, social embeds. Each adds a network request.
  7. Unoptimized database — post revisions, transients, orphaned metadata accumulate over time.
  8. Old PHP version — PHP 7.4 is 2–3x slower than PHP 8.3.

Step 1: Fix your hosting (the #1 factor)

If your TTFB (Time to First Byte) is over 600 ms, your host is the bottleneck. No amount of caching or image optimization will fix a slow server. Signs you need better hosting:

  • TTFB over 600 ms on a simple page.
  • Frequent downtime or 503 errors during traffic spikes.
  • Support that cannot answer technical questions.
  • Shared server with hundreds of neighbors (oversold resources).

Look for a host with: NVMe storage, modern CPU (AMD EPYC / Intel Xeon), server-level caching (Nginx + Redis), low tenancy, and a published uptime SLA. Avoid hosts with “unlimited” everything and renewal price hikes.

For European sites, Kiravo is a strong option — AMD EPYC + NVMe, Nginx + Redis, 99.99% uptime, expert WordPress support, and flat pricing with no renewal hikes. Plans start at €9/month. You can check current plans here:

See Kiravo hosting plans →

Disclosure: this article contains affiliate links. If you sign up through them, I may earn a commission at no extra cost to you.

Step 2: Enable caching

Caching is the single biggest quick win. Without it, WordPress rebuilds every page from PHP + MySQL on every visit. With it, the server serves a static HTML file in milliseconds.

Page caching

Install a caching plugin:

  • WP Rocket (paid, easiest) — one-click setup, includes minification, lazy loading, and CDN integration.
  • LiteSpeed Cache (free, if your host uses LiteSpeed) — excellent, server-level caching.
  • W3 Total Cache / WP Super Cache (free) — solid, more manual configuration.

If your host provides server-level page caching (Nginx FastCGI cache, Varnish), use that instead of a plugin — it is faster and uses less memory.

Object caching (Redis / Memcached)

Object caching stores database query results in memory so WordPress does not re-run the same queries on every page load. This is especially important for WooCommerce, membership sites, and any site with dynamic content.

Ask your host if Redis is available. If yes, enable it and install a Redis object cache plugin (e.g., “Redis Object Cache” by Till Krüss). If your host does not offer Redis, consider switching to one that does.

Step 3: Optimize images

Images are usually the largest files on a page. A 4 MB hero image can add 3+ seconds to load time. Fix this:

  • Compress images: use ShortPixel, Imagify, or Smush. They compress on upload and can bulk-optimize existing images. Target: under 200 KB for a full-width image.
  • Serve WebP: modern format, 25–35% smaller than JPEG at the same quality. Most optimization plugins generate WebP automatically and serve it to supporting browsers.
  • Lazy loading: images below the fold should not load until the user scrolls to them. WordPress adds loading="lazy" by default since 5.5. Make sure your theme and plugins do not disable it.
  • Correct dimensions: do not upload a 4000px-wide image for a 800px-wide slot. Resize before uploading, or use a plugin that generates responsive sizes.
  • Use a CDN for images: serve images from a CDN (Cloudflare, BunnyCDN) to reduce latency for global visitors.

Step 4: Audit your plugins

Every plugin adds PHP execution time, database queries, and often CSS/JS files. Audit ruthlessly:

  1. Deactivate all plugins. Measure speed. Reactivate one at a time, measuring after each. Identify the slow ones.
  2. Remove plugins you are not actively using. Deactivated plugins still load code in some cases.
  3. Replace heavy plugins with lighter alternatives. Example: replace a page builder with the block editor + a lightweight theme.
  4. Check for duplicate functionality. Two SEO plugins, two caching plugins, or two form plugins = wasted resources.

Use Query Monitor to see which plugins add the most queries and execution time on each page.

Step 5: Clean the database

WordPress accumulates junk over time: post revisions, auto-drafts, trashed posts, expired transients, orphaned metadata. Clean it:

  • Limit revisions: add define('WP_POST_REVISIONS', 5); to wp-config.php. This caps revisions at 5 per post.
  • Use WP-Optimize or Advanced Database Cleaner: removes revisions, transients, and orphaned data. Schedule weekly cleanups.
  • Remove unused tables: when you delete a plugin, it often leaves its tables behind. Check with Advanced Database Cleaner.
  • Optimize tables: run OPTIMIZE TABLE on your database (WP-Optimize does this automatically).

Step 6: Use a CDN

A CDN (Content Delivery Network) serves your static files (images, CSS, JS) from servers close to your visitors. This reduces latency, especially for global audiences. Options:

  • Cloudflare (free tier): the easiest to set up. Change your nameservers, enable caching, and you are done. Free tier includes CDN, basic WAF, and SSL.
  • BunnyCDN: pay-as-you-go, very affordable, excellent performance.
  • KeyCDN / StackPath: established providers with WordPress integration.

Most caching plugins (WP Rocket, W3 Total Cache) have built-in CDN integration. Configure the CDN URL in the plugin settings.

Step 7: Update PHP and WordPress

  • PHP version: upgrade to PHP 8.2 or 8.3 (8.4 if your plugins support it). Each major version is significantly faster. Check compatibility with the “PHP Compatibility Checker” plugin first.
  • WordPress core: keep WordPress updated. New releases include performance improvements (WordPress 6.9 added on-demand block stylesheet loading for classic themes).
  • Themes and plugins: update regularly. Outdated code is slower and less secure.

Step 8: Minify and combine assets

Minification removes whitespace and comments from CSS/JS files, reducing file size. Combining reduces HTTP requests. Most caching plugins (WP Rocket, LiteSpeed Cache) handle this automatically. Be careful: combining can break things if scripts have dependencies. Test thoroughly after enabling.

Also enable GZIP or Brotli compression on your server. This compresses text files (HTML, CSS, JS) before sending them to the browser, reducing transfer size by 60–80%.

Step 9: Optimize fonts and third-party scripts

  • Fonts: use font-display: swap to prevent invisible text. Limit to 2 font families and 2–3 weights. Self-host fonts instead of loading from Google Fonts (reduces DNS lookups). Use WOFF2 format.
  • Third-party scripts: audit every external script (analytics, ads, chat, social embeds). Each one adds a DNS lookup, connection, and download. Remove what you do not need. Load the rest with async or defer.
  • Google Analytics: consider using a lightweight alternative (Plausible, Fathom, or server-side tracking) to reduce JS payload.
  • Embedded content: YouTube embeds load heavy iframe scripts. Use a “facade” — a static thumbnail that loads the iframe only on click.

Step 10: Server-level tuning (advanced)

If you manage your own server or have a quality host, these settings help:

  • OPcache: enable PHP OPcache with sufficient memory (128–256 MB). This caches compiled PHP bytecode so scripts are not re-parsed on every request.
  • Nginx FastCGI cache: cache full pages at the server level. Faster than any plugin-based cache.
  • Redis object cache: as mentioned in Step 2.
  • HTTP/2 or HTTP/3: multiplexed connections reduce latency. Most modern hosts enable this by default.
  • Brotli compression: better than GZIP for text files. Enable if your server supports it.

Quick wins checklist

If you only have 30 minutes, do these:

  1. Run PageSpeed Insights. Note the top 3 issues.
  2. Install a caching plugin (WP Rocket or LiteSpeed Cache). Enable page cache + minification.
  3. Install an image optimization plugin (ShortPixel or Imagify). Bulk-optimize existing images.
  4. Update PHP to 8.2+.
  5. Delete unused plugins and themes.
  6. Enable Cloudflare (free) for CDN + basic caching.
  7. Re-run PageSpeed. Compare scores.

Frequently asked questions

What is a good PageSpeed score?
90+ on mobile is excellent. 70–89 is acceptable. Below 70 needs work. Focus on Core Web Vitals (LCP, INP, CLS) rather than the score alone.

How fast should my WordPress site load?
Under 2 seconds for the full page load. Under 1 second for LCP. Under 200 ms for INP. These are Google’s “good” thresholds.

Does hosting really matter that much?
Yes. If your TTFB is over 600 ms, no amount of caching or image optimization will fix it. Hosting is the foundation. Everything else builds on top.

Will a caching plugin fix everything?
No. Caching helps with page delivery, but it does not fix slow database queries, unoptimized images, or bloated plugins. You need to address all layers.

How often should I optimize?
Set up automated image optimization and database cleanup. Run a full audit quarterly. Monitor Core Web Vitals monthly via Google Search Console.

Is it worth paying for premium caching (WP Rocket)?
Yes, if you are not technical. WP Rocket’s one-click setup saves hours of configuration. Free alternatives (LiteSpeed Cache, W3 Total Cache) work but require more manual tuning.

Conclusion

Speeding up a slow WordPress site is not about one magic fix — it is about addressing each layer: hosting, caching, images, plugins, database, CDN, and code. Start with the biggest impact (hosting + caching + images) and work your way down. Most sites can go from a 40 to a 90+ PageSpeed score in an afternoon.

If your hosting is the bottleneck, no optimization will save you. Consider a host with NVMe storage, server-level caching, and expert WordPress support. For European sites, Kiravo is a solid choice — AMD EPYC + NVMe, Nginx + Redis, 99.99% uptime, flat pricing, and a 30-day money-back guarantee. Plans start at €9/month:

See Kiravo hosting plans →

Remember: speed is not a one-time task. Set up monitoring, automate what you can, and revisit quarterly. Your visitors — and Google — will thank you.


Comments

Leave a Reply

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