How to run a Core Web Vitals test (and read a failed assessment)
·4 min read
The fastest Core Web Vitals test is PageSpeed Insights. Paste a URL and the top box shows whether real Chrome users passed LCP, INP and CLS over the last 28 days. Use the Search Console report to see which groups of pages fail across the whole site, and Chrome DevTools or the web-vitals library to find out why. "Core Web Vitals Assessment: Failed" means at least one of the three metrics missed its "good" threshold at the 75th percentile of real visits, and the lab score below it does not change that verdict.
Field data is what real visitors experienced, and it is what Google uses. Lab data is one simulated load, for debugging. Keep them apart and the tools make sense.
Ways to test Core Web Vitals and when to use each
Pick the tool by the question you are asking.
| Tool | Data | Scope | Use it to |
|---|---|---|---|
| PageSpeed Insights | Field (CrUX) and lab (Lighthouse) | One URL, with origin fallback | Get a pass or fail for one page |
| Search Console Core Web Vitals report | Field (CrUX) | Groups of similar URLs, whole property | Find which templates fail and track a fix |
| CrUX API or CrUX Vis | Field | URL or origin, history over time | Watch trends and compare origins |
| Chrome DevTools Performance panel | Your own local load, optional field comparison | The page in front of you | See which element, script or shift causes the problem |
| web-vitals JavaScript library | Field, from your own visitors | Every page you install it on | Measure pages CrUX does not cover and get attribution |
For a single page, PageSpeed Insights is enough. The field box at the top is the verdict, and our PageSpeed Insights guide walks through the rest of that report.
Search Console groups URLs that look alike, gives each group the status of its worst metric, and splits mobile from desktop. If 400 product pages fail on CLS, you see one group. After you ship a fix, "Start tracking" watches the issue for 28 days, per Google's report documentation.
DevTools is where you debug. Open the Performance panel and it shows your local LCP and CLS right away and INP once you click or type, per Chrome's docs. It also names the LCP element and the shifting nodes.
The web-vitals library is a small script from the Chrome team that sends each metric from real visitors to your analytics.
import { onCLS, onINP, onLCP } from "web-vitals/attribution";
onLCP((metric) => sendToAnalytics(metric));
onINP((metric) => sendToAnalytics(metric));
onCLS((metric) => sendToAnalytics(metric));The attribution build names the element or interaction behind a bad value, which you need when INP fails and the lab shows nothing.
What "Core Web Vitals Assessment: Failed" means
It means the 75th percentile of real visits missed "good" on at least one metric in the last 28 days. PageSpeed Insights passes a page only when LCP, INP and CLS are all good at p75. If there is not enough INP data, LCP and CLS alone decide it. If LCP or CLS lack data, the page cannot be assessed. All three rules come from Google's PSI documentation.
Three things trip people up.
A 95 lab score can sit under a failed assessment. Lighthouse loads the page once with no user input. Real visitors on slow phones do worse, and a lab load cannot measure INP.
The verdict may be about your whole site. If the URL lacks enough samples, PSI falls back to origin data and says so. A fast landing page can fail because the rest of the domain is slow.
Fixes take weeks to show. The data is a rolling 28 days, so expect about a month before the verdict flips.
The thresholds and what each metric measures are in our Core Web Vitals guide.
What to fix first after a failed assessment
Fix the metric that failed, on the device that failed, in the template that carries the most traffic.
- Read the field box. Note which metric failed and on which device.
- Check whether the data is for the URL or the origin. If it is origin data, open Search Console to find the failing URL group.
- Reproduce it in DevTools on that template with CPU throttling on.
- Fix one cause, confirm the lab number moved, then wait for the field data.
If LCP failed, our LCP guide breaks it into its four subparts so you fix the slow one. For INP, look for long JavaScript tasks on click. For CLS, look for images without dimensions, late banners and web fonts that swap.
Why your Core Web Vitals test shows no field data
There is no field data when Chrome has not collected enough real visits to the URL or the origin. CrUX includes only public pages with enough distinct samples. New pages, low-traffic sites, pages behind a login and staging hosts usually have none.
Without it, install the web-vitals library to collect your own numbers, and use the lab run as a debugging guide. Google has no field record to judge the page by either.
Run a Core Web Vitals test on your own page
Our Core Web Vitals Snapshot runs Google's PageSpeed Insights for one public URL, on mobile or desktop. It shows the field LCP, INP and CLS at p75 when CrUX has them, says whether they came from the URL or the whole origin, and states the pass or fail in plain words. Next to that it shows the Lighthouse lab numbers and the eight lab opportunities with the largest estimated savings.
With no field record, it says the lab run is the only signal. It does not test a list of URLs, run Lighthouse on our own browsers or see your Search Console data. Each run costs 20 credits.