I opened Google Search Console one morning and saw it — a red “Failed” status on the Core Web Vitals report. After everything I had done to build the site correctly, one section was now showing pages that Google considered too slow to rank well. This guide documents exactly how I diagnosed which metric was failing and fixed it — and how you can do the same.

The “Core Web Vitals assessment failed” message in Google Search Console is not a vague warning. It is a specific, data-backed statement that real users visiting your site are experiencing performance below Google’s defined thresholds — and that your rankings are being penalised for it. The good news is that the report also tells you exactly which pages are failing and which metrics are responsible, which means you do not need to guess where to start.

This guide is structured to match how you should actually fix the problem: understand what failed, diagnose the specific cause on your site, apply the right fix for that specific cause, and validate that the fix worked. Skipping the diagnosis step and applying generic speed tips is why most sites spend weeks trying fixes that do not move their scores.

Important: field data vs lab data

Google Search Console uses field data — real measurements from actual visitors using the Chrome browser. PageSpeed Insights shows both field data and lab data (simulated). Your Core Web Vitals assessment in Search Console is based on field data only. This means a site can show good PageSpeed Insights scores in lab mode but still fail the Search Console assessment because real-world conditions (slow mobile connections, older devices) produce worse results than the lab simulation.

What “Core Web Vitals Assessment Failed” Actually Means

When Google Search Console shows a “Failed” assessment for Core Web Vitals, it means at least one of three specific metrics — LCP, INP, or CLS — is in the “Poor” or “Needs Improvement” range for more than 25% of real visitor sessions on those pages.

The threshold is important: Google requires that 75% or more of all page loads must score “Good” across all three metrics simultaneously. This is a high bar. If 26% of your visitors experience a slow LCP, your entire page group fails — even if the other 74% had perfect scores.

One failed metric fails the whole assessment. You cannot pass by getting two metrics right if the third is poor. All three must be in the Good range for at least 75% of visits.

Before panicking: the assessment is based on field data collected over the previous 28 days. A site improvement you made last week will not show in Search Console for several more weeks. This is normal and expected — fix the issue, then wait 28-35 days for the data to reflect your changes.

Step 1 — Diagnose Which Metric Is Failing

🔍 How to Find Exactly What’s Failing
1
Go to Google Search Console → Experience → Core Web Vitals
2
Click on either the Mobile or Desktop report — fix mobile first, it affects more visitors
3
Click on a failing URL group — you will see which specific metric (LCP, INP, or CLS) is causing the failure
4
Click the example URL within that group and open it in PageSpeed Insights (pagespeed.web.dev)
5
In PageSpeed Insights, look at the Diagnostics section — it shows the exact assets and code causing each metric to fail
6
Note which metric is failing and which specific recommendations appear — these are your exact fix targets

With the failing metric and cause identified, you can now apply the right fix rather than guessing. The three sections below cover every common failure mode for each metric — read the section for your specific failing metric.

How to Fix a Failed LCP Score

LCP — Largest Contentful Paint
Good: under 2.5s Needs work: 2.5–4s Poor: over 4s

LCP measures how long it takes for the largest visible element on your page — typically the hero image, featured image, or main heading — to fully render. It is the most commonly failed Core Web Vital and the one that has the most straightforward fixes available.

The critical insight: 43% of failing LCP scores are caused by unoptimised images. Before applying any other fix, compress and convert your images to WebP format. This single change moves the majority of sites from failing to passing LCP.

Fix 1: Compress and convert all images to WebP

🖼️ Image compression — the highest-impact fix
Install the Smush plugin (free) in WordPress and run the bulk optimiser on your entire media library. Enable automatic WebP conversion. WebP images are 25-35% smaller than JPEG with identical visual quality. A hero image that was 800KB becomes 200KB — eliminating 600KB of load time from your LCP element.
Free tool: Smush or ShortPixel plugin

Fix 2: Add a caching plugin

⚡ Page caching — reduces server response time dramatically
Without caching, WordPress rebuilds your entire page from the database on every single visit. A caching plugin stores pre-built page versions and serves them instantly. LiteSpeed Cache is free and reduces page load time by 40-60% on most sites. Install it, enable basic caching, and test again in PageSpeed Insights.
Free tool: LiteSpeed Cache or W3 Total Cache

