Core Web Vitals Assessment Failed: What It Is And How to Fix It

Core Web Vitals Assessment failed illustration

TL;DR

“Core Web Vitals Assessment: Failed” means one or more of your site’s key performance metrics—LCP, INP (formerly FID), or CLS—don’t meet Google’s standards. This impacts user experience, SEO rankings, and conversions. Common causes include slow servers, unoptimized images, heavy JavaScript, layout shifts, and third-party scripts. Use Google PageSpeed Insights to identify issues (lab and field data), and follow best practices like lazy loading, minimizing CSS/JS, using CDNs, and optimizing images. After implementing fixes, allow 28 days for Google Search Console’s field data to reflect your improvements.

You go to check your speed and performance in Google PageSpeed Insights and see…

Core Web Vitals Assessment: Failed

PSI Report Core Web Vitals assessment failed

But that’s OK, you’re not alone. Many websites fail the Core Web Vitals assessment.

The good news is that you have already made the first step. Once you read this article, you’ll know how to join the fortunate site owners with good Google Core Web Vitals and even greater user experience.

What are Core Web Vitals

Core Web Vitals are three performance metrics Google uses to measure how real users experience a webpage. Currently, the three most important Core Web Vitals metrics are:

  • Largest Contentful Paint (LCP): Measures the loading performance. LCP tracks how long the largest visible element—typically a hero image or heading—takes to render. Ideally, LCP should occur within the first 2.5 seconds of the page starting to load.
  • Interaction to Next Paint (INP): Measures responsiveness by tracking the delay between a user’s action and the browser’s visual response. A good INP score is less than 200 milliseconds.
  • Cumulative Layout Shift (CLS): Measures unexpected visual movement of page elements during loading.  A good CLS score is less than 0.1.
Core Web Vitals metrics and their thresholds

These metrics were established to provide unified guidance for quality signals essential to delivering a great user experience to your site visitors.

Important

INP officially replaced First Input Delay (FID) as the responsiveness Core Web Vitals metric on March 12, 2024.

Why is passing Core Web Vitals important

There are two main reasons for this: user experience and rankings.

  1. First, with 40% of users leaving a website if it takes longer than three seconds to load, the last thing you want is a slow or glitchy site.
  2. Second, Core Web Vitals are a confirmed Google ranking signal. That means failing the assessment can directly impact where your pages appear in search results and how many visitors convert once they arrive.

In fact, in a webinar co-hosted with Google, NitroPack revealed just how impatient visitors are and what this means for your online business.

After monitoring 245,433 unique site visits across three e-commerce websites, we learned that:

Users visit 60% more pages if the sites load within 3 seconds

Number of pageviews per loading time and visitor journey

50% more visitors drop off when a page loads in 3 seconds in comparison with 2 seconds

Visitor Drop-Off Rate per Page Loading Time

Visitors lose patience and disproportionally start to abandon a web page at 2.75s of the page load

Visitor Patience Index per Page Loading Time

In summary, the success of your online business is now more dependent on speed and excellent user experience than ever. Failing to pass the Core Web Vitals assessment is an essential indicator your website is not engaging and converting visitors as well as it can.

Fixing poor user experience today opens a door to better rankings in Google Search, more happy visitors, and a boost in your bottom line.

What does a failed Core Web Vitals assessment mean?

A failed Core Web Vitals assessment means one or more of the three metrics—LCP, INP, or CLS—falls outside Google’s recommended threshold.

That’s right—if you fail even one of the Web Vitals metrics, you will get the same message in red.

Even a site that loads quickly on average can fail the assessment. Google requires at least 75% of real user visits to meet the “good” threshold for all three metrics individually.

Let’s see why.

How does Google measure Core Web Vitals

Google provides Core Web Vitals assessments using:

Field Data vs Lab Data Google Core Web Vitals

To measure Core Web Vitals, Google takes into account all real-user experiences recorded for your website. To pass the Web Vitals, at least 75% of users should experience a fast page load, great responsiveness, and no layout shifts, as benchmarked by LCP, INP, and CLS.

Example of LCP distribution for Passed Core Web Vitals

🙂 Important

If your site shows “Core Web Vitals Assessment: Not Applicable” or “Insufficient CrUX data,” it means Google hasn’t collected enough real-user data to generate a score. This typically happens on low-traffic pages or newly launched sites. You can still use lab data to diagnose issues while waiting for field data to accumulate.

Lab data vs. field data: Which is more important for assessing Core Web Vitals?

Lab and field data provide different insights and have distinct use cases:

