
TL;DR
Fix hosting first, then full-page caching plus a CDN, then images, then CSS and JavaScript bloat, then fonts, then the database. Aim for Largest Contentful Paint under 2.5s on mobile. Measure with Search Console field data, not a desktop Lighthouse run.
1. Fix hosting before anything else
No plugin can rescue a $3/month shared host. Move to a host with PHP 8.2+, HTTP/3, object caching and NVMe storage. Server response time (TTFB) should be under 200ms - if it is 800ms, that is 800ms every visitor pays before a single pixel renders.
- Run PHP 8.2 or newer, and confirm your theme and plugins support it.
- Enable object caching (Redis or Memcached) for logged-in and WooCommerce traffic.
- Enable HTTP/3 and Brotli compression at the host or CDN.
- Measure TTFB from your buyers' region, not your own.
2. Add full-page caching and a CDN
Full-page caching turns dynamic PHP rendering into a static HTML response. Pair it with a CDN so that HTML and assets are served from a node near the visitor. This is the single biggest gain per hour of work after hosting.
- Install one caching plugin - never two.
- Enable page cache, browser cache and GZIP/Brotli.
- Serve static assets and images through a CDN.
- Exclude cart, checkout and account pages from the cache.
3. Get images under control
Images are usually the largest asset on the page and the most common Largest Contentful Paint element. Compress, convert and size them correctly and the mobile score often jumps 20-30 points on its own.
- Convert to WebP or AVIF and serve responsive sizes.
- Set explicit width and height on every image to stop layout shift.
- Lazy-load below-the-fold images, but never the hero image.
- Preload the hero image so it starts downloading immediately.
4. Cut CSS and JavaScript bloat
This is where page-builder sites lose. Elementor, WPBakery and heavy themes ship global bundles that most pages never use. Removing what a page does not need beats minifying what it should not load at all.
- Audit with PageSpeed Insights' unused CSS/JS report.
- Load plugin assets only on the pages that use them.
- Defer non-critical JavaScript and inline critical CSS.
- Remove duplicate functionality - one form plugin, one slider, one SEO plugin.
5. Fix fonts
Web fonts commonly add 300-800ms of render delay. Self-host, subset and preload them, and always set font-display: swap so text paints before the font arrives.
- Self-host fonts instead of calling a third-party CDN.
- Limit to two families and the weights you actually use.
- Preload the font used in the hero heading.
- Set font-display: swap to avoid invisible text.
6. Clean the database and cron
Years of revisions, transients, orphaned meta and abandoned plugin tables make every query slower. Combine cleanup with a real cron setup so background jobs are not triggered by visitor page loads.
- Limit post revisions and clear expired transients.
- Remove tables left behind by deleted plugins.
- Replace WP-Cron with a real server cron job.
7. Measure with field data, not lab data
Lighthouse on your desktop tells you very little about what buyers experience. Use the Core Web Vitals report in Search Console and real-user monitoring, and re-test after each change so you know which fix earned the gain.
- Track Core Web Vitals in Search Console monthly.
- Test on mobile 4G throttling, not desktop cable.
- Change one thing at a time and re-measure.
When speed work is not the answer
If a site runs a page builder, twelve overlapping plugins and a theme from 2017, optimization becomes an endless game of patching. At that point a rebuild is usually cheaper than a year of tuning - see our website redesign cost breakdown and the Webflow vs WordPress comparison before you decide.
WordPress speed FAQs
Why is my WordPress site so slow?+
In practice it is almost always one of five things: cheap shared hosting, no page caching, unoptimized images, too many plugins loading scripts on every page, and a page-builder theme shipping large CSS and JavaScript bundles. Hosting and caching usually account for the largest share of the delay.
How fast should a WordPress site be?+
Target Largest Contentful Paint under 2.5 seconds on mobile 4G, Interaction to Next Paint under 200ms, and Cumulative Layout Shift under 0.1. Those are Google's Core Web Vitals thresholds and they are measured on real mobile visits, not desktop lab tests.
Which WordPress caching plugin is best?+
Any well-maintained full-page cache will get you most of the win. WP Rocket is the simplest paid option, LiteSpeed Cache is the strongest if your host runs LiteSpeed, and FlyingPress is excellent for Core Web Vitals. Never run two caching plugins at once.
Does WordPress speed affect SEO?+
Yes, in two ways. Core Web Vitals are a ranking signal, and speed heavily affects bounce rate and conversion - which affect the behavioural signals and revenue that matter more than the ranking bump itself.
Can plugins slow down WordPress?+
Plugin count matters less than plugin behaviour. One badly built slider or form plugin that loads its CSS and JavaScript on every page hurts more than twenty lightweight plugins that load only where they are used.
Want to know what is slowing your site down?
Send us your URL and we will run a Core Web Vitals audit and return a prioritised fix list - free.