Fix 3: Preload your LCP image

🚀 LCP image preloading — tells browser to load it first
If your LCP element is a specific image (usually the featured image at the top of blog posts), you can tell the browser to start downloading it immediately before it even renders the page. Add this to your theme’s header: <link rel=”preload” as=”image” href=”your-lcp-image-url.webp”>. This can reduce LCP by 0.5-1.5 seconds on image-heavy pages.
Add to theme header or use Rank Math

Fix 4: Use faster hosting

🖥️ Server response time — the performance ceiling
Your hosting provider determines the minimum possible LCP before any optimisation. A slow shared server on old hardware creates a speed ceiling that no plugin can overcome. If your Time to First Byte (TTFB) is above 600ms in PageSpeed Insights, your hosting is the problem. Switching to SSD-based hosting with LiteSpeed server support is the fix. Hostinger’s plans include both of these at beginner-friendly prices.
Test TTFB at pagespeed.web.dev
4.2s
Before fixes
1.8s
After fixes

How to Fix a Failed INP Score

INP — Interaction to Next Paint
Good: under 200ms Needs work: 200–500ms Poor: over 500ms

INP replaced First Input Delay (FID) as Google’s interactivity metric in March 2024. It measures the time between a user interacting with your page — clicking a button, tapping a link, opening a menu — and the browser visually responding to that interaction. 43% of websites still fail the 200ms threshold, making INP the most commonly failed Core Web Vital in 2026.

INP failures are almost always caused by too much JavaScript running on the main thread. When the browser’s main thread is busy processing JavaScript, it cannot respond to user interactions — creating the sluggishness that INP measures. The fix is reducing JavaScript load and execution time.

Fix 1: Remove or delay unnecessary plugins

🔌 Plugin audit — the fastest INP improvement
Every active WordPress plugin potentially adds JavaScript to every page load. Audit your plugin list and deactivate any plugin you are not actively using. For remaining plugins, check whether they load JavaScript on pages where it is not needed — many contact form plugins load their scripts on every page even when the form only appears on the contact page. Use Query Monitor (free plugin) to identify which plugins are adding the most JavaScript.
Free tool: Query Monitor plugin

Fix 2: Defer non-essential JavaScript

⏱️ JavaScript deferring — load scripts after the page is interactive
Non-essential JavaScript (analytics, chat widgets, advertising scripts) should load after the page becomes interactive — not before. Add the “defer” attribute to non-critical script tags, or use your caching plugin’s JavaScript deferral setting. LiteSpeed Cache has a built-in “Defer JS” option that handles this automatically for most scripts.
LiteSpeed Cache → JS Settings → Defer JS

Fix 3: Reduce third-party scripts

🌐 Third-party scripts — often the hidden INP killer
Third-party scripts — Google Tag Manager, Facebook Pixel, live chat widgets, pop-up tools — load from external servers and can dramatically increase INP. Each external script request adds unpredictable latency to your main thread. Audit your third-party scripts and remove any you do not actively use. For necessary ones, load them asynchronously and consider using a script manager to control when they fire.
Check with PageSpeed Insights → Third-party code

Fix 4: Switch to a lightweight theme

🎨 Theme JavaScript — often the root cause
Premium page builder themes often load 200-400KB of JavaScript on every page for visual effects, animations, and interactive elements. This creates a heavy main thread that fails INP thresholds even on fast servers. GeneratePress and Astra both load under 30KB of JavaScript — making them the fastest themes for INP performance on WordPress.
Free themes: GeneratePress or Astra

How to Fix a Failed CLS Score

CLS — Cumulative Layout Shift
Good: under 0.1 Needs work: 0.1–0.25 Poor: over 0.25

CLS measures visual stability — how much the page layout unexpectedly shifts while loading. You have experienced CLS when you go to click a button and the page jumps just as you tap it, sending you somewhere unintended. Google measures CLS as the sum of all unexpected layout shifts during a page’s lifecycle.

The most common cause of CLS failures is images, iframes, and ad units without explicitly defined dimensions. When the browser does not know how large an element will be before loading it, it renders the page without reserving space — then shifts everything when the element loads at its actual size.

Fix 1: Add width and height attributes to all images