1. Lab Data

  • Pros: Controlled environment, useful for debugging, and consistent testing.
  • Cons: Does not capture real-world bottlenecks or reflect real user experience.

2. Field Data

  • Pros: Represents real-world user experiences and captures true bottlenecks.
  • Cons: Can be influenced by external factors like network conditions.

Although looking at lab data might seem the easier way, to truly deliver an excellent user experience, you must primarily focus on field data.

But how do you know where your Core Web Vitals are sourced from?

Understanding your Google PageSpeed Insights report

Google PageSpeed Insights (PSI) is the most popular testing tool that provides both lab and field data about a page’s performance. For a deeper look at how these scores work in WordPress specifically, see our guide on how to read Core Web Vitals scores in WordPress.

When you run your report, the first section you see is the Core Web Vitals assessment. It is generated based on field data from CrUX, and it’s where you’ll find real answers to user experience issues.

PSI Report Core Web Vitals assessment passed

Next comes the performance score section generated with lab data from Google Lighthouse. It includes results on First Contentful Paint (FCP), LCP, CLS, Total Blocking Time (TBT), and Speed Index (SI) measured in simulated environments.

Performance Score in Google PSI Report with data by Google Lighthouse

This is why a 100/100 performance score doesn’t guarantee passing Core Web Vitals. The performance score comes from lab data, while the Core Web Vitals assessment relies on field data from real users. Your site might fly in a simulation but struggle when real visitors load it on a 3G mobile connection.

In conclusion, while lab data is essential for diagnosing issues and ensuring consistency, field data provides a more accurate representation of how real users experience a site.

Optimizing for Core Web Vitals sourced with field data will have the biggest impact on your business metrics and the success of your online business.

What causes failed Core Web Vitals assessments?

A failed Core Web Vitals assessment is rarely caused by a single issue. In fact, it can happen for a lot of reasons, like slow server response times, issues with JS and CSS, non-optimized images, excessive HTTP requests, unstable layouts, third-party scripts, and more.

Here’s a deep dive into the most common reasons:

1. Slow server response times

When your server takes too long to start sending data to the user’s browser, it can negatively impact your Largest Contentful Paint (LCP) score. This can be due to issues with your web host, the server’s physical location relative to the user, or even server misconfiguration.

Understanding how caching impacts Core Web Vitals is a good starting point for tackling server-side delays. Still, ensuring a reliable server infrastructure with a Content Delivery Network (CDN), along with optimizing server software, can alleviate this further.

2. JavaScript and CSS issues

Blocking JavaScript and CSS can delay rendering on your page. If these scripts or stylesheets are not optimized or are render-blocking, they can negatively influence both LCP and INP. Solutions include minifying and compressing files, deferring non-critical JS, and inlining critical CSS.

Every additional HTTP request your page makes—for scripts, stylesheets, and other assets—compounds the problem. Combining files where possible and removing unnecessary resources helps reduce the total rendering time.

3. Non-optimized images

Heavy and non-optimized images (as well as videos and animations) can significantly slow down page load times. Images that aren’t in next-gen formats are too large, or aren’t compressed can impact LCP.

Consider using formats like WebP, compressing images without losing quality, and utilizing lazy loading for images below the fold.

4. Poor mobile optimization

With 53% of mobile site visits abandoned due to a 3+ second load time, mobile optimization is essential. Issues like non-responsive designs and non-optimized assets for mobile can lead to failing Core Web Vitals, especially on slower mobile networks. Not to mention, this might actually cost your mobile users real money and much-needed data resources.

5. Unstable layouts

Cumulative Layout Shift (CLS) is affected when layouts are unstable. Elements that shift around on the page as it loads—like ads popping in, dynamically injected content, or even fonts causing shifts—can contribute to a poor CLS score. Ensure elements have set sizes and avoid adding content above existing content unless it’s in response to a user interaction.

6. Third-party scripts

Third-party scripts are code loaded from external domains—analytics, ads, chat widgets—that execute on your visitors’ browsers.

Embedded widgets, analytics, ads, and other third-party scripts can significantly slow down a page, impacting several Core Web Vitals.

CWV metricHow third-party scripts that cause issues
LCPRender-blocking scripts delay the largest element from appearing.
INPHeavy scripts compete for main thread time, slowing response to user interactions.
CLSDynamically injected ad slots and widgets push existing content around

Monitor the performance impact of third-party scripts, defer non-critical third-party scripts, and ensure you’re only loading essential external resources. Tools like NitroPack’s Delayed Scripts feature can automatically defer non-critical JavaScript until a user interacts with the page, while GTM Optimization (available on the Pro plan) streamlines how Google Tag Manager loads and executes.

