Since 2021, Google has officially included Core Web Vitals in its search rankings. A slow site = a lower position. But what exactly should you measure and how do you fix it? Here's the complete guide.
What Are Core Web Vitals?
Core Web Vitals (CWV) are a set of metrics measuring the user experience on a webpage. Google uses them as a ranking signal as part of Page Experience.
Three main metrics:
- LCP (Largest Contentful Paint) — time to render the largest element on the page
- INP (Interaction to Next Paint) — responsiveness to user interactions
- CLS (Cumulative Layout Shift) — layout stability (do elements "jump" around?)
LCP — Largest Contentful Paint
What Does It Measure?
The time from page load to the rendering of the largest visible element (typically a hero image, hero text, or banner).
Thresholds:
- ✅ Good: < 2.5 seconds
- ⚠️ Needs improvement: 2.5 – 4 seconds
- ❌ Poor: > 4 seconds
How to Improve LCP?
1. Preload critical resources
<link rel="preload" href="/en/hero.webp" as="image" fetchpriority="high">
2. Optimise images
- Convert to AVIF or WebP (50–80% smaller file size)
- Use appropriate sizes (
srcset,sizes) - Never load 2000px-wide images when they display at 400px
3. Eliminate render-blocking resources
- Critical CSS inline, the rest loaded asynchronously
- JavaScript asynchronous (
async,defer) - Fonts preloaded with
font-display: swap
4. Preconnect to external domains
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="dns-prefetch" href="https://www.googletagmanager.com">
5. Use a CDN Serve static assets from a CDN close to the user. For Europe — a server in Western Europe.
INP — Interaction to Next Paint
What Does It Measure?
The time from a user interaction (click, touch, keyboard) to the rendering of a visual response on screen.
Replaced FID (First Input Delay) in March 2024.
Thresholds:
- ✅ Good: < 200 ms
- ⚠️ Needs improvement: 200 – 500 ms
- ❌ Poor: > 500 ms
How to Improve INP?
1. Reduce long JavaScript tasks
Tasks blocking the main thread for > 50ms are the main culprit. Break them into smaller pieces using scheduler.yield() or setTimeout(0).
2. Defer non-critical JavaScript Analytics, chat widgets, social media widgets — load them after interaction or at idle:
window.addEventListener('load', () => {
requestIdleCallback(() => loadThirdParty())
})
3. Use web workers Move heavy computations (sorting, filtering large lists) to a web worker — doesn't block the UI.
4. Virtualise long lists A list of 10,000 products in the DOM is a disaster. Render only visible elements (react-window, tanstack-virtual).
CLS — Cumulative Layout Shift
What Does It Measure?
The sum of all unexpected layout shifts during page load.
Thresholds:
- ✅ Good: < 0.1
- ⚠️ Needs improvement: 0.1 – 0.25
- ❌ Poor: > 0.25
How to Improve CLS?
1. Always set width and height on images
<!-- Bad -->
<img src="hero.jpg" alt="Hero">
<!-- Good -->
<img src="hero.jpg" alt="Hero" width="800" height="600">
The browser reserves space before the image loads.
2. Reserve space for ads and embeds
.ad-container { min-height: 250px; }
3. Avoid dynamically inserting content above the fold Cookie banners, notifications, promotional banners — they should appear at the bottom or push content down from the top.
4. Use font-display: optional or preload fonts
Font swapping can cause CLS when the font loads late and changes text metrics.
Tools for Measuring Core Web Vitals
1. PageSpeed Insights (PSI)
pagespeed.web.dev — free, gives both lab data and real user data from Chrome (CrUX).
2. Google Search Console
The "Core Web Vitals" report shows data from real users of your site. Important: PSI covers one URL, Search Console covers your entire site.
3. Lighthouse
Built into Chrome DevTools (F12 → Lighthouse). Great for quick analysis.
4. WebPageTest
webpagetest.org — more detailed waterfall, recording filmstrip, multiple server locations.
5. CrUX Dashboard (Looker Studio)
A free Google template for tracking CWV trends over time for your domain.
Typical Results Before and After Optimisation
Example e-commerce project (WooCommerce):
| Metric | Before | After Optimisation |
|---|---|---|
| LCP | 5.2s | 1.8s |
| INP | 420ms | 85ms |
| CLS | 0.18 | 0.02 |
| PSI Mobile | 42 | 91 |
| PSI Desktop | 67 | 98 |
Optimisation time: 3 weeks.
Core Web Vitals and SEO — What the Data Shows
Research from Ahrefs and Semrush indicates that:
- Sites with "good" CWV have a 24% higher CTR than sites with "poor" scores
- Improving LCP by 0.1s = 1% increase in conversions (per Google)
- 53% of mobile users abandon a page that takes > 3 seconds to load
Summary: Prioritising Fixes
If you don't know where to start:
- LCP first — strongest impact on SEO and conversion
- Then CLS — frustrates users, relatively easy to fix
- Finally INP — requires code analysis, but improves UX
Optimising Core Web Vitals is an investment with a direct impact on Google visibility and conversion. At Soft Synergy every site we deliver starts with a 90+ PageSpeed score — that's our standard, not an option.