How to Speed Up a WordPress Blog: Core Web Vitals Fixes That Actually Matter

T
Tommy
8 min readNov 2, 2026Updated Nov 2, 2026
Woman with glasses at a home office desk looking thoughtfully at her laptop while waiting for a page to load

Most advice on how to speed up a WordPress blog is a flat list of twenty tweaks, all presented as equally important. They aren't. On a typical content blog, three or four changes account for nearly all of the improvement, and the rest is noise you can safely ignore.

This guide is organised around the three Core Web Vitals, because those are what Google measures and what your readers actually feel. For each one you get the likely causes on a blog and the fixes in priority order. It complements our WordPress SEO checklist (on-page and technical SEO) and our Yoast vs Rank Math vs All in One SEO comparison, so we won't repeat either here.

Quick answer: Measure first, then work in this order: (1) fix your hero image and enable page caching for LCP, (2) cut third-party scripts and plugin bloat for INP, (3) reserve space for images, fonts, ads and embeds for CLS. Then re-test. Skip database "optimisers" and minification tweaks until those three are done.

The three metrics in plain English

Google judges each metric on the 75th percentile of real visitor visits, so "passing" means three out of four visits are good.

MetricWhat it measuresGoodUsual culprit on a blog
LCP (Largest Contentful Paint)How fast the main content appears2.5s or lessOversized hero image, slow server, no caching
INP (Interaction to Next Paint)How fast the page reacts to taps and clicks200ms or lessHeavy JavaScript, ad and tracking scripts, chat widgets
CLS (Cumulative Layout Shift)How much the page jumps around while loading0.1 or lessImages without dimensions, late-loading ads and embeds, font swaps

Core Web Vitals are one ranking signal among many, and relevance and content quality still outweigh them. Treat speed as a way to stop losing readers and to remove a handicap, not as a shortcut to page one.

Step 0: Measure before you change anything

You need two kinds of data, and they answer different questions.

  • Field data is what real visitors experienced. Open the Core Web Vitals report in Google Search Console. It groups your URLs into good, needs improvement and poor, and it is based on a rolling 28-day window, so changes take weeks to show up there.
  • Lab data is a simulated test you can repeat instantly. Run a representative post (not just your homepage) through PageSpeed Insights. The top section shows field data if your page has enough traffic; the Lighthouse section below it is the lab test.

Use Search Console to decide what is broken and PageSpeed Insights to find out why and to check fixes the same day. Note that lab tests can't measure INP directly, so a green lab score doesn't guarantee a good INP. Always check mobile first, since that's where blogs usually fail.

Fix LCP: make the main content appear fast

On a blog post the LCP element is almost always the featured image or the headline block. Work down this list.

1. Fix the hero image

This is the single biggest win on most blogs. Upload images at roughly the largest size they'll display, not straight from a camera. Use WebP, which WordPress supports natively (AVIF too, on recent versions), and compress on upload with a plugin such as ShortPixel, Imagify or EWWW. WordPress already generates responsive srcset sizes, so make sure your theme isn't overriding them with a full-size file.

Just as important, do not lazy-load the hero image. Lazy loading is great for images further down the page, but it delays the one image that decides your LCP. Recent WordPress versions skip lazy loading for the first content image and prioritise it, but some themes and optimisation plugins undo this, so check your page source.

2. Turn on page caching

Without caching, WordPress builds each page from scratch on every request. A cache serves a ready-made copy instead. Many managed hosts include server-level caching; if yours does, you may not need a plugin at all. Otherwise pick one:

  • WP Rocket (paid): the easiest all-in-one option if you don't want to tinker.
  • LiteSpeed Cache (free): the best choice if your host runs LiteSpeed servers.
  • WP Super Cache or W3 Total Cache (free): fine for simple setups; W3 Total Cache has far more options than most bloggers need.

Run only one caching plugin. Two will fight each other and can make things slower.

3. Check your server response time

If PageSpeed Insights flags a slow server response (time to first byte) even with caching on, the bottleneck is your hosting, not your settings. Cheap shared plans on crowded servers are the usual cause. Moving to a better host is a bigger job than installing a plugin, but when hosting is the problem, nothing else will compensate for it.

4. Add a CDN if your readers are spread out

A content delivery network serves your images and files from locations closer to each reader. Cloudflare has a free tier that works well with WordPress. It helps most when your audience is international; for a blog read mostly in one country, it's a smaller gain.

