- Three metrics: LCP (loading, 2.5s or less), INP (responsiveness, 200ms or less) and CLS (stability, 0.1 or less).
- Google judges them on real visitors' data, at the 75th percentile, separately for mobile and desktop.
- Most slow business sites come down to oversized images, too many scripts and slow hosting.
- Fix by template, not page by page: one change to a template fixes every page that uses it.
What are Core Web Vitals?
Core Web Vitals are three measurements Google uses to describe the experience of loading and using a page: how quickly the main content appears, how quickly the page responds when someone interacts with it, and how much the layout jumps around while it loads.
They matter for two reasons. Google uses them as part of its page experience signals in ranking, though relevance and content quality matter far more. And they measure real frustration: a slow, jumpy page loses visitors before they read a word.
| Metric | What it measures | Good | Needs improvement | Poor |
|---|---|---|---|---|
| Largest Contentful Paint (LCP) | Loading: when the largest image or text block becomes visible | 2.5s or less | 2.5–4s | Over 4s |
| Interaction to Next Paint (INP) | Responsiveness: how quickly the page reacts to taps, clicks and key presses | 200ms or less | 200–500ms | Over 500ms |
| Cumulative Layout Shift (CLS) | Visual stability: how much content moves unexpectedly | 0.1 or less | 0.1–0.25 | Over 0.25 |
INP replaced First Input Delay (FID) as a Core Web Vital in March 2024.
To pass, a page needs to be "Good" on all three, measured at the 75th percentile of real visits. In other words, three out of four visits must have a good experience. Mobile and desktop are assessed separately, and mobile is usually the harder one.
How to check your Core Web Vitals
There are two kinds of data, and the difference matters.
- Field data comes from real Chrome users visiting your site (the Chrome User Experience Report). This is what Google uses. It needs enough traffic to be reported, and reflects the last 28 days.
- Lab data comes from a simulated test, such as Lighthouse. It's useful for diagnosing problems and testing fixes, but it isn't what Google judges you on.
| Tool | Shows | Use it to |
|---|---|---|
| Search Console, Core Web Vitals report | Field data, grouped by similar URLs, for mobile and desktop | See which page groups fail, and which metric |
| PageSpeed Insights | Field data (if available) plus a Lighthouse lab test | Diagnose a specific page and see suggested fixes |
| Chrome DevTools (Lighthouse and Performance tabs) | Lab data | Dig into what loads, when, and what blocks it |
Start with Search Console. It groups pages that share a template, so you can see, for example, that every blog post has a poor LCP on mobile. Then test one example page from each failing group in PageSpeed Insights.
If your site doesn't get enough traffic for field data, use the lab results as your guide and aim for the same thresholds.
Why is my website slow?
Most slow business websites come down to the same handful of causes:
| Cause | Typical sign | Usually affects |
|---|---|---|
| Oversized images | Hero images several megabytes in size; slow LCP | LCP |
| Too many scripts | Chat widgets, trackers, sliders, page-builder code; sluggish taps | INP, LCP |
| Slow hosting or no caching | Slow server response (time to first byte) on every page | LCP |
| Web fonts loading late | Text appears late or swaps style | LCP, CLS |
| Images and embeds without dimensions | Content jumps as images load | CLS |
| Banners and pop-ups inserted at the top | The page shifts down after loading | CLS |
| Heavy theme or page builder | Large amounts of CSS and JavaScript on every page | All three |
If your site loads quickly for you but slowly for others, it's often because your browser has cached it, or you're near the server. Test in a private window, on a phone, using mobile data.
How to improve LCP (loading)
LCP is usually the hero image or the main heading at the top of the page.
- Compress and resize images. Serve images at the size they're displayed, in a modern format such as WebP or AVIF. A hero image rarely needs to be more than a few hundred kilobytes.
- Don't lazy-load the main image. Lazy loading is good for images further down the page, but the LCP image should load straight away. You can also mark it as high priority (
fetchpriority="high"). - Speed up the server. Use page caching, a content delivery network (CDN) and decent hosting. A slow server delays everything else.
- Reduce render-blocking CSS and JavaScript. Load non-essential scripts later (
deferorasync), and remove what isn't used. - Load fonts efficiently. Use fewer font files, host them yourself or preload the main one, and use
font-display: swap.
How to improve INP (responsiveness)
Poor INP means the page is busy running JavaScript when someone taps or clicks.
- Remove scripts you don't need. Audit your tag manager and plugins: old tracking pixels, unused chat tools and duplicate analytics all add work.
- Delay third-party scripts such as chat widgets until the visitor interacts, or until after the page has loaded.
- Lighten heavy components: sliders, animations and complex menus often run a lot of code.
- Break up long tasks in custom JavaScript, so the browser can respond in between (a job for your developer).
How to improve CLS (stability)
- Set width and height on images, videos and iframes, so the browser reserves the space before they load.
- Reserve space for anything injected later, such as cookie banners, announcement bars and embeds. Banners that overlay the page don't cause shifts; ones that push content down do.
- Avoid inserting content above existing content after the page has loaded.
- Load fonts in a way that doesn't change text size dramatically when they swap in.
Fix by template, not page by page
Most sites have a few templates: homepage, service page, blog post, contact page. Core Web Vitals problems usually live in the template, not in individual pages, which is why Search Console groups URLs together. Fix the template once and every page using it improves.
A sensible order:
- The template with the most traffic that's failing on mobile
- The failing metric with the biggest gap from "Good"
- The biggest single cause for that metric (often one image or one script)
After deploying a fix, retest in PageSpeed Insights straight away (lab data), then use Validate fix in Search Console's report. Field data takes up to 28 days to reflect the change.
On WordPress, see our guide to speeding up WordPress for platform-specific fixes.
How much do Core Web Vitals matter for SEO?
They matter, but less than relevance and content. Google's guidance is that page experience signals help it choose between pages of similar relevance and quality; a great experience won't make up for a page that doesn't answer the search. Treat good Core Web Vitals as part of a well-run site, and because faster pages keep more visitors, not as a ranking shortcut.
Questions
What are the three Core Web Vitals?
Largest Contentful Paint (loading), Interaction to Next Paint (responsiveness) and Cumulative Layout Shift (visual stability). INP replaced First Input Delay in March 2024.
What is a good Core Web Vitals score?
LCP of 2.5 seconds or less, INP of 200 milliseconds or less, and CLS of 0.1 or less, for at least 75% of real visits, measured separately on mobile and desktop.
Why is my website so slow?
Most often: oversized images, too many third-party scripts, slow hosting without caching, or a heavy theme or page builder. Test a key page in PageSpeed Insights to see which applies.
How do I improve my website speed?
Compress and resize images, add caching and a CDN, remove unused scripts and plugins, delay third-party widgets, and set dimensions on images and embeds. Fix the templates your busiest pages use first.
How long does it take for Core Web Vitals to update?
Search Console's field data covers the previous 28 days, so improvements take up to four weeks to show fully. PageSpeed Insights lab tests show the effect of a fix immediately.
Every guide is checked against the platform it describes before it’s published, and re-checked when the platform changes.