Skip to content
GESEL.IO
Guides
Start a project↗PL←Home
Home/Guides/Websites and online stores

Pillar article

Core Web Vitals Thresholds: LCP, INP and CLS Explained

Updated: 2026-08-13·8 min read·GESEL.IO editorial team

In short

Core Web Vitals are LCP, INP and CLS. Google grades them at the 75th percentile of CrUX field data over a rolling 28-day window, separately for phones and desktops — which is why a PageSpeed Insights score can disagree with the Search Console report. Thresholds: LCP up to 2.5 s, INP up to 200 ms, CLS up to 0.1. Low-traffic sites have no CrUX data and have to measure for themselves.

On this page

  1. Three metrics, three thresholds and one percentile
  2. Why PageSpeed Insights shows something different from Search Console
  3. What to do when your site has no CrUX data
  4. Are Core Web Vitals a ranking factor
  5. A separate diagnostic path for LCP, INP and CLS
  6. Third-party scripts: chat, pixels and the consent banner
  7. What speed is actually worth in sales
  8. When you will see the effect of a fix, and how to hold a supplier to it
28 days

The length of the rolling CrUX window Google grades Core Web Vitals on. After you ship a fix, the Search Console report only moves once that window has refilled with new page loads.

Core Web Vitals are three Google metrics describing what using a page actually feels like: LCP (how quickly the main content appears), INP (how quickly the page answers a tap) and CLS (whether the layout jumps under your finger). Definitions are everywhere — the trouble starts when PageSpeed Insights reports one score, Search Console reports another, and you have no idea which to trust. This guide untangles that knot: where the two scores come from, what to do when your site is missing from Google’s data altogether, and what to check for each of the three metrics.

Three metrics, three thresholds and one percentile

A page passes Core Web Vitals when LCP is 2.5 seconds or less, INP is 200 milliseconds or less, and CLS is 0.1 or less. The assessment does not cover a single load but the 75th percentile of all loads, counted separately for mobile and desktop.

Metric What it measures “Good” threshold Outside the threshold
LCP (Largest Contentful Paint) Time until the largest content element — usually the hero image or a headline — appears in the viewport 2.5 s or less above 2.5 s
INP (Interaction to Next Paint) Time from a user interaction to the response being painted on screen, across the whole visit 200 ms or less above 200 ms and up to 500 ms — needs improvement; above 500 ms — poor
CLS (Cumulative Layout Shift) Accumulated layout shifts, meaning content jumping after load 0.1 or less above 0.1

Only for INP does the documentation split a “needs improvement” band from a “poor” one. The 75th percentile means three quarters of loads have to fit inside the threshold — your own phone on a fast connection is not representative; the tail of slower sessions decides the result. INP replaced FID (First Input Delay) and has been a stable Core Web Vitals metric since 2024; FID is retired, so any material treating that acronym as current is out of date. None of it says whether the site can be operated with a keyboard or a screen reader — a separate area, governed by the European Accessibility Act and WCAG.

Why PageSpeed Insights shows something different from Search Console

Because they are two different kinds of measurement, not two views of one. The Lighthouse score in PageSpeed Insights is lab data: a single load of a single URL, on a simulated connection and device, under sterile conditions. The Core Web Vitals report in Google Search Console is field data from CrUX (Chrome User Experience Report): real loads by real Chrome users, aggregated at the 75th percentile over a rolling 28-day window.

Field data is what counts for Google’s assessment. Lab data is a diagnostic instrument — it tells you what to fix, not how the search engine sees the page. PageSpeed Insights shows both: the upper section is CrUX field data, the lower one a Lighthouse test run a moment ago.

✗"We score 100/100 in PageSpeed, performance is handled" — that is the result of one load of the home page under lab conditions.
✓"At the 75th percentile of the last 28 days of field data, mobile LCP is 3.1 s and INP is 240 ms — we start with the product page, because that is where most of the traffic lands."

What to do when your site has no CrUX data

