What Core Web Vitals are, and why they matter for a paid click
Core Web Vitals are three measures from Google. Each one covers a different part of a visit:
- LCP, Largest Contentful Paint, is for loading.
- INP, Interaction to Next Paint, is for responsiveness.
- CLS, Cumulative Layout Shift, is for visual stability.
web.dev sets these targets:
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| LCP | 2.5 seconds or less | Over 2.5 and up to 4.0 seconds | Over 4.0 seconds |
| INP | 200 milliseconds or less | Over 200 and up to 500 milliseconds | Over 500 milliseconds |
| CLS | 0.1 or less | Over 0.1 and up to 0.25 | Over 0.25 |
Google measures each one at the 75th percentile of real page loads, split by mobile and desktop. So 3 out of 4 visits need to hit the target. web.dev says a page passes only if all three meet their targets.
On an ad landing page, each one is something a visitor feels. A slow LCP means they wait for the hero image or headline to show. A slow INP feels like tapping "Get a quote" and nothing happening, so people tap again or leave. A high CLS means the quote form moves as someone reaches for it, and they can tap the wrong thing.
What is LCP? How fast the main content shows
LCP reports the render time of the largest image, text block, or video visible in the viewport. The clock starts when the visitor starts loading the page. web.dev lists the element types LCP looks at:
- Images
- Images inside an SVG
- Videos
- Elements with a background image loaded through CSS
- Block-level elements that contain text
LCP only counts what is visible in the viewport when the page loads, so it changes between phone and desktop. On a phone, the largest element might be the headline. On a desktop, it might be a wide hero photo. On a contractor landing page, it is often a big photo of a finished job or a crew, or the headline above the quote form.
web.dev splits LCP into four parts, each with its own fixes:
- Time to first byte. Cut redirects and serve the page from a CDN close to your visitors.
- Resource load delay. Make the hero image findable in the first HTML, and give it high fetch priority. Never lazy-load it.
- Resource load duration. Size and compress the image, and use modern formats.
- Element render delay. Cut render-blocking CSS, avoid synchronous scripts in the head, and break up long tasks.
For most lead pages, the quick wins are the hero image and the scripts in the head. A heavy photo straight from a camera, or a slider that loads five images, can push LCP well past the target on a phone. So can a stack of tracking and chat scripts that load before the page draws.
One roofing company's ad page went from a ClickMend score of 42 to 93, and its load time from 4.1s to 1.8s.
What is INP? How fast the page reacts
INP assesses a page's overall responsiveness to user interactions. On a lead page, that is the menu button, the form fields, and the submit button. web.dev counts three kinds of input, and only these three:
- Mouse clicks
- Taps on a touchscreen
- Key presses, on a physical or on-screen keyboard
INP watches all of these through the whole visit, not just the first one, and reports one value for the page. It covers the full span from the input to the next frame the visitor sees. One slow button can drag it down, even if the rest of the page feels quick.
web.dev names the main causes: long tasks that keep the browser's main thread busy, heavy work inside event handlers, and costly layout and paint work before the next frame. Its fixes:
- Break up long tasks into smaller pieces.
- Move JavaScript work off the main thread where you can.
- Keep layout and styles simple.
On landing pages, a lot of that main thread work comes from scripts: chat widgets, call tracking, heat maps, and pixels. See third-party scripts and landing page speed. If you use a number swap script, see CallRail and Google Ads landing pages.
What is CLS? How much the page jumps
CLS scores how much the page jumps around on its own. It is a score with no unit, not a time. A CLS of 0 means nothing moved. Each unexpected shift adds to the score based on how much of the screen moved and how far it moved.
The score is not a total of every shift. web.dev groups shifts that happen less than 1 second apart into a session window, up to 5 seconds long. The page's CLS is the score of its worst window.
Shifts within 500 milliseconds of a click, tap, or key press are left out, since the visitor expects the page to change then. Scrolling, dragging, and pinch-zoom do not count as that kind of input.
web.dev lists the common causes. Each one shows up on ad landing pages:
- Images or videos without dimensions. The page does not know how much room to save, so text jumps when the photo loads. Set width and height on images.
- Ads, embeds, and widgets that resize after loading. Review widgets, map embeds, and chat bubbles.
- Content injected above existing content. A banner or cookie bar that pushes the form down after the page appears.
- Web fonts. The fallback font is a different size than the final font, so text reflows when the font arrives.
The simple fix for most of these is to save space. Give images and embeds a set size, keep banners from pushing content after load, and load fonts so the swap does not change the text size much.
How to check your Core Web Vitals
There are two kinds of data. Field data comes from real visits. Google collects it from real users in CrUX, the Chrome User Experience Report. Lab data comes from a single test run. Field data is what the targets above are judged on, but Google only has it for pages with enough real visits.
A free ClickMend scan checks the page a Google or Meta ad sends people to. Core Web Vitals count as 25% of the ClickMend score. The scan uses real-user CrUX field data when Google has it. When Google does not have enough real visits for a page, the scan uses lab data instead. Either way, it names unused JavaScript and other slow parts, so you can see where to start.
INP is measured from real visits, so a fast office computer can hide the problem. Test by hand too. Open the page on a mid-range phone, tap the menu, tap into the form, and press submit. If anything hangs, that is where to look.
See the landing page speed test guide for how to read the rest of the report. Warnings inside Google Ads are a separate thing. For those, see landing page experience below average and Google Ads destination experience.
Which one to fix first
A page passes only when all three meet their targets, so start with the one that is failing. If more than one fails, fix a Poor rating before a Needs improvement rating.
Two fixes cover a lot of ground on a lead page:
- The hero image. Size it, compress it, and do not lazy-load it. That is the quick win for LCP. Set its width and height too, so the page saves room for it and the text does not jump.
- The scripts. Scripts that load before the page draws slow LCP. Long tasks on the main thread slow INP. Widgets that resize after loading add to CLS. Cut the ones you do not use.
Related guides
Landing Page Experience Below Average: Fixes
Landing page experience below average in Google Ads? What the warning means, what it does not mean, and the order to fix the page your ad sends people to.
Google Ads Destination Experience: Fix It
Google Ads destination experience disapproval? What Google means, the pop-ups, slow loads and redirects behind it, the fix order, and how to request a review.
Third-Party Scripts and Landing Page Speed
Third-party scripts and landing page speed: script execution time for call tracking, chat, pixels, video and booking on Google Ads pages, from HTTP Archive.
Landing Page Speed Test for Google Ads
Free landing page speed test for Google Ads pages. Test the load time of the exact page your ad sends clicks to, see Core Web Vitals, and find the slow parts.
Frequently asked questions
Should I lazy-load my hero image?
No. web.dev's LCP guide says, "Never lazy-load your LCP image." Lazy loading delays the image that LCP is measuring.
Did INP replace FID?
Yes. web.dev says INP replaced First Input Delay and became a stable Core Web Vital in 2024. FID only looked at the first input. INP looks at all of them.
Does scrolling count toward INP?
No. web.dev says hovering, scrolling, and zooming are not counted, though a click, tap, or key press inside those gestures can be.
Does a layout shift after someone taps a button count toward CLS?
Usually not. web.dev says shifts within 500 milliseconds of a click, tap, or key press are left out. Scrolling and pinch-zoom do not get that pass.
Is CLS a time?
No. CLS is a score with no unit. Good is 0.1 or less, needs improvement is between 0.1 and 0.25, and poor is over 0.25.
Does ClickMend measure Core Web Vitals?
Yes. LCP, INP and CLS are part of Core Web Vitals, which make up 25% of the ClickMend score. It uses real-user CrUX field data when Google has it, and lab data if not.