📐 Image dimensions — the primary CLS fix
Every image tag in your HTML should have explicit width and height attributes. This tells the browser exactly how much space to reserve before the image loads, preventing layout shift. In WordPress, the block editor adds these automatically for images inserted through the media library. If you are adding images via HTML, always include: <img src=”image.jpg” width=”800″ height=”450″ alt=”description”>
Check with PageSpeed Insights → Image elements

Fix 2: Reserve space for ads and embeds

📢 Ad and embed space reservation — prevent content jumping
AdSense ads and embedded content (YouTube videos, Twitter embeds, iframes) are major sources of CLS because they load asynchronously after the page renders. Reserve space for them explicitly using CSS min-height declarations on their container elements. For AdSense, use fixed-size ad units rather than responsive auto-sizing ads where possible — responsive ads contribute more to CLS because their final size is unpredictable.
CSS: add min-height to ad containers

Fix 3: Avoid inserting content above existing content

📋 Dynamic content injection — a common theme issue
Some themes and plugins inject notification bars, cookie consent banners, or promotional headers above the page content after the initial render. These insertions push all existing content down, creating significant layout shift. If your CLS score is high and you have recently added a header banner or notification bar, test with it disabled to confirm it is the source. Use CSS transform animations instead of layout-changing animations for any dynamic elements.
Test by disabling plugins one at a time

Fix 4: Use font-display: swap for web fonts

🔤 Font loading — prevents text layout shift
Web fonts (Google Fonts, Adobe Fonts) can cause CLS when they load after the browser has already rendered text using a fallback font. If the web font is a different size from the fallback, text reflows when it loads — shifting everything below it. Add font-display: swap to your font declarations, and preload your primary font file using a preload link tag in the page header.
Add font-display: swap to CSS @font-face rules

How Long Until Google Search Console Shows Improvement?

This is the question everyone asks after applying fixes — and the answer requires patience. Google Search Console’s Core Web Vitals report uses a rolling 28-day window of real user data. After you fix an issue, the improvement in your data will take the following timeline:

  • PageSpeed Insights improvement: Immediate — shows the moment your fix is deployed. This is lab data, not field data.
  • CrUX data update (Chrome User Experience Report): 28 days minimum. This is the field data used by Search Console.
  • Search Console status change (from Failed to Passed): 28-35 days after enough good data is collected.
  • Ranking improvement visibility: 4-8 weeks after status changes to Good in Search Console.

Do not re-apply fixes or make additional changes while waiting for the 28-day window to pass. If you keep changing things, you reset the data window and cannot confirm whether your original fix worked. Apply the fix, verify it in PageSpeed Insights lab data, then wait for Search Console field data to catch up.

After 28 days, use URL Inspection in Search Console → request re-indexing → this signals to Google to re-evaluate your page’s Core Web Vitals assessment with fresh data.

How to Validate Your Fix Before Waiting 28 Days

You do not have to wait 28 days to know whether your fix worked — you just have to use the right tool. PageSpeed Insights (pagespeed.web.dev) shows lab data that updates immediately. After applying any fix, run the same URL through PageSpeed Insights and confirm the relevant metric has improved:

1
Test in PageSpeed Insights before any fix

Screenshot or note your current LCP, INP, and CLS scores. This is your baseline. Without this baseline, you cannot confirm whether a fix worked.

2
Apply one fix at a time

Apply one change — compress images, install caching, or add image dimensions — then re-test in PageSpeed Insights. Applying multiple changes simultaneously makes it impossible to know which fix produced the improvement.

3
Confirm improvement in lab data

The relevant metric should show improvement in PageSpeed Insights lab data. If compressing images improves LCP from 4.2s to 1.8s in lab data, your fix worked — the field data in Search Console will catch up over the next 28 days.

4
Request re-indexing and wait

Go to Search Console → URL Inspection → paste your fixed page URL → Request Indexing. This signals Google to re-crawl the page and begin collecting fresh field data. Check the Core Web Vitals report in 30-35 days for the status update.

The Complete Core Web Vitals Fix Checklist