If a site gets too little traffic, CrUX collects no data for it and no Google tool will show a field score — your own measurement is then the only route. This is the normal situation for a typical company website, and why owners get stuck on a message about insufficient data.

Your own measurement has three parts. First, the web-vitals JavaScript library wired into the site — it collects LCP, INP and CLS from your visitors and sends them to an analytics tool; feeding those events into your reporting stack is ordinary system integration work, not a separate project. Second, the Web Vitals Chrome extension, which shows live values as you click through the site by hand. Third, tests on real devices — a mid-range phone on a mobile network, not just a developer laptop on fibre.

On top of that sit lab tools with measurement history: WebPageTest, GTmetrix and DebugBear let you compare releases and catch a regression before your visitors do.

Are Core Web Vitals a ranking factor

Yes, but not in the sense the claim is usually sold. Google’s Search documentation (developers.google.com/search/docs/appearance/page-experience) states plainly: “Core Web Vitals are used by our ranking systems”. The same page adds a second sentence: “There is no single signal” — there is no one “page experience ranking system”, and Core Web Vitals results are one signal among many.

The honest conclusion is asymmetric. Good scores guarantee nothing: a page with flawless LCP, INP and CLS but weak content will not beat a better answer to the visitor’s question. Bad scores can cost you twice over — as a signal the ranking systems take into account, and as a real barrier for someone who closes the tab before the page reacts. Treat Core Web Vitals as technical hygiene, not as a ranking lever.

A separate diagnostic path for LCP, INP and CLS

Each metric breaks for a different reason, so a shared list of tips along the lines of “compress your images” does not get you far. Below is the order actually worth following.

Bad LCP

  1. In PageSpeed Insights, check which element was flagged as LCP — usually the hero image, a banner or a large headline.
  2. In Chrome DevTools, open the Performance panel, record a load and find the LCP marker in the Timings section: it shows the second at which that resource starts downloading.
  3. In the Network tab, check whether the LCP file is queued behind stylesheets and scripts, or has lazy loading switched on by accident.
  4. Judge the asset itself: format, weight, a version matched to the screen width, fetch priority.
  5. Measure server response time — WebPageTest breaks it down into TTFB, transfer and rendering. If the server answers slowly, no amount of image optimisation makes up for it.

Bad INP

  1. Turn on the Web Vitals Chrome extension and click through the site the way a visitor does: menu, filters, cart, form. The extension reports INP for each interaction.
  2. Repeat the worst interaction while recording in the Performance panel and look for long tasks blocking the main thread.
  3. Work out which script triggers those tasks. On company websites it is almost always third-party code, not your own.
  4. Block the suspect scripts one by one (request blocking in the Network tab) and repeat the measurement — you will see what each tool costs.
  5. In field data, check which pages have the worst INP. Forms and product search usually fare worse than the home page.

Bad CLS

  1. In DevTools, switch on layout shift region highlighting — you will immediately see which blocks jump.
  2. Check images, iframes and embedded players with no declared dimensions. That is the single most common cause.
  3. Look at fonts: swapping a typeface after load can shift whole paragraphs.
  4. List everything added to the page after it renders — the consent banner, a promo bar, the chat window, product recommendations.
  5. Measure on a narrow screen. CLS is often zero on desktop while the same layout falls apart on a phone with every load.

Third-party scripts: chat, pixels and the consent banner

On a typical company website the most common cause of bad INP and CLS is not your own code but the scripts added by marketing and external tools. Each of them — an ad pixel, a map, a review widget, A/B testing, a chat window, a consent management platform — adds work on the main thread precisely when the visitor starts tapping.

The consent banner is a special case: it hits both metrics at once, pushing content down when no space is reserved for it and blocking the thread with its own script. Its layout also matters for website accessibility, because a banner that covers content and cannot be dismissed from the keyboard is a problem regardless of the CLS score.