How to fix a failed Core Web Vitals assessment

The “Diagnostics” section in your Google PageSpeed Insights (PSI) report pinpoints exactly which elements drag down each of the three metrics:

Use this section to generate a list of optimizations you should work on next, or simply steal our checklist instead:

Improve Largest Contentful Paint (LCP)

Largest Contentful Paint measures how long the largest visible element takes to render. A good LCP score is 2.5 seconds or faster.

This is usually the metric most sites struggle with, and improving it often delivers the biggest visible performance gain. Here are the most effective fixes:

  • Upgrade your hosting or add a CDN. A slow server delays everything downstream. Use a quality hosting provider and implement a Content Delivery Network (CDN) to serve assets from a location closer to your visitors.
  • Inline critical CSS above the fold. Use automated critical CSS generation tools like NitroPack to extract and inline only the CSS needed for the initial viewport, loading the rest asynchronously.
  • Preload key resources. Add <link rel=”preload”> for hero images, fonts, and other assets that the browser discovers late in the loading process.
  • Compress and convert images to next-gen formats. Serve images in WebP or AVIF, apply responsive sizing with the srcset attribute, and ensure above-the-fold images are not lazy-loaded. For WordPress sites, image optimization plugins can automate this entirely.
  • Eliminate render-blocking JavaScript. Defer non-critical scripts so they don’t block the browser from painting the largest element.
Largest Contentful Paint Element Before and After Optimization

Reduce Interaction to Next Paint (INP)

Interaction to Next Paint measures the delay between a user’s action and the browser’s visual response. A good INP score is 200 milliseconds or less.

Poor INP usually means the browser’s main thread is too busy to respond quickly. The fix involves several layers:

  • Break up long tasks on the main thread. Avoid recurring timers that overwork the main thread. Split any task longer than 50ms into smaller chunks so the browser can respond to user input between them.
  • Reduce input delay by debouncing interactions. Limit how often event callbacks execute using debouncing, and cancel unnecessary outgoing fetch requests with AbortController to free the main thread.
  • period of time and using AbortController to cancel outgoing fetch requests so the main thread doesn’t become overworked handling fetch callbacks.
  • Optimize event callbacks and yield to the main thread: Remove unnecessary callbacks and defer non-rendering work. Use scheduler.yield() or setTimeout(0) to yield back to the browser between processing steps.
  • Minimize presentation delay: Reduce your DOM size, avoid excessive or unnecessary work in requestAnimationFrame callbacks, and defer ResizeObserver callbacks.
INP Main Thread Optimization Example

Minimize Cumulative Layout Shift (CLS)

Cumulative Layout Shift measures unexpected visual movement of page elements during loading. A good CLS score is 0.1 or less.

Layout shifts frustrate users because content moves just as they’re about to interact with it. Here’s how to eliminate them:

  • Set explicit width and height on all media. Include width and height attributes on every image and video element so the browser reserves the correct space before the asset loads.
  • Reserved space for ad slots and embeds. Define minimum dimensions for ad containers using CSS min-height so that dynamically injected content doesn’t push surrounding elements around.
  • Avoid inserting content above existing content. Unless the insertion is a direct response to a user interaction (like clicking a button), adding content above the fold will cause layout shifts.
  • Optimize font delivery to prevent text shifts: Preload fonts with <link rel=”preload”>, use font-display: optional or font-display: swap, and consider subsetting your fonts to reduce file size. Self-hosting fonts instead of loading them from external CDNs also helps.

Validate and monitor your fixes

Fixing the issues above is only half the job—you also need to confirm that your changes are working in the real world.

  • Run your updated pages through Google PageSpeed Insights to verify lab data improvements immediately.
  • Check your Google Search Console Page Experience report. Field data in CrUX uses a rolling 28-day collection window, so expect up to 28 days before Search Console reflects your improvements.
  • Set up ongoing monitoring with the web-vitals JavaScript library or NitroPack’s built-in performance dashboard to catch regressions early.

How to fix Core Web Vitals on WordPress

WordPress powers over 40% of the web, making it the most common platform where Core Web Vitals issues surface. The flexibility of WordPress — its plugins, themes, and page builders — is also what makes performance optimization uniquely challenging.

The fixes below are specific to WordPress sites. Each one follows the same principle: reduce what the browser has to process so your LCP, INP, and CLS scores stay within Google’s thresholds.

1. Choose a performance-optimized WordPress host

Your hosting provider sets the performance ceiling for your entire site. No amount of frontend optimization can compensate for a slow server.