📋 Core Web Vitals Fix Checklist 2026
Check Search Console → Core Web Vitals report
Identify which metric is failing (LCP/INP/CLS)
Open failing URL in PageSpeed Insights
Note specific recommendations shown
Screenshot baseline scores
Identify mobile vs desktop failure
Compress all images with Smush
Convert images to WebP format
Install LiteSpeed Cache plugin
Enable page caching
Preload LCP hero image
Check TTFB under 600ms
Audit and remove unused plugins
Defer non-essential JavaScript
Remove unused third-party scripts
Switch to lightweight theme
Disable unnecessary page builder scripts
Load scripts asynchronously
Add width/height to all images
Reserve space for ad containers
Add font-display: swap to fonts
Preload primary web font
Avoid injecting content above page
Set min-height on embed containers
Confirm improvement in PageSpeed Insights
Request re-indexing in Search Console
Wait 28-35 days for field data update
Check Search Console status change

What to Do Right Now

Step 1 — Go to Search Console right now. Open Experience → Core Web Vitals → click your failing page group. Note which metric is failing. This takes two minutes and tells you exactly which section of this guide to focus on.

Step 2 — Run PageSpeed Insights on your homepage. Go to pagespeed.web.dev, test your homepage on mobile, and screenshot your current scores. The Opportunities section lists the exact changes that will produce the biggest improvement on your specific site.

Step 3 — Apply the highest-impact fix first. For most WordPress sites this is image compression — install Smush, run the bulk optimiser, and re-test. If your LCP improves significantly in PageSpeed Insights lab data, you have found your primary issue.

For a complete technical SEO audit including Core Web Vitals, use the free SEO analyzer — it checks multiple technical factors automatically and flags issues worth fixing. And for the complete explanation of what each Core Web Vital measures and why it affects your rankings, see our Core Web Vitals guide.

A failing Core Web Vitals assessment is not a permanent condition — it is a solvable problem with specific, documented fixes. Every site that passes today was once failing. The difference is methodical diagnosis followed by targeted fixes, not generic speed tips applied in the hope that something sticks.

Frequently Asked Questions

Common questions about fixing Core Web Vitals assessment failed in Google Search Console.

Yes — Core Web Vitals are a confirmed Google ranking signal. However, they are one signal among many. A page with excellent content and strong backlinks will still rank above a page with faster Core Web Vitals but weaker content. Google uses CWV as a tiebreaker between pages of similar quality — and as an absolute floor for page experience. Sites that pass all three thresholds see measurably lower bounce rates and longer dwell times, which produces compounding ranking benefits beyond the direct CWV signal itself.

PageSpeed Insights shows both lab data (simulated) and field data (real user measurements). Google Search Console’s Core Web Vitals assessment uses only field data from real Chrome users. Lab data simulates ideal conditions — a fast connection, a modern device, no other tabs open. Real users visit on slow mobile connections, older phones, and congested networks. This produces significantly worse scores in field data than lab data. A PageSpeed score of 90 in lab mode can still produce failing Core Web Vitals in Search Console if real users are predominantly on slow mobile connections.

Google Search Console Core Web Vitals reports update based on a rolling 28-day window of real user data. After applying a fix, you will start to see improvement in the Search Console data after approximately 28-35 days. Improvement happens gradually — as more of your fixed-site visits replace older failing-site visits in the 28-day window. You can verify your fix worked immediately using PageSpeed Insights lab data, but Search Console field data takes the full 28-day cycle to reflect significant changes.

For most WordPress sites — yes, completely. The most impactful fixes (image compression, caching, plugin audit, and image dimension attributes) require no code and no technical knowledge beyond installing free plugins and running their built-in tools. The fixes that require developer help are advanced JavaScript optimisation, custom server configuration, and theme-level code changes. Most sites can move from failing to passing Core Web Vitals using only the plugin-based fixes described in this guide — especially for LCP and CLS failures.

Fix whichever metric is causing your assessment to fail — since all three must pass simultaneously, fixing two while one remains poor still produces a failed assessment. If all three are failing, prioritise LCP first because it has the most straightforward fixes (image compression and caching) that typically produce the biggest score improvements in the shortest time. CLS is usually the easiest to fix (adding image dimensions) and should be addressed second. INP is the most complex to fully resolve but is often partially improved by the plugin audit and JavaScript deferral steps taken to improve LCP.

R
Rank Growth Lab
Rank Growth Lab publishes free SEO tools and practical guides for bloggers and indie founders. The Core Web Vitals fixes in this guide are applied to rankgrowthlab.com directly — every recommendation comes from tested, documented experience on a live site.