# Core Web Vitals Assessment Failed: How to Fix LCP, INP and CLS (2026 UK Guide)

Source: https://pagescore.co.uk/blog/core-web-vitals-explained.html
Author: John Hitchens
Updated: April 2026

If PageSpeed Insights says "Core Web Vitals assessment failed" for your site, one of three metrics is breaking Google's quality thresholds in your real-user field data: LCP, INP, or CLS. Fix the one that is red and your assessment passes.

## What Core Web Vitals are (plain English)

Three questions measured as numbers:
- How long before the main content appeared? → **LCP**
- How quickly did the page respond when I tapped? → **INP**
- Did things jump around while loading? → **CLS**

Google calls them "Core" because they are the three that directly affect ranking.

## The three metrics in detail

### 1. Largest Contentful Paint (LCP)

Time until the largest visible element renders.

- **Good:** under 2.5s
- **Needs improvement:** 2.5-4s
- **Poor:** over 4s

**Causes of poor LCP:**
- Giant uncompressed hero image
- Slow server response (TTFB over 600 ms)
- Render-blocking CSS/JS at top of page
- Web fonts blocking text rendering
- No CDN
- Cheap shared hosting

**Fixes:**
1. Identify LCP element (PageSpeed Insights tells you)
2. Compress, resize, and serve image as WebP/AVIF
3. Preload LCP image with `<link rel="preload">`
4. Move to better hosting if TTFB > 600 ms
5. Set up Cloudflare (free tier)
6. Defer non-critical JS
7. Inline critical CSS
8. `font-display: swap` on web fonts

### 2. Interaction to Next Paint (INP)

How quickly the page responds to user input (clicks, taps, keypresses). Replaced First Input Delay in March 2024. INP measures every interaction, not just the first.

- **Good:** under 200ms
- **Needs improvement:** 200-500ms
- **Poor:** over 500ms

**Causes of poor INP:**
- Heavy JS click handlers
- Long main-thread tasks
- Too many third-party scripts (chat, pixels, A/B)
- jQuery bloat
- React re-render storms

**Fixes:**
1. Audit and remove unused third-party scripts
2. Defer non-critical JS
3. Break up long tasks
4. `requestIdleCallback` for non-urgent work
5. WordPress: WP Rocket with "delay JS" enabled
6. Remove or lazy-load jQuery

### 3. Cumulative Layout Shift (CLS)

How much the layout jumps around while loading. Added up across the page.

- **Good:** under 0.1
- **Needs improvement:** 0.1-0.25
- **Poor:** over 0.25

**Causes of poor CLS:**
- Images without width/height
- Ads loading and pushing content
- Web fonts swapping in
- Dynamically injected popups/banners/chat
- Lazy-loaded content without placeholders

**Fixes:**
1. Add `width` and `height` to every image
2. Same for videos and iframes
3. Reserve ad slot space via CSS `min-height`
4. `font-display: optional` or preload fonts
5. Fixed position cookie banners (never inject at top)
6. CSS transforms for animations (not top/left)

## Passing Core Web Vitals

Google uses **real-user field data** from Chrome User Experience Report (CrUX), aggregated over 28 days. A page passes only if 75% of users experience:

- LCP under 2.5s
- INP under 200ms
- CLS under 0.1

Lab data (Lighthouse) is not what ranks. Field data is.

## How Google uses Core Web Vitals for ranking

Confirmed ranking signal in the page experience update. Not the biggest signal — content and authority still matter more — but it is the tiebreaker between similar pages. In competitive UK niches it is often the difference between position 3 and position 11.

Applied at URL group level. A few slow pages drag down site-wide rankings. Also affects Google Ads quality score and CPC.

## How to check your Core Web Vitals (free)

1. **PageSpeed Insights** — both lab (Lighthouse) and field (CrUX) data. Source of truth.
2. **Search Console → Experience → Core Web Vitals** — site-wide health, grouped by URL pattern.
3. **PageScore** (https://pagescore.co.uk) — instant synthetic audit with speed and mobile sub-scores.

## Core Web Vitals vs Lighthouse vs PageSpeed Insights

- **Core Web Vitals** = the three metrics (LCP, INP, CLS)
- **Lighthouse** = open-source lab testing tool producing 0-100 score
- **PageSpeed Insights** = Google's public site that runs Lighthouse + shows CrUX field data

Lab score ≠ passing Core Web Vitals. Field data is what ranks.

## Common Core Web Vitals mistakes

- Obsessing over lab score (meaningless if field data is poor)
- Testing only desktop (Google ranks on mobile)
- Fixing wrong metric first (prioritise whichever is furthest from good)
- Ignoring third-party scripts (one bad widget tanks all three)
- Treating it as one-off (drifts over time, check monthly in GSC)

## Full Core Web Vitals checklist

### LCP
- TTFB under 600 ms
- CDN enabled
- Largest image compressed, sized, WebP/AVIF
- Largest image preloaded
- Critical CSS inlined
- Non-critical JS deferred
- `font-display: swap`

### INP
- Third-party scripts trimmed
- JS deferred/delayed until interaction
- Long tasks broken up
- jQuery removed or lazy
- Lightweight click handlers

### CLS
- Width/height on every image
- iframe/video sized
- Ad slots reserve space
- Cookie banner fixed position
- Fonts preloaded or `display: optional`
- No post-load content injection above existing content

Go through this once, properly — most sites pass within a week.

---

Scan your site in 8 seconds: https://pagescore.co.uk
