Core Web Vitals are Google’s three measurements of what a page feels like to use: how fast the main content shows up, how quickly the page answers when you click, and whether things move around under your finger while it loads. They have been part of Google’s ranking signals since 2021. This page explains each one and what actually moves it.
In short
- LCP is loading. Aim for under 2.5 seconds.
- INP is responsiveness. Aim for 200 milliseconds or less.
- CLS is visual stability. Aim for 0.1 or less.
- Fix the largest image first. It is the most common cause of a poor LCP.
LCP, Largest Contentful Paint
LCP measures when the biggest thing on screen has finished loading. Not when the page starts appearing, and not when everything is done, but the moment the visitor can see the thing they came for.
Usually that biggest thing is an image: a hero image, a featured image, a background image set in CSS. Sometimes it is a large block of text.
Target: under 2.5 seconds.
What moves it, roughly in order of how often it is the answer:
- Make the main image lighter. Compress it, serve it as WebP, and size it to how large it actually displays. A 4000 pixel photo shown 800 pixels wide is still a 4000 pixel download.
- Do not lazy-load it. Lazy loading is good for images below the fold and actively harmful for the one at the top, because it delays exactly the thing being measured.
- Remove render-blocking work. Stylesheets and scripts in the head hold up everything behind them.
- Improve the server response. If the page takes a second to start arriving, no amount of front-end tuning gets you under 2.5.
INP, Interaction to Next Paint
INP measures responsiveness. It watches every click, tap and key press across the whole visit, and reports on the worst of them, so it captures the moment the page felt stuck rather than an average that hides it.
It replaced First Input Delay in March 2024. The difference matters: FID only measured the delay before the browser started responding to the first interaction. INP measures the whole thing, every interaction, until the screen actually updates. Sites that scored well on FID quite often score badly on INP, and nothing about them changed.
Target: 200 milliseconds or less.
What moves it:
- Less JavaScript. This is nearly the whole answer. Every script the browser has to run competes with responding to the visitor.
- Break up long tasks. One long job blocks the main thread; several short ones let the browser respond in between.
- Audit your plugins. On WordPress, a poor INP is usually an accumulation: sliders, popups, chat widgets, analytics, each adding a little.
- Keep the page smaller. A very large DOM makes every update more expensive.
CLS, Cumulative Layout Shift
CLS measures how much the layout jumps around while the page loads. It is the one everybody has experienced: you go to tap a link, an ad loads above it, and you tap something else.
Target: 0.1 or less.
It is also the most fixable of the three, because the causes are specific and few:
- Images without dimensions. Always give width and height, so the browser reserves the space before the file arrives.
- Ads, embeds and iframes without reserved space. Same principle: give the slot a size up front.
- Content injected above existing content. Cookie bars and notification banners that push the page down after it has rendered.
- Fonts that swap. A web font replacing the fallback reflows the text. Preload the font and use
font-display: swapwith a fallback of similar metrics.
Two kinds of number, and they will not match
This trips people up constantly, so it is worth being explicit. Core Web Vitals come from two different sources:
- Lab data is a single simulated load on a standardised device and connection. It is repeatable, immediate, and tells you what to fix. It is what a test run gives you.
- Field data is what real visitors on real devices experienced over the previous 28 days. It is what Google actually uses for ranking, and it lags, because it is an average of the recent past.
So a test score can jump the moment you fix something while your field data barely moves for weeks. That is not a contradiction and nothing is broken. Fix using the lab number, judge success on the field number, and give it a month.
Tip: fix the largest image first
Core Web Vitals invite a lot of technical rabbit-holing, and most WordPress sites do not need any of it. On a typical site the single largest image at the top of the page is the LCP element, it is several hundred kilobytes larger than it needs to be, and it is lazy-loaded when it should not be.
Compress it, convert it to WebP, size it to how it is actually displayed, and take the lazy-load off it. That one change fixes more LCP scores than every other tip on this page put together, and it takes ten minutes. Only go looking at your JavaScript once that is done.
Testing your own pages
TamRank runs Core Web Vitals through the same PageSpeed Insights API that Google uses, so your numbers line up with what Google sees. That is a PRO feature; see PageSpeed testing in TamRank for how to set it up and read the results.
Google’s own PageSpeed Insights and the Core Web Vitals report in Search Console are free and show the field data for your site directly.
Frequently asked questions
How much do Core Web Vitals affect rankings?
They are a real signal but a modest one. They rarely outweigh relevance and content quality. Where they decide things is between pages that are otherwise evenly matched.
Why is my test score good but Search Console says my URLs need work?
Your test is lab data from one simulated load; Search Console reports field data from real visitors over 28 days. The field data is the one Google uses, and it takes weeks to catch up with a fix.
What happened to FID?
INP replaced it in March 2024. INP measures every interaction through to the screen updating, so it is a stricter and more honest measurement.
Do I need a perfect 100?
No. Getting each of the three into the green band is the goal. The last few points cost far more than they return.
Which one should I fix first?
CLS is usually the quickest win, LCP the most valuable. INP is the hardest, because it means removing JavaScript rather than adding a setting.
Related
- Testing them in TamRank: PageSpeed testing in TamRank
- Lighter images: Image optimization: WebP and alt text
- The bigger picture: The complete WordPress SEO guide
- Back to Documentation