Premium-managed WordPress hosting providers, such as WP Engine, have fine-tuned their servers specifically for WordPress, ensuring faster server response times and robust caching mechanisms. By choosing a quality host, you can drastically reduce server-related delays and improve the LCP metric.

When evaluating hosts, look for built-in server-side caching, PHP 8.x support, and edge locations close to your primary audience.

2. Use CDN with edge caching

A Content Delivery Network caches your site across global servers so visitors load assets from a location near them—not from your origin server halfway around the world.

Content Delivery Networks (CDNs) like Cloudflare, Akamai, and KeyCDN can cache your website content across global servers, ensuring that your users fetch data from a server closer to their location. This significantly improves site speed and LCP times. NitroPack includes a built-in global CDN powered by Cloudflare with all paid plans, so you don’t need to set one up separately.

3. Remove unused JavaScript and CSS files from plugins

WordPress plugins, while valuable, often enqueue additional JavaScript and CSS files. Not all these files are necessary for every page. Tools like NitroPack can help you identify and remove or defer non-essential scripts and styles, preventing them from slowing down your website.

Alternatively, you can use your browser’s Coverage tab (DevTools → Coverage) to identify which scripts and stylesheets go unused on each page template, then conditionally dequeue them.

4. Disable native lazy loading on your LCP image

WordPress applies native lazy loading to all images by default, including above-the-fold images that determine your LCP score.

This is one of the most common—and least obvious—causes of poor LCP on WordPress sites. When the browser lazy-loads your hero image, it waits until the image enters the viewport before fetching it, adding hundreds of milliseconds to your LCP time.

The fix: Exclude above-the-fold images from lazy loading. You can do this manually by adding loading=”eager” to your hero image, or use NitroPack’s LCP Preload feature (available on Plus plans and above), which automatically identifies the LCP element and ensures it loads immediately.

5. Reduce the impact of third-party code

  • Audit your scripts: Use the Performance tab in Chrome DevTools to identify which third-party scripts consume the most main thread time. Remove anything non-essential.
  • Delay non-critical JavaScript until user interaction: NitroPack’s Delayed Scripts feature defers script execution until a user scrolls, moves the mouse, or taps the screen—improving both LCP and INP without breaking functionality.
  • Lazy-load offscreen assets: This ensures that off-screen assets are loaded only when a user scrolls to them, improving initial load times. WordPress supports native lazy loading for images. For iframes and videos, use NitroPack’s automated lazy loading or enable lazy loading in WordPress with a dedicated plugin.
  • Self-host frequently used third-party scripts: Sometimes, it’s faster to host third-party scripts on your own server rather than fetching them externally, especially if they don’t update often. Fonts, in particular, can be self-hosted using plugins like OMGF (Optimize My Google Fonts) to reduce external fetch times.

If you want to speed up your WordPress site beyond these individual fixes, an all-in-one solution like NitroPack handles most of these optimizations automatically.

Solving Core Web Vitals assessment failed with NitroPack

Introducing all the necessary Core Web Vitals optimizations is no easy feat.

Luckily, NitroPack is a lightweight performance optimization platform with 60+ advanced features working in sync to guarantee you pass the Core Web Vitals assessment consistently.

A leader in Core Web Vitals optimization, NitroPack is trusted by 250,000+ site owners, developers, and agencies for green web vitals and lightning-fast loading times.

NitroPack is leader in Core Web Vitals optimization

Setting up NitroPack takes 3 minutes and doesn’t require any technical knowledge. Once activated, it works on autopilot, applying CWV-focused optimizations, like:

And more!

Not sure if NitroPack is right for you? Start with the Free plan—no credit card required. It includes core optimizations like caching, image compression, and a built-in CDN so you can see the impact on your Core Web Vitals before committing to a paid tier.

How to maintain passing Core Web Vitals

While occasional audits and fixes can address existing issues, they may not prevent future ones. To maintain a high standard for Core Web Vitals consistently, you need to follow one simple rule: Perform regular audits and maintenance.

As your website grows, new content gets added, plugins are updated, and user interactions evolve. Regular checks will help you identify and rectify performance dips before they become severe.

  • Automated performance monitoring: Tools like Google’s Lighthouse can be automated to run regular audits on your website—align them with the 28-day CrUX data cycle for maximum relevance. This can provide you with timely insights and alerts for any performance issues.
  • Scheduled maintenance: Just as you’d regularly service your vehicle, your website needs periodic attention, too. Set aside specific times each month or quarter for website maintenance. This includes updates, database optimizations, and checking broken links, among other tasks.
  • Continuous testing: Integrate performance testing into your development workflow. Before pushing any updates live, make sure they are tested for performance in a staging environment.

