Page Speed Guide 15 July 2026 4 min read

7 Core Web Vitals WordPress Fixes That Actually Work

Core Web Vitals scores sit in PageSpeed Insights looking disappointing, and most advice online tells you to install yet another plugin. That rarely fixes anything. The real problems are usually quieter, an unoptimised image, a render-blocking script, a theme loading resources it does not need. These seven fixes address the actual causes, not the symptoms. None of them require a developer on call, but some do require getting into the right settings rather than just clicking buttons.

On this page
  1. 1. Serve images in a modern format
  2. 2. Add width and height attributes to every image
  3. 3. Reduce render-blocking scripts
  4. 4. Use a lightweight theme as your base
  5. 5. Disable Google Fonts if you are loading them remotely
  6. 6. Set up proper caching
  7. 7. Do not ignore the server itself
Share:

1. Serve images in a modern format

JPEG and PNG files are still the default on most WordPress sites. They are also far heavier than they need to be. Converting images to WebP typically cuts file size by 25 to 35 percent without any visible quality loss.

WordPress has supported WebP natively since version 5.8. If your uploads are still coming in as JPEG, the fix is straightforward. Convert on upload using a plugin like Imagify or ShortPixel, or handle it server-side if you have access. Large images are one of the most consistent causes of a slow Largest Contentful Paint score, so this is usually where to start.

2. Add width and height attributes to every image

Cumulative Layout Shift is almost always caused by images that have no declared dimensions. The browser does not know how much space to reserve, so the page reflows as images load. That reflow is what shifts text down under your reader mid-scroll.

WordPress adds width and height attributes automatically for images inserted through the media library. The problem is usually with images added via page builders, custom HTML blocks, or hardcoded in a theme template. Check those manually. It takes ten minutes and the CLS improvement is immediate.

3. Reduce render-blocking scripts

Every JavaScript file that loads in the <head> without a defer or async attribute holds the browser up before it can paint anything visible. On some themes, there are six or seven of these.

The fix is to audit what is actually loading and defer anything that does not need to run before the page displays. Most contact form scripts, sliders and analytics tags can be deferred safely. The technical side of this is not glamorous, but it is one of the highest-impact changes you can make for both LCP and INP.

4. Use a lightweight theme as your base

Themes are where a lot of hidden weight lives. A popular commercial theme can load dozens of CSS files, register multiple JavaScript libraries, and pull in font packages you never asked for. All of that runs whether you use those features or not.

Themes like GeneratePress or Kadence are built to be lean by default. Switching is not always practical mid-project, but if you are starting fresh or rebuilding, the theme choice shapes every performance decision that follows. A bloated base is genuinely hard to work around, however much you optimise on top of it. For a deeper look at why this matters, what sits under the hood of a theme is worth understanding before you commit to one.

5. Disable Google Fonts if you are loading them remotely

Google Fonts served from Google’s CDN add a DNS lookup, a connection, and a stylesheet request before any font file arrives. On a fast connection that is barely noticeable. On a slower mobile connection, it shows up clearly in your Time to First Byte and LCP.

The straightforward fix is to host the font files locally. Download the files, add them to your theme, and serve them from your own server. There is no visual difference for the visitor. The performance difference is measurable, and it also removes a third-party dependency that occasionally causes privacy-related issues for European visitors under GDPR.

6. Set up proper caching

Without caching, WordPress builds every page from scratch on each request. That means a database query, PHP processing, and a full HTML build every single time someone visits. For a small site with modest traffic, it is unnecessary overhead.

A solid caching plugin like WP Rocket or W3 Total Cache stores a pre-built HTML version of each page and serves that instead. The difference in server response time is significant. Pair it with browser caching headers so returning visitors are not re-downloading the same assets on every visit.

7. Do not ignore the server itself

All the optimisation work above has a ceiling. If the server itself is slow, a poor Time to First Byte (TTFB) drags every other metric down with it. Google’s own guidance counts TTFB as part of the LCP diagnostic chain, not a separate concern.

Shared hosting on an overloaded server is often the quiet cause behind scores that refuse to improve no matter what plugins you add. Moving to a faster host, or switching to a managed WordPress host with server-level caching, often does more for Core Web Vitals than anything else on this list. It is also the fix most people put off longest because it feels like a bigger decision. In practice, it is usually the one that actually moves the needle.

Share:

Ready to take the next step?

Get in touch today and find out how we can help.

Get In Touch
Privacy Overview

Yorkshire Design uses cookies so that we can provide you with the best user experience possible.

Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.