A practical rule: every third-party script needs an owner and a justification. Once a quarter, walk the list and remove what nobody uses — tools from finished campaigns can sit in the code for years. Before adding another, check whether the same data could be pulled through an integration with a system you already run instead of injecting foreign code into the visitor’s browser.

What speed is actually worth in sales

The best documented reference point is the “Milliseconds Make Millions” study, commissioned by Google and carried out by Deloitte and the agency 55, published in 2020 on data collected in late 2019. It covered 37 European and American brands and more than 30 million sessions, with mobile timings measured over 30 days.

The retail result: a 0.1 second improvement in load time was associated with 8.4% higher conversions and 9.2% higher average order value. For travel — conversions higher by 10.1%, order value by 1.9%.

One caveat matters more than the numbers: this is a correlational study, not a causal experiment. It shows faster sessions went together with better sales outcomes — it does not prove that cutting 0.1 s will by itself lift your conversion rate by the same amount. Treat the figures as an argument for measuring performance at all, not as a forecast of return on investment.

When you will see the effect of a fix, and how to hold a supplier to it

You will not see it straight away — field data is calculated over a rolling 28-day window, so for several weeks after release the Search Console report mixes pre-fix traffic with post-fix traffic. In the days after a change, check your own measurements instead (the web-vitals library, the Web Vitals extension, lab tests) and treat the Google report as late confirmation. A sudden drop immediately after release is usually a regression signal, not noise. That same 28-day lag is what makes a rebuild risky, so plan a website migration without losing rankings with measurements taken before the switch as well as after it.

The second conclusion concerns the contract. Performance is measurable, so it belongs in the written acceptance criteria — scope that was never described comes back as the cost of post-launch fixes, through exactly the mechanism that drives mobile app development cost or the price of rebuilding a store. Put the Core Web Vitals requirement into the document that starts the conversation with a supplier: the brief for a software project.

Template

"Before acceptance, please send the Core Web Vitals results from field data or from your own measurement: LCP, INP and CLS at the 75th percentile, separately for mobile and desktop, for the home page, a service page and the contact form. If the site has no CrUX data, please measure with the web-vitals library over at least two weeks of traffic."

At some point patching an old site stops paying off and the question turns into WordPress or a custom website, because a theme and its plugins set a performance ceiling your own template does not. For a shop the same question takes a different shape: a hosted or a custom online store decides how much of the template, the scripts and the URLs you are allowed to touch at all.

If you are planning a new site or a rebuild rather than repairing an existing one, set the performance requirement before design starts and talk the scope through with us — a threshold agreed up front costs far less than one renegotiated after handover.

Template

"We consider the release complete when, at the 75th percentile of real-traffic measurements, LCP does not exceed 2.5 s, INP does not exceed 200 ms and CLS does not exceed 0.1 — for the mobile version of the three most important pages."

In this cluster

  • European Accessibility Act and your website: what to change in the template

    European Accessibility Act and your website: who it applies to since 28 June 2025, what the 2030 transition really covers, and which template fixes to order.

  • Hosted or custom online store: what hurts in year three

    Hosted or custom online store? Six criteria that decide in year three: data export, URLs, accessibility, filters, security updates and the cost of leaving.

  • Website Migration SEO: A Checklist for Before, During and After Launch

    Website migration SEO step by step: what to prepare before launch, what to do on the day, what to check afterwards, and how to plan a rollback.

  • WordPress vs custom website: eight questions to settle first

    WordPress vs custom website: eight questions that settle the choice yourself, and the point where optimising an old site stops paying off.

Knowledge base

Is your site failing Core Web Vitals?

Tell us about the website and we will come back with what is actually breaking LCP, INP and CLS, and where to start fixing it.

Contact us↗

