The Ultimate WordPress Performance Guide
Practical techniques to dramatically improve your WordPress site's loading speed, Core Web Vitals and search rankings.
In this guide
Why WordPress speed matters
WordPress powers over 40% of the web, but many WordPress sites are painfully slow. The platform itself isn't the problem — it's how sites are configured, hosted and loaded with plugins that creates performance issues.
Speed directly affects three things that matter to every business: search rankings, conversion rates and user satisfaction. Google uses page speed as a ranking factor, and their research shows that as page load time goes from one second to three seconds, the probability of a visitor bouncing increases by 32%. At five seconds, that number jumps to 90%.
The good news is that most WordPress performance problems are fixable with straightforward changes. This guide walks through the most impactful optimisations, roughly ordered by how much difference they'll make.
How to measure your site's speed
Before optimising anything, establish a baseline. You need to know where you're starting and be able to measure improvement. Three tools provide the most useful data:
- Google PageSpeed Insights — Tests your site against Google's Core Web Vitals metrics (LCP, FID, CLS) and provides both lab and field data. This is the closest view to what Google's ranking algorithm sees.
- GTmetrix — Provides a detailed waterfall showing exactly what loads, in what order and how long each resource takes. Excellent for identifying specific bottlenecks.
- WebPageTest — Advanced testing with options for different locations, connection speeds and browsers. Useful for understanding performance from different geographic regions.
Run your homepage and your most important landing pages through all three. Note your scores, Largest Contentful Paint (LCP), and total page weight. These are your benchmarks.
Start with the right hosting
No amount of optimisation will overcome a slow server. If your WordPress site is on cheap shared hosting — where your site shares CPU, RAM and disk with hundreds of other sites — you're fighting an uphill battle from the start.
The server response time (Time to First Byte, or TTFB) sets the floor for how fast your site can possibly load. On quality hosting, TTFB should be under 200ms. On overloaded shared hosting, we've seen TTFB over 2 seconds — before a single image or stylesheet has even started loading.
For WordPress specifically, look for hosting that includes: PHP 8.2+ with OPcache enabled, SSD or NVMe storage (never spinning disks), server-level caching (Redis or Memcached), and HTTP/2 or HTTP/3 support. These aren't premium features any more — they're baseline requirements for a performant WordPress site.
Overtone Managed WordPress Hosting
Our hosting is optimised specifically for WordPress — PHP 8.2+, Redis caching, Cloudflare CDN and daily backups included. From £29/month.
View Hosting PlansCaching — the single biggest win
WordPress generates every page dynamically — each visit triggers PHP execution, database queries and template rendering. Caching stores the finished result so subsequent visitors get a pre-built page instantly instead of waiting for WordPress to rebuild it from scratch.
There are several layers of caching, and ideally you want all of them working together:
Page caching stores the complete HTML output of each page. This is the most impactful cache layer. Without it, every single page view triggers the full WordPress rendering pipeline. With it, most visitors get a static HTML file served in milliseconds. Server-level page caching (like Nginx FastCGI cache or Varnish) is faster than plugin-based caching, but plugins like WP Super Cache or W3 Total Cache work well when server-level isn't available.
Object caching stores the results of database queries in memory (Redis or Memcached) so WordPress doesn't have to re-query the database for frequently accessed data. This is especially important for sites with complex queries, WooCommerce stores, or membership sites where page caching is less effective due to personalised content.
Browser caching tells visitors' browsers to store static files (CSS, JS, images) locally so they don't need to download them again on subsequent page views. This is configured via HTTP headers — specifically Cache-Control and Expires headers. Most caching plugins handle this automatically.
Image optimisation
Images typically account for 50-80% of a page's total weight. This is almost always the easiest place to make dramatic improvements. There are three aspects to image optimisation:
Format — WebP images are typically 25-35% smaller than equivalent JPEG files with no visible quality loss. Most modern browsers support WebP. Use JPEG as a fallback for older browsers. PNG should only be used when you genuinely need transparency — never for photographs.
Dimensions — Never upload a 4000px wide image when it will only ever display at 800px. Resize images to the maximum size they'll be displayed at, accounting for retina displays (so roughly 2x the CSS display size). WordPress generates multiple sizes automatically, but the original upload still affects storage and backup size.
Compression — Even correctly sized images benefit from compression. Tools like ShortPixel, Imagify or Smush can compress images on upload with minimal quality impact. We typically see 40-70% file size reduction with lossy compression at quality level 80-85.
Lazy loading — Images below the fold (not visible when the page first loads) should use lazy loading. WordPress 5.5+ adds lazy loading automatically to images in post content, but theme images and above-the-fold content should load immediately — lazy loading your hero image actually makes things slower.
CDN setup
A Content Delivery Network stores copies of your site's static files on servers around the world, serving them from whichever location is closest to each visitor. For a UK-hosted site visited by someone in Australia, a CDN can reduce asset load times from 300ms to under 50ms.
Cloudflare is our standard recommendation for WordPress CDN. The free tier includes global CDN, automatic HTTPS, basic DDoS protection and DNS management. The Pro tier adds image optimisation (Polish and WebP conversion), enhanced caching controls and a web application firewall.
When configuring Cloudflare for WordPress, set the caching level to "Standard", enable "Auto Minify" for HTML, CSS and JavaScript, and create a page rule to cache everything on your static asset paths. Be careful with caching on pages that have dynamic content (logged-in users, shopping carts, forms) — these need to bypass the cache.
Cloudflare CDN
Free global CDN with DDoS protection and automatic HTTPS. We pair it with every WordPress site we manage.
Try Cloudflare Free →Database optimisation
Over time, WordPress databases accumulate overhead: post revisions, trashed items, transient options, orphaned metadata and spam comments. On sites that have been running for years, this can slow down database queries significantly.
Regular database maintenance should include: removing old post revisions (keep the most recent 3-5), clearing transient options, deleting trashed posts and spam comments, and optimising database tables. Plugins like WP-Optimize handle this automatically on a schedule.
For sites with large databases (50,000+ posts, WooCommerce stores with thousands of orders), adding proper database indexes can dramatically improve query performance. This is a task for a developer, not a plugin — incorrect indexes can actually make things worse.
Code and plugin audit
Every plugin you install adds code that WordPress must load on every page view. Many plugins load their CSS and JavaScript files globally, even on pages where they're not needed. A contact form plugin loading its styles on your blog posts, or a slider plugin loading its JavaScript on your About page, is wasted bandwidth.
Audit your plugins regularly. For each one, ask: is this still needed? Is there a lighter alternative? Can its assets be conditionally loaded only on pages where it's used? Plugin managers like Asset CleanUp or Perfmatters let you disable specific plugin assets on specific pages.
Theme code matters too. Generic multipurpose themes (like Avada, Divi, or Elementor-based themes) often load 500KB-2MB of CSS and JavaScript on every page, regardless of which features you actually use. A custom-built theme that only includes the code your site needs will always outperform a generic theme.
PHP version
PHP 8.2 is significantly faster than PHP 7.4, which is faster than PHP 7.0, which is faster than PHP 5.6. Each major version brings substantial performance improvements — upgrading from PHP 7.4 to 8.2 can improve page generation time by 15-25% with zero other changes.
Check your current PHP version in the WordPress dashboard under Tools > Site Health. If you're running anything below PHP 8.1, upgrading is one of the simplest performance wins available. Make sure your plugins and theme are compatible first — most modern plugins support PHP 8.2, but older or abandoned plugins may not.
Quick-win checklist
If you want to improve your WordPress site's speed today, work through these items in order:
- Upgrade to PHP 8.2+ (check with your host)
- Install and configure a caching plugin (WP Super Cache is the simplest)
- Set up Cloudflare (free tier) for CDN and automatic HTTPS
- Install an image compression plugin (ShortPixel or Imagify)
- Delete unused plugins and deactivated themes
- Run WP-Optimize to clean your database
- Check your page weight in GTmetrix — aim for under 2MB total
- Test your Core Web Vitals in PageSpeed Insights — aim for all green
If your site still isn't fast enough after these steps, the problem is almost certainly your hosting, your theme, or a specific heavy plugin. That's where professional optimisation help becomes worthwhile — we've rescued many sites from 8+ second load times down to under 2 seconds.