🙂 Important

It’s also worth setting basic performance limits for your team—maximum page weight, JavaScript budget, image sizes—so that new features and content additions don’t quietly erode the gains you’ve made. Even informal guardrails help prevent performance regressions over time.

FAQs

I have a 100/100 performance score, but I still don’t pass Core Web Vitals. Why?

While a 100/100 performance score (e.g., on Google PageSpeed Insights) is impressive, it’s not a guarantee that you’ll pass Core Web Vitals. This is because the performance score is calculated based on lab data and Core Web Vitals – on field data, i.e., real user interactions. Thus, your site might be fast and responsive in a simulated environment and not perform well in real scenarios, like mobile users visiting your site on a 3G network.

We advise you to shift your focus to optimizing your Core Web Vitals instead of your performance score.

What’s RUM data, and why is it important if I want to pass Core Web Vitals?

RUM stands for Real User Monitoring. It’s a type of data collection method that captures how real-world users are experiencing a website. Unlike synthetic testing, which simulates user interactions in controlled environments, RUM collects data from actual user sessions. This makes RUM invaluable for understanding the true user experience.

When it comes to Core Web Vitals, Google uses RUM data (collected from the Chrome User Experience Report) to determine how users are experiencing a website in the real world. If you’re aiming to pass Core Web Vitals, focusing on improving metrics based on RUM data is crucial since this reflects the genuine user experience.

What are “good” URLs in Page Experience Report in Search Console?

In Google’s Page Experience Report, “good” URLs refer to web pages that meet the recommended thresholds for all three Core Web Vitals metrics (LCP, INP, and CLS).

A “good” URL should have:

  • LCP of 2.5 seconds or faster.
  • INP of 200 milliseconds or less.
  • CLS score of 0.1 or less.

Why am I getting “Core Web Vitals Assessment: No Data”?

The “Core Web Vitals: No data” status can arise for various reasons, including:

  • Insufficient data: If not enough real-world user data is available for a particular page, the assessment might be deemed “not applicable.”
  • Type of content: Certain types of pages, like non-HTML documents (e.g., PDFs), might not be applicable for Core Web Vitals assessment.
  • No user visits: If a page has extremely low traffic or no visits during the data collection period, it might not be eligible for assessment.

Besides PageSpeed Insights, what are the best tools to monitor real user Core Web Vitals data?

Google Search Console’s Page Experience report is the most authoritative source—it shows exactly how Google evaluates your pages. The Chrome User Experience Report (CrUX) provides the raw field data behind those assessments.

For real-time monitoring, the web-vitals JavaScript library lets you capture CWV scores from your own visitors as they browse. NitroPack’s built-in dashboard also tracks Core Web Vitals performance over time, so you can spot regressions without leaving your optimization tool.

Does failing Core Web Vitals directly hurt my SEO rankings and conversion rates?

Yes. Core Web Vitals are a confirmed Google ranking signal, meaning poor scores can push your pages lower in search results.

The impact on conversions is even more direct: Sites that load within 3 seconds see 60% more pageviews than slower ones, and visitors start abandoning pages disproportionately at around 2.75 seconds of load time. Fixing your Core Web Vitals improves both your search visibility and your ability to convert the traffic you already have.

How long does it take for Google Search Console to show that my Core Web Vitals are fixed?

Google’s field data in CrUX uses a rolling 28-day collection window. After implementing fixes, expect approximately 28 days before the Search Console reflects your improvements. Lab data tools like PageSpeed Insights will show changes immediately, so use them to verify your fixes are working while you wait for field data to catch up.

What are the specific differences between LCP, INP, and CLS in Core Web Vitals?

  • Largest Contentful Paint (LCP) measures loading speed—specifically, how long the largest visible element takes to render, with a good score being 2.5 seconds or faster. 
  • Interaction to Next Paint (INP) measures responsiveness—the delay between a user’s action and the browser’s visual response, with a good score being 200 milliseconds or less. 
  • Cumulative Layout Shift (CLS) measures visual stability—how much page elements move unexpectedly during loading, with a good score being 0.1 or less.
Lora Raykova

By Lora Raykova

User Experience Content Strategist

Lora has spent the last 8 years developing content strategies that drive better user experiences for SaaS companies in the CEE region. In collaboration with WordPress subject-matter experts and the 2024 Web Almanac, she helps site owners close the gap between web performance optimization and real-life business results.