Checklist

  • ✓

    In PageSpeed Insights, compare the field data section with the lab section — they are two different measurements, not two views of one.

  • ✓

    Open the Core Web Vitals report in Google Search Console separately for mobile and for desktop.

  • ✓

    If the site has no CrUX data, install the web-vitals library and collect measurements from your own visitors.

  • ✓

    Measure LCP, INP and CLS on a real mid-range phone, not only on development hardware.

  • ✓

    List every third-party script — chat, ad pixels, maps, the consent banner, A/B tests — and give each one an owner.

  • ✓

    Set fixed dimensions for images, iframes and any slot filled in after load, so the layout cannot jump.

  • ✓

    After shipping fixes, wait for the 28-day CrUX window to recalculate before judging the result in Search Console.

  • ✓

    Write the required Core Web Vitals threshold into the scope of work and check it before you accept the site.

Frequently asked questions

Why does PageSpeed Insights show a different score from Google Search Console?
They are two different kinds of measurement. The Lighthouse score in PageSpeed Insights is a single page load under lab conditions, on a simulated connection and device. The Core Web Vitals report in Search Console is built on CrUX field data: real loads by real Chrome users, aggregated at the 75th percentile over a rolling 28-day window. Field data is what counts for Google's assessment.
I fixed the site and Search Console still shows the old score. How long does it take?
Field data in CrUX is calculated over a rolling 28-day window, so the report moves gradually as old loads drop out and new ones — recorded after the fix — come in. Right after you ship, the score is a blend of the old and the new version of the page. You only see the full picture once the window covers post-change traffic exclusively.
I have 100/100 in PageSpeed Insights but the site still feels slow. Why?
A score of 100/100 comes from the Lighthouse lab test: one load, one URL, simulated network and hardware, usually with no logged-in session and without the full set of third-party scripts. Real visitors land on different pages, arrive on weaker phones and worse connections, and tap around the interface — which is exactly what INP and CLS measure in field data.
My site has too little traffic for CrUX data. How do I measure Core Web Vitals then?
CrUX only covers sites with enough page loads, so smaller company websites usually have no field data in PageSpeed Insights or Search Console. The only route left is your own measurement: the web-vitals JavaScript library reporting results into an analytics tool, the Web Vitals Chrome extension for manual testing, and walking the key journeys on a real phone.
Does FID still count, and how is it different from INP?
FID (First Input Delay) has been retired. INP (Interaction to Next Paint) replaced it and has been a stable Core Web Vitals metric since 2024. The difference matters: FID measured only the delay of the first interaction, while INP accounts for the full time from a tap to the response being painted on screen, across the whole visit. The good threshold for INP is 200 ms or less.
Does a cookie consent banner hurt CLS and INP?
It can hurt both. A banner injected after load pushes the content below it down and inflates CLS, and its script does work on the main thread exactly when the visitor starts tapping, which degrades INP. The fix is to reserve space for the banner in the layout, render it as an overlay that does not move content, and keep the script itself light.

Sources and methodology

These links lead to primary sources and the rules we use to prepare and update our material.

  • web.dev — Web Vitals↗accessed: 2026-08-14
  • Google Search Central — Core Web Vitals↗accessed: 2026-08-14
  • GESEL.IO editorial policy↗

Read next

  • European Accessibility Act and your website: what to change in the template

    European Accessibility Act and your website: who it applies to since 28 June 2025, what the 2030 transition really covers, and which template fixes to order.

  • System Integration for Business: What to Do When It Breaks

    System integration for business without guesswork: an entity matrix, one source of truth, webhooks, queues, and a plan for the day the other side stops answering.

  • Mobile App Development Cost: How to Break a Quote Into Parts

    What drives mobile app development cost? Instead of ranges, here is the method: roles, rates, hours, line items hidden in a quote, and the costs that start after launch.

GESEL.IO
Guides
Editorial policyPrivacy policyTerms of useSupport

GESEL.IO sp. z o.o., ul. Jagiellońska 5/22, 58-100 Świdnica, Poland

District Court for Wrocław-Fabryczna in Wrocław, 9th Commercial Division of the National Court Register, KRS 0001258062, NIP 8842841661, REGON 545371616, share capital: PLN 5,000.00.

© 2026 GESEL.IO sp. z o.o.