Core Web Vitals Assessment Failed: What It Means and How to Fix It
PageSpeed Insights shows Core Web Vitals Assessment: Failed when real Chrome users, over the last 28 days, recorded at least one of Largest Contentful Paint, Interaction to Next Paint or Cumulative Layout Shift outside the good range. It is a verdict on what your visitors actually experienced, not on the test you have just run, which is why a high performance score can sit right beside it. Left alone, it means pages that feel slow or jumpy to the people you want to keep. This guide shows you how to read the assessment, find the exact metric and group of pages that fails, fix the template behind it, and track the field data until it passes.
- What a failed assessment actually means
- Why a high performance score can still fail
- How to find which metric and which pages are failing
- Common causes for each failing metric
- Fixing templates rather than pages
- A worked example
- The fix, step by step
- Edge cases worth knowing
- Keeping the assessment green
- 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.
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| Largest Contentful Paint (LCP) | 2.5 s or less | Over 2.5 s up to 4 s | Over 4 s |
| Interaction to Next Paint (INP) | 200 ms or less | Over 200 ms up to 500 ms | Over 500 ms |
| Cumulative Layout Shift (CLS) | 0.1 or less | Over 0.1 up to 0.25 | Over 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.
| Aspect | Field data (the assessment) | Lab data (the score) |
|---|---|---|
| Source | Real Chrome users, Chrome UX Report | One Lighthouse run on a simulated phone |
| Time span | Rolling 28 days | The moment you pressed Analyse |
| Measures INP | Yes, from real taps and clicks | No; Total Blocking Time is used as a stand-in |
| Sees cookie banners, adverts, logged-in states | Yes, as real visitors see them | Only what a fresh, logged-out visit sees |
| Changes after a fix | Gradually, over up to four weeks | Immediately |
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 metric | Most common causes | First thing to check |
|---|---|---|
| LCP | Slow server response, a lazy-loaded or oversized hero image, a hero set by JavaScript or CSS, render-blocking stylesheets and scripts | The LCP element and how its time splits between server, discovery, download and render |
| INP | Long JavaScript tasks on click or tap, heavy third-party tags, large page builders, big DOM updates after each interaction | Which interaction is slow, and which script runs during it |
| CLS | Images and embeds without dimensions, adverts with no reserved slot, cookie and promotion banners pushed in above content, web fonts swapping late | Which 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.
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:
- WordPress. Page builders, sliders and stacks of plugins are the usual cause of poor INP and LCP. Check the rendered HTML, not the settings screens. See Core Web Vitals in WordPress.
- Shopify. Apps inject scripts into every page, including ones that do not use them. Remove apps you no longer use and check that their code has gone from the theme. See Core Web Vitals in Shopify.
- Next.js and other frameworks. Large client bundles and hydration work hurt INP. Render on the server where you can and mark the hero image as the priority image. See Core Web Vitals in Next.js.
- Cloudflare or another CDN. Caching HTML at the edge can cut server response time sharply for LCP, but it does nothing for INP or CLS.
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
- No field data at all. Small or new sites may show no assessment, only the lab report. That is not a failure. Use the lab report and your own monitoring until there is enough traffic.
- Origin fails, page passes. If the URL view passes but the origin fails, other templates are at fault. Find them in Search Console rather than tuning the page you tested.
- Passing on desktop, failing on mobile. Treat them as separate problems. A desktop fix may do nothing for phones, where the processor and network are the limit.
- Results vary between lab runs. Lighthouse can differ by several points or a few hundred milliseconds from one run to the next. Compare the median of three to five runs, not a single result.
- Logged-in areas. Field data includes everyone using Chrome, so a slow account area or members' dashboard on the same origin counts towards the origin figure.
- Back and forward navigation. Pages restored from the back/forward cache are very fast. Avoiding
unloadhandlers so pages stay eligible improves field figures without any other change.
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:
- Keep real-user monitoring running so you see a change within days, not when the 28-day window has filled.
- Check the Core Web Vitals report in Search Console every month, and after any release that touches templates, scripts or hosting.
- Run Lighthouse on one page from each template before releasing changes, and compare the result with the previous release.
- 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.
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.
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 โ