Core Web Vitals are Google's attempt to measure how a page actually feels to a real human being — how fast it loads, how quickly it answers a tap or a click, and how stable it is while all of that settles. They are a genuine ranking signal, and just as importantly they are a direct throttle on conversions. In 2026 that second part matters more than it used to, because the bar for "feels fast" has moved twice: Google now ranks on real-user field data, and AI answer engines are quietly folding page-level quality signals into which sources they decide to quote. A slow page is no longer just losing positioning. It's losing citations.
Here's what the current thresholds actually are, what makes sites fail them, and the concrete moves — most of them Next.js-native — that get you passing and keep you there.
The three metrics, and how the thresholds actually work
The first thing to internalize is that Core Web Vitals are not a Lighthouse score. They are percentiles of real traffic, measured over a rolling 28-day window, and evaluated at the 75th percentile of that distribution. That single detail changes how you read everything below: it means that even if the average visitor is happy, the slowest quarter of your users can sink your entire report. You don't need the typical user to be fast. You need the slow tail to be fast too.
| Metric | What it measures | 2026 threshold |
|---|---|---|
| LCP — Largest Contentful Paint | How long until the page's main content is visible | Under 2.5 seconds |
| INP — Interaction to Next Paint | How quickly the page responds to and repaints after an interaction | Under 200 ms |
| CLS — Cumulative Layout Shift | How much the page unexpectedly jumps around while loading | Under 0.1 |
Three notes before we go metric by metric. First, these are field-data thresholds: Google measures them from the Chrome User Experience Report — real browsers, real devices, real networks — not from your local Lighthouse run. Second, INP replaced First Input Delay back in March 2024, and the swap is more than cosmetic: FID only measured the first interaction, while INP evaluates the worst interaction across the entire visit. Third, the supporting metrics Google tracks alongside the big three — Time to First Byte, First Contentful Paint, and Total Blocking Time — still matter as diagnostics, even though they don't decide pass or fail. We've written up the full story of why lab tests and field data so often disagree, and it's worth reading before you start "fixing" scores.
LCP — the loading metric
If you'd rather have a specialist run the measurement and the fixes, our site engineering service handles exactly this end to end.
LCP measures how long until the largest visible block of content renders. On most commercial pages that's the hero image; on a long article it's usually the first big heading or body paragraph. The threshold is 2.5 seconds, and it is almost always dominated by one of three things:
- Slow server response. Time to First Byte eats straight out of your budget. If the server burns 800ms before sending a byte, you have under two seconds left for everything else.
- The LCP image itself. An oversized hero downloaded at full resolution, or a hero image that isn't flagged as the priority, quietly blows the entire metric.
- Render-blocking CSS or fonts. Stylesheets and fonts that block first paint delay everything that follows, even on a fast server.
The fixes are concrete:
Serve the LCP image in AVIF or WebP, at a real responsive size, and preload it. In Next.js, pass priority to the Image component and it handles the rest — eager loading, fetchpriority="high", correct sizing:
import Image from "next/image";
<Image
src="/hero.webp"
priority
fill
sizes="(min-width: 768px) 60vw, 100vw"
alt="Hero visual"
/>
Push TTFB down. A fast host plus a CDN that serves from the edge is table stakes. And render smart: a static or ISR page rendered once at build time beats a page that re-renders on every single request.
Trim the font payload. Two weights of one variable font beat five separate font files, and font-display: swap keeps text visible while the real typeface loads — which also protects your CLS.
INP — the responsiveness metric
INP answers one question: when a person taps a link, clicks a button, or types into a field, how quickly does the page visibly respond? Crossing that 200ms bar is genuinely hard on content-heavy pages, and there's one dominant reason it gets missed: too much JavaScript competing for the browser's main thread.
Every script that runs on load — the tag manager, the chat widget, the heap of analytic snippets, the ad iframes, the React hydration pass — takes a slice of the exact moment the user is trying to interact. When the main thread is busy parsing a 900KB bundle, buttons feel dead, and INP records precisely how dead. Long tasks over 50ms are the enemy; one busy stretch on load can mark the whole visit.
How to fix it, in order of impact:
- Ship less JavaScript, and prune third-party scripts. Audit every snippet that loads on page view. Each one is a tax paid by every visitor on every page. The single biggest INP win on most sites is deleting scripts, not optimizing them.
- Keep the main thread free. Defer non-critical code, split bundles so only the interactive islands ship to the browser, and chunk heavy work so no single task blocks for 50ms or more.
- Use Server Components by default. This is where the App Router earns its keep: Server Components render on the server and deliver HTML without hydration JavaScript, which collapses main-thread work at load. Only genuinely interactive client components need a hydration pass at all.
- Cut hydration where you can. For client components, render the static shell and hydrate on interaction with
next/dynamicif the widget doesn't need server HTML:
const HeavyWidget = dynamic(
() => import("../components/HeavyWidget"),
{ ssr: false }
);
A page that stays responsive the whole time it's loading is a page that converts, full stop.
CLS — the stability metric
CLS scores unexpected movement — a block of page shifting after someone started reading, or a button moving just as the cursor lands. The threshold is 0.1, and the causes are a rogues' gallery:
- Images and embeds without reserved space.
- Fonts loading in and triggering reflow.
- Banners injected above already-rendered content.
- Layout animations fired on scroll.
- Consent or cookie widgets appearing after the page has settled.
The fixes are mechanical: give every image a width and height or an aspect-ratio, use reserved min-height on embeds and ad slots, and never insert content above existing content after a user has begun interacting. Next.js helps out of the box here — Image reserves its aspect ratio automatically, and next/font handles font loading so text doesn't jump from a fallback face to the real one.
Why this matters more in 2026, not less
Four reasons, in ascending order of how many people miss them:
1. Rankings. Core Web Vitals are a real, if moderate, ranking signal. Passing them rarely rockets you to #1 — but failing them is a tax on every other ranking and conversion effort you make. It's the difference between running a clean race and running one uphill.
2. Indexing. Crawl speed quietly depends on site speed. Googlebot spends a finite request budget, and it spends it more eagerly on sites that answer fast. A slow section trains the crawler to back off, which is how new pages end up stuck waiting in the index — and our indexing guide covers how to unstick them.
3. AI citations. The answer engines that matter in 2026 weigh speed and quality when they pick sources to quote. If your page takes four seconds on a phone, you're visibly worse than the competitors the AI settled on — and the AI has the field data to know it.
4. Conversions. This was always true and is still true: every additional second of load time drags conversion rates down and bounce rates up. Improving Core Web Vitals frequently lifts revenue before it ever moves a ranking. If you're tracking SEO by the numbers, this is where the ROI shows up first.
A disciplined order of operations
Most teams fix Core Web Vitals in the wrong order. Ours goes:
- Confirm the problem with field data first. Open Search Console's Core Web Vitals report and identify which URL groups actually fail. If real users pass, a red Lighthouse score is a problem for later, not a crisis.
- Target failing templates, not the whole site. Fix the three or four URL patterns that are failing, and the report improves disproportionately.
- Fix the biggest lever per metric. TTFB and the hero for LCP, JavaScript for INP, reserved space for CLS. One change, re-measured.
- Validate in the lab, deploy, then watch the field. Ship the fix, then monitor the 28-day field window and the trend, not the overnight snapshot.
Measure with real-user data
Lighthouse is a debugger, not a report card. Google ranks on field data, so that's what you should be planning around. The three tools that matter:
For a deeper dive, see our guide on surviving a site migration.
- Search Console's Core Web Vitals report — which URL groups fail, with a direct link to the CrUX data behind them.
- PageSpeed Insights — field data in the CrUX panel plus lab diagnostics in the Lighthouse panel.
- Real User Monitoring —
web-vitalsthrough your analytics so you see your own distribution, not just the Chrome sample.
The Next.js advantage
We build in Next.js specifically to win this game: Server Components ship meaningful HTML with a fraction of the hydration JavaScript, Image and next/font handle the two most common LCP and CLS offenders by default, and streaming means the browser starts painting before the slow parts of a page finish. If you're curious how all of that holds up under a real crawl, our JavaScript SEO guide covers how Next.js and React sites stay fully crawlable while they're fast.
A site that passes Core Web Vitals isn't just a better ranker. It's a better business, because it treats the slowest visitor the way you'd treat your best one. Our engineering practice is how we build that in from the start. If your Search Console report is littered with failing groups and you want to know which metric is costing you traffic and sales, book a free website teardown and we'll show you exactly where the time is going — and what to ship to get it back.