Fix INP: keep the page responsive

INP replaced First Input Delay as the responsiveness metric. A poor INP on a blog almost always means too much JavaScript competing for the browser's attention.

5. Cut theme and plugin bloat

Every active plugin can add scripts to every page, even pages that don't use it. Audit your plugin list: delete anything you don't use, and replace heavy plugins with lighter ones or a few lines of code. Sliders, page-builder add-ons, popup builders and social-sharing bundles are the usual offenders.

The theme matters too. A lightweight theme such as GeneratePress, Astra or Kadence ships far less code than a multipurpose theme with a built-in page builder. Switching themes is a large change, so do it only if your test results point at the theme. When choosing an SEO plugin, the comparison linked above covers the trade-offs.

6. Tame third-party scripts

Analytics, tag managers, chat widgets, heatmaps and ad scripts are frequently the biggest INP drag, and they sit outside WordPress, so caching won't help. Remove anything you don't look at, load the rest only on the pages that need it, and use your caching plugin's option to delay JavaScript until the first user interaction if it offers one. Re-test afterwards, because delaying scripts can occasionally break menus or forms.

Fix CLS: stop the page jumping

Layout shift is the most annoying problem for readers, because it makes them tap the wrong thing. The fixes are usually small.

7. Give every image a size

Images need width and height attributes so the browser can reserve space before they load. WordPress adds these automatically for images inserted through the editor, but custom theme code and some embeds skip them.

8. Reserve space for ads and embeds

Ads, YouTube players, social-media embeds and newsletter pop-ins that load late push your text down. Set a minimum height on their containers so the space is already held. If you run ads, this is the fix that usually matters most, and ad networks often publish guidance for it. Also avoid injecting banners above existing content after the page has rendered.

9. Handle fonts sensibly

Web fonts cause a shift when the fallback font is swapped for the real one. Use at most two font families and a few weights, host them on your own domain (the OMGF plugin automates this for Google Fonts), preload the main one, and set font-display: swap. Pick a fallback font with similar proportions so the swap barely moves anything.

What not to bother with

Plenty of popular tips look busy but rarely move your Core Web Vitals on a blog:

  • Database cleanup plugins. Trimming revisions and transients can keep your admin tidy, but it seldom changes front-end load time for visitors. Do it occasionally, not as a performance strategy.
  • Aggressive minification and file combining. Minifying CSS and JavaScript is a small gain, and combining files matters little on modern HTTP/2 hosting. Pushing these settings hard is a common cause of broken layouts.
  • Chasing a perfect 100 in PageSpeed Insights. The score is a lab estimate. Passing the three metrics in your field data is the goal, and the last few points cost a lot of effort.
  • Stacking several optimisation plugins. One caching plugin and one image plugin is plenty. More overlap means more conflicts.
  • Optimising pages nobody visits. Start with the templates and posts that bring in most of your traffic.

A simple order of attack

  1. Check Search Console to see which metric fails and on which page groups.
  2. Run one representative post through PageSpeed Insights on mobile.
  3. Fix the hero image and enable caching (LCP).
  4. Remove unneeded plugins and delay or drop heavy third-party scripts (INP).
  5. Add image dimensions, reserve ad and embed space, and tidy fonts (CLS).
  6. Re-run PageSpeed Insights to confirm, then wait a few weeks and check Search Console again.

Change one thing at a time where you can, so you know what worked. Because field data lags, a fix that works in the lab may take up to a month to show as green in Search Console. That's normal; don't keep stacking changes while you wait.

Conclusion

Speeding up a WordPress blog is mostly about doing a few things well: a properly sized hero image, solid caching, fewer scripts, and layouts that hold their shape. Measure, fix the failing metric, and confirm the result. Ignore the rest of the checklist until the numbers say you need it.

Key takeaways:

  • Work by metric: LCP for loading, INP for responsiveness, CLS for visual stability.
  • Fix the hero image and enable page caching first; that's where most blogs gain the most.
  • Third-party scripts and plugin bloat drive poor INP, and caching can't fix them.
  • Reserve space for images, ads, embeds and fonts to prevent layout shift.
  • Use Search Console for field data and PageSpeed Insights for diagnosis, and be patient with the 28-day lag.

Open PageSpeed Insights on your best-performing post today, find the metric that's failing, and fix just that one first.