/ โ† Core Web Vitals Fixes / CWV Assessment Failed
In this guide
  1. What a failed assessment actually means
  2. Why a high performance score can still fail
  3. How to find which metric and which pages are failing
  4. Common causes for each failing metric
  5. Fixing templates rather than pages
  6. A worked example
  7. The fix, step by step
  8. Edge cases worth knowing
  9. Keeping the assessment green
  10. Questions and answers

What a failed assessment actually means

When you test a URL in PageSpeed Insights, the top block is headed Discover what your real users are experiencing. That block is not a test of your page. It is a summary of what real Chrome users recorded while visiting it over the previous 28 days, taken from the Chrome UX Report (CrUX). The line Core Web Vitals Assessment: Failed means that, at the 75th percentile, at least one of the three Core Web Vitals is outside the good range.

MetricGoodNeeds improvementPoor
Largest Contentful Paint (LCP)2.5 s or lessOver 2.5 s up to 4 sOver 4 s
Interaction to Next Paint (INP)200 ms or lessOver 200 ms up to 500 msOver 500 ms
Cumulative Layout Shift (CLS)0.1 or lessOver 0.1 up to 0.25Over 0.25

The 75th percentile means that three out of every four page loads must reach the good threshold for that metric. A page where half of visitors get a 1.8 second LCP and a quarter get 5 seconds still fails, because the slow quarter drags the 75th percentile figure over the line.

All three metrics must be good for the assessment to pass. There is no averaging and no partial credit: a page with an excellent LCP and CLS but an INP of 240 ms fails. If there is not enough INP data, the assessment is made on LCP and CLS alone. First Contentful Paint and Time to First Byte appear in the same block as diagnostic figures, but they do not decide the result.

Mobile and desktop are assessed separately. PageSpeed Insights opens on the mobile tab, and mobile is where most sites fail, because real phones have slower processors and less reliable connections than the machines the site was built on.

Why a high performance score can still fail

Below the field data block sits the Lighthouse performance score, the number out of 100 most people look at first. It comes from a single simulated page load on a throttled connection, run from Google's servers, with no real visitor involved. It is a lab test. The assessment above it is field data. The two often disagree, and when they do, the field data is what Google uses in its page experience signals and in the Search Console report.

AspectField data (the assessment)Lab data (the score)
SourceReal Chrome users, Chrome UX ReportOne Lighthouse run on a simulated phone
Time spanRolling 28 daysThe moment you pressed Analyse
Measures INPYes, from real taps and clicksNo; Total Blocking Time is used as a stand-in
Sees cookie banners, adverts, logged-in statesYes, as real visitors see themOnly what a fresh, logged-out visit sees
Changes after a fixGradually, over up to four weeksImmediately

A site can score 95 in the lab and fail in the field because real visitors arrive through slow advert redirects, use older Android phones, or interact with a menu that runs heavy JavaScript the lab never clicks. The reverse also happens: a score of 50 next to a passed assessment usually means most real visitors have the page cached or are on fast devices.

Use the lab report to find causes, because it shows which element, script or file is slow. Use the field data to decide whether you have fixed anything. Our guide to field and lab mismatches covers this gap in more depth.

How to find which metric and which pages are failing

Start in PageSpeed Insights on the mobile tab. Look at the three Core Web Vitals and note which one is amber or red. That metric is your target. Fixing one that is already green will not change the result, however much effort it takes.

Next, check which data you are looking at. Above the metrics there is a choice between This URL and Origin. If the page does not have enough Chrome traffic of its own, PageSpeed Insights says so and shows figures for the whole origin instead. In that case the failure may come from completely different pages, such as a slow blog template, while the page you tested is fine.

To see which pages are failing, open the Core Web Vitals report in Search Console. It sorts URLs into Poor, Need improvement and Good for mobile and desktop, and lists issues such as LCP issue: longer than 2.5s (mobile). Click an issue to see example URLs, each standing for a group of pages that behave alike.

Pulling the figures yourself

The Chrome UX Report API returns the same 75th percentile figures for a URL or origin. With a free API key from Google Cloud:

curl -s "https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"origin": "https://www.example.com", "formFactor": "PHONE"}'

Swap origin for url to query a single page. A 404 response saying no data was found means the page or origin does not have enough traffic to be included, which is common for small sites and new pages.

Recording real visitors on your own site

CrUX tells you that a metric fails, not why. Google's web-vitals library with its attribution build reports the element, the script or the interaction responsible:

import { onLCP, onINP, onCLS } from 'web-vitals/attribution';

function send(metric) {
  navigator.sendBeacon('/rum', JSON.stringify({
    name: metric.name,
    value: Math.round(metric.value * 1000) / 1000,
    page: location.pathname,
    detail: metric.attribution
  }));
}
onLCP(send); onINP(send); onCLS(send);

A week of this data, grouped by template, usually points straight at the cause.

Common causes for each failing metric

Failing metricMost common causesFirst thing to check
LCPSlow server response, a lazy-loaded or oversized hero image, a hero set by JavaScript or CSS, render-blocking stylesheets and scriptsThe LCP element and how its time splits between server, discovery, download and render
INPLong JavaScript tasks on click or tap, heavy third-party tags, large page builders, big DOM updates after each interactionWhich interaction is slow, and which script runs during it
CLSImages and embeds without dimensions, adverts with no reserved slot, cookie and promotion banners pushed in above content, web fonts swapping lateWhich element moved, and what appeared just before it

For LCP, the LCP guide explains how to split the time into its four parts, and the high TTFB guide covers the server side. On phones in particular, see high LCP on mobile.

For INP, record an interaction in the Chrome DevTools Performance panel with CPU throttling at four times slower, then look for long tasks during the click. The INP guide and the long tasks guide show how to break work up and defer it.

For CLS, the CLS guide walks through reserving space. Remember that CLS is measured across the whole visit, so shifts caused by content loading as the visitor scrolls count as well, not just the first screen.

๐Ÿ’ก Test on a mid-range Android phone over mobile data, or with DevTools set to a mid-tier mobile profile. Most failing sites fail on mobile, and an office laptop on fibre hides the problem.

Fixing templates rather than pages

Search Console does not list every slow URL. It groups pages that look alike and perform alike, then shows example URLs with the group's figure. A group of 1,200 product pages failing on CLS is almost never 1,200 separate problems. It is one product template with one missing image dimension, or one widget that loads late.

Work out which template each failing group uses: home page, category, product, article or landing page. Fix the template, deploy it, and every page built from it improves together. This is also why hand-tuning one landing page rarely moves the report.

Some practical points for common platforms:

โš ๏ธ Do not install several speed plugins at once. They often minify, defer and lazy-load the same files in different ways, which can raise the lab score while making CLS or INP worse for real visitors.

A worked example

A small holiday cottage business sees Core Web Vitals Assessment: Failed on its home page, mobile tab. LCP is 3.4 s, INP is 160 ms and CLS is 0.04. Only LCP needs work. The lab performance score is 78.

The lab diagnostics name the hero photograph as the LCP element. The page source shows:

<img src="/uploads/cottage-hero.jpg" loading="lazy" width="2400" height="1350" alt="Stone cottage at dusk">

The file is 1.8 MB and lazy-loaded, so the browser waits for layout before requesting it and then downloads far more than a phone needs. The template is changed to:

<img src="/uploads/cottage-hero-800.webp"
  srcset="/uploads/cottage-hero-800.webp 800w, /uploads/cottage-hero-1600.webp 1600w"
  sizes="100vw" width="1600" height="900"
  fetchpriority="high" alt="Stone cottage at dusk">

The phone-sized file is now 120 KB. Lab LCP on mobile drops to 1.9 s across five runs. The owner starts validation in Search Console. After two weeks the 75th percentile is 2.7 s, because half the window still holds old visits. After four weeks it is 2.1 s, the assessment shows Passed, and the Search Console group moves to Good.

The fix, step by step

Step 1

Read the field data on mobile first

Open PageSpeed Insights, enter the failing URL and stay on the mobile tab. In the block about real users, note the 75th percentile for LCP, INP and CLS and whether you are seeing This URL or Origin data. Write these figures down with the date, because they are your baseline. If the origin view is shown, accept that the failing pages may be elsewhere on the site and go to Search Console before changing anything.

Step 2

Pick the one metric that fails

Mark which of the three Core Web Vitals is amber or red and leave the others alone for now. One poor metric fails the whole assessment, and improving a metric that already passes changes nothing. If two metrics fail, start with the one furthest from its threshold, which is usually LCP on mobile. Set the lab performance score aside at this point; it is useful for finding causes but it does not decide whether the assessment passes.

Step 3

Find the failing groups in Search Console

Open the Core Web Vitals report in Search Console, choose the mobile report and open each issue marked Poor or Need improvement, such as LCP issue: longer than 2.5s (mobile). Note the example URLs and the number of URLs in each group, then work out which template each group uses. Confirm you have the right list by checking that the URL you tested in PageSpeed Insights appears in, or resembles, one of the failing groups.

Step 4

Use the lab report to find the cause

Run Lighthouse or PageSpeed Insights on an example URL from the worst group three to five times and read the diagnostics for your failing metric. For LCP, note the LCP element and its time breakdown. For CLS, note the elements that shifted. For INP, look at Total Blocking Time and the scripts named, then record a real tap in the DevTools Performance panel with CPU throttling to see which task runs.

Step 5

Fix the failing metric in the template

Apply the fix that matches the cause. For LCP, remove loading="lazy" from the hero, add fetchpriority="high", serve a smaller modern file and speed up the server. For INP, split long tasks, defer non-essential scripts and remove unused tags. For CLS, add width and height to images and reserve space for adverts, embeds and banners. Make the change in the shared template so every page in the group benefits.

Step 6

Confirm the change in the lab

Deploy the change, clear any page cache and CDN cache, then rerun the lab test on mobile three to five times. Compare the median with your baseline for the metric you fixed rather than the overall score. Check two or three other URLs from the same Search Console group to confirm the template change reached them. If the lab figure has not moved, the fix did not touch the real cause, so go back to the diagnostics.

Step 7

Start validation in Search Console

In the Core Web Vitals report, open the issue you fixed and choose Validate fix. Search Console then monitors the group over the following 28 days and reports whether it now passes. Do not start validation before the change is live on every affected page, because URLs still failing during the window can end validation early. Note the date you started so you can match it against your own monitoring figures later.

Step 8

Wait for the field data to update

Field data covers a rolling 28 days, so an improvement appears gradually and takes up to four weeks to show in full. Check PageSpeed Insights weekly and expect the 75th percentile to fall steadily rather than all at once. If you run your own real-user monitoring, you will see the change within a few days. Once the figure is under the threshold for every metric with enough data, the assessment shows Passed.

Edge cases worth knowing

Keeping the assessment green

A passed assessment drifts back to failed when a new plugin, a new tag or a redesigned template arrives. A few habits stop that:

  1. Keep real-user monitoring running so you see a change within days, not when the 28-day window has filled.
  2. Check the Core Web Vitals report in Search Console every month, and after any release that touches templates, scripts or hosting.
  3. Run Lighthouse on one page from each template before releasing changes, and compare the result with the previous release.
  4. Review every new third-party script, chat widget or tracking tag for its effect on INP before it goes live. The third-party tags guide shows how to load them later.

The Core Web Vitals guide explains each metric in more depth if you want the background.

Questions and answers

1. Why does PageSpeed Insights say Core Web Vitals assessment failed?

It means at least one of LCP, INP or CLS is outside the good range for real Chrome users at the 75th percentile over the last 28 days. The thresholds are 2.5 seconds for LCP, 200 milliseconds for INP and 0.1 for CLS. All three must be good to pass, so a single metric can fail the whole assessment. The result comes from field data collected from real visitors, not from the Lighthouse test that runs when you press Analyse, so it cannot change on the day you make a fix.

2. My performance score is 90 or more. Why does the assessment still fail?

The score and the assessment measure different things. The score comes from one simulated visit on Google's servers, while the assessment comes from real visitors over 28 days on their own phones and connections. Real visitors may use slower devices, see cookie banners and adverts, arrive through redirects, or tap on menus that run heavy scripts the lab never touches. The lab cannot measure INP at all. Treat the score as a tool for finding causes and the assessment as the measure of success.

3. How long does it take for a fix to turn the assessment green?

It usually takes up to four weeks for a fix to show in full, because the field data covers a rolling 28-day window. Each day, the oldest day of visits drops out and a new day comes in, so the 75th percentile improves gradually. If the old figure was far over the threshold, it may need most of the window; if it was only just over, it may pass within a week or two. Your own real-user monitoring will show the change within days.

4. What does origin data mean in PageSpeed Insights?

Origin data is the combined figure for every page on your domain that has Chrome traffic, rather than for the single URL you tested. PageSpeed Insights shows it when the page does not have enough real-user data on its own. It means a failure may come from other pages, such as a slow blog or shop template, while the page you entered is fine. Use the Core Web Vitals report in Search Console to find which groups of URLs are failing.

5. Does a failed Core Web Vitals assessment hurt my rankings?

It can have a small effect, but it is rarely the main reason a page ranks poorly. Core Web Vitals form part of the page experience signals Google uses, and Google has said that relevant, helpful content matters far more. A failed assessment is better seen as a sign that real visitors find the page slow or unstable, which affects whether they stay, enquire or buy. Fix it for visitors first, and any search benefit follows from there.

6. Why is there no Core Web Vitals assessment for my page?

There is no assessment when the Chrome UX Report does not hold enough real-user data for the page or the origin. Only visits from Chrome users who share usage statistics are counted, and a minimum amount of traffic is needed before a page or site is included. Small and new sites often fall below it. That is not a failure. Use the lab report, test on a real phone, and add your own monitoring until enough traffic builds up.

7. Should I fix mobile or desktop first?

Fix mobile first in nearly every case. Mobile is the tab PageSpeed Insights opens on, most visitors to small business sites use phones, and phones are where pages are slowest because of weaker processors and less reliable connections. A fix for mobile, such as smaller images or less JavaScript, usually helps desktop too, while the reverse is often not true. Check both reports in Search Console, but give the mobile groups marked Poor your attention before anything else.

Find the metric that fails your assessment

The Core Web Vitals checker shows real-user field data and a lab test side by side, names the failing metric and points to the element or script behind it, so you know which fix to make first.

Open Core Web Vitals Fixes โ†’
๐Ÿ’ฌ Got a problem?
Related Guides: All Core Web Vitals Fixes  ·  Slow LCP: Fixing Largest Contentful Paint  ·  Fixing Slow Interaction to Next Paint  ·  Fixing Cumulative Layout Shift  ·  Field and Lab Data Mismatches  ·  Learning Hub

About aiwebpageseo

aiwebpageseo.com is a data-driven SEO and AEO (Answer Engine Optimisation) platform providing a free suite of technical SEO tools. Rather than relying on AI-theorised assumptions, the platform analyses live URL performance, delivering objective diagnostics, page speed metrics, CLS debugging, and site crawl data alongside actionable technical tutorials.