How do you improve a site's Core Web Vitals?
Core Web Vitals measures the real user experience with three numbers. Here's what each one means, what most often breaks it, and the order worth fixing things in.
17 March 2026 · 3 min read · Rixio Digital
Core Web Vitals are three numbers Google uses to measure how good a page's experience is for real visitors. That distinction matters: the PageSpeed Insights lab score is a diagnostic tool, but what gets assessed is field data from actual Chrome users.
You'll find it in Google Search Console's Core Web Vitals report. That's where to start - not with the score from a single test on a fast office connection.
The three numbers
LCP - Largest Contentful Paint
How quickly the largest content element appears, usually a hero image or a heading. A good result: under 2.5 seconds.
The main reasons LCP is poor:
- an unoptimised hero image (a multi-megabyte JPEG displayed 800 pixels wide)
- the image is lazy-loaded even though it's visible immediately
- fonts blocking the render
- a slow server response, usually from missing caching
INP - Interaction to Next Paint
How quickly the page responds to something the user does. A good result: under 200 milliseconds.
The main cause is too much JavaScript blocking the main thread. In practice that means third-party scripts: widgets, chat windows, several analytics tools at once, A/B testing scripts.
CLS - Cumulative Layout Shift
How much the layout jumps around while loading. A good result: under 0.1.
The classic causes:
- images and iframes without
widthandheight - ad slots with no reserved height
- a web font swapping in for a system font and shifting the text
- a cookie banner pushing content down
What order to fix things in
The biggest win almost always comes from images. Before you start optimising JavaScript:
- Serve them at the right size. An image displayed 800px wide doesn't need to be 3000px.
- Use a modern format. Moving from JPEG to AVIF or WebP typically saves 40–70% of the file size.
- Declare the dimensions.
widthandheightattributes remove the cause of CLS. - Don't lazy-load what's visible immediately. The hero image should be
fetchpriority="high", notloading="lazy".
Then:
- Cut third-party scripts. Any script you can remove without anything changing was a free loss. Defer the rest.
- Subset the fonts. Load only the weights and character sets you use, set
font-display: swap, and prefer a variable font over several separate files. - Get caching working. Server-side page caching and a CDN for static files both give an immediate win in server response time.
- Reserve space for anything that arrives later. Cookie banners, notifications, widgets.
Two common misreadings
"We score 95." A lab score measures one load on one device. Search Console's field data measures thousands of real visits, including on older phones and mobile data. The two don't have to agree.
"We'll fix speed with a plugin." Caching and optimisation plugins help, but they don't fix having eight third-party scripts on the page and a 4 MB hero image. A plugin covers the symptoms.
How much does it actually matter
Core Web Vitals is one ranking signal among many, and not the strongest. But a slow page loses visitors before they reach the content - and that affects results more than a shift in ranking does. Speed pays for itself even if you leave search engines out of it entirely.
Measure before and after, one change at a time. Otherwise you'll never know which of those eight things actually helped.