Google uses three metrics โ LCP (loading), CLS (visual stability), and INP (responsiveness) โ to score your site's experience. Hit "Good" on all three and your rankings improve. The biggest single win for most sites: compress and properly size your hero images.
In May 2021, Google introduced Core Web Vitals as an official ranking factor. They're a real influence on search rankings, but more importantly they directly measure whether real visitors have a good experience on your site.
This guide walks through what each metric means in plain English โ and what you can actually do about each one.
The three Core Web Vitals
Three specific performance measurements that Google considers most important:
- LCP โ Largest Contentful Paint (loading speed)
- CLS โ Cumulative Layout Shift (visual stability)
- INP โ Interaction to Next Paint (responsiveness)
These replaced FID (First Input Delay) with INP as of March 2024.
The 80/20 rule for Core Web Vitals
For most sites, image optimization alone gets you from "Poor" to "Good" on LCP โ the single biggest ranking factor of the three. Start there.
LCP: Largest Contentful Paint
LCP measures how long it takes for the largest visible element on the page to finish loading. This is usually a hero image, a large video poster, or a large block of text.
Target: Under 2.5 seconds Needs improvement: 2.5s โ 4s Poor: Over 4s
What affects LCP most?
- Slow server response โ High Time to First Byte (TTFB) delays everything downstream
- Render-blocking resources โ CSS and JavaScript that block the browser from rendering
- Unoptimized images โ Large, uncompressed hero images are the most common LCP offender
- Client-side rendering โ SPAs that render everything in JavaScript have slower LCP
How to improve LCP
- Compress your hero image โ Use WebP format, max 1920px wide, quality 75โ80%. Compress images here
- Add
loading="eager"andfetchpriority="high"to your hero image - Use a CDN โ Content Delivery Networks serve assets from servers close to the user
- Preload critical resources โ Use
<link rel="preload">for your LCP image - Remove render-blocking CSS โ Inline critical CSS and defer non-critical stylesheets
CLS: Cumulative Layout Shift
CLS measures how much the page layout unexpectedly shifts while loading. Have you ever tried to click a button only for something to pop in above it and your click lands on the wrong element? That's a layout shift.
Target: Under 0.1 Needs improvement: 0.1 โ 0.25 Poor: Over 0.25
Common causes of CLS
- Images without dimensions โ If the browser doesn't know an image's size, it can't reserve space and the layout shifts when the image loads
- Ads without reserved space โ Ad slots that inject content push everything else down
- Web fonts causing FOUT โ Flash of Unstyled Text when a web font loads and changes text size
- Dynamically injected content โ Banners, cookie notices, and "back to top" buttons that appear without reserved space
How to improve CLS
- Always specify
widthandheighton<img>elements - Reserve space for ads โ Use CSS to set a fixed height for ad slots
- Use
font-display: optionalorfont-display: swapfor web fonts - Avoid inserting content above existing content โ Place banners and notices at the bottom or off-canvas
INP: Interaction to Next Paint
INP replaced FID (First Input Delay) in March 2024. It measures the responsiveness of your page to user interactions (clicks, taps, keyboard input). Specifically, it measures the time from when a user interacts to when the browser updates the display in response.
Target: Under 200ms Needs improvement: 200ms โ 500ms Poor: Over 500ms
What affects INP?
- Long JavaScript tasks โ Heavy computations that block the main thread
- Excessive DOM size โ Large HTML documents take longer to update
- Third-party scripts โ Analytics, ads, and chat widgets running JS on user interactions
- Unoptimized event handlers โ Inefficient code running in click/input handlers
How to improve INP
- Break up long tasks โ Use
setTimeout,requestIdleCallback, orscheduler.postTask() - Minimize third-party scripts โ Audit every third-party script; remove anything non-essential
- Debounce input handlers โ Don't run expensive operations on every keystroke
- Use
content-visibility: autoโ Defers rendering off-screen content
How to Measure Core Web Vitals
Google PageSpeed Insights (Free)
The easiest option โ paste your URL at pagespeed.web.dev and get both lab and field data with specific recommendations.
Chrome DevTools
Open DevTools โ Performance tab โ run a recording. The Performance panel shows LCP, CLS, and INP events.
Google Search Console
The "Core Web Vitals" report shows real-user data for your site across all URLs. This is field data, which is what Google actually uses for ranking.
Lighthouse (in Chrome DevTools)
Open DevTools โ Lighthouse tab โ run an audit. Provides a score and specific opportunities to improve.
Prioritizing Improvements
Not all improvements are equal. Focus first on:
- Image compression โ The biggest single win for most sites. Use our image compressor
- Adding image dimensions โ Prevents CLS, takes 5 minutes
- Removing unnecessary third-party scripts โ Often doubles performance
- Using a CDN โ Dramatically improves TTFB globally
The best tools and good hosting take you most of the way. Use our free Meta Tag Generator to also make sure your metadata is optimized for search rankings.
