How do you pass Core Web Vitals? The 2026 fix guide for LCP, INP and CLS
You pass Core Web Vitals by diagnosing which metric is actually failing — using real-user field data, not a lab score — and then applying the fix specific to that metric. LCP problems are about resources, so you compress and preload the main image and speed up the server; CLS problems are about missing dimensions, so you set explicit width and height on everything; and INP problems are about JavaScript, so you ship less of it and break up the long tasks that block the page. All three must sit in the good range at the 75th percentile of real visits for a page to pass, and as of Google’s March 2026 update the assessment is site-wide, so you cannot fix only a few top pages. The durable shortcut is to build lean from the start, because a static, low-JavaScript site passes most of these by default.
Start by diagnosing the right metric
The most common reason teams waste effort is fixing the wrong thing, so the first step is not a code change — it is measurement. Google ranks on field data from real visitors in the Chrome User Experience Report, not on a lab test, and the two often disagree by a wide margin; a green Lighthouse score on your laptop tells you almost nothing about a mid-range phone on 4G (That’s It Tools, 2026). Start in Google Search Console’s Core Web Vitals report, find the metric that is failing at the 75th percentile, and begin there (W3era, 2026).
For diagnosis at the page level, the practical tool is the open-source web-vitals JavaScript library, which reports LCP, INP and CLS from your actual users and can even tell you which element was the LCP (DEV / Riemer, 2026). Send those readings to your analytics, sliced by route and device, because a single aggregate number hides the page or the phone where the problem actually lives. The rule that saves the most time: do not work on LCP because you find it satisfying while INP silently tanks — fix the metric that is failing.
How do you fix LCP?
LCP is almost always about one specific resource, so the fix is targeted rather than general. The mistake teams make is “we optimized the images” — when the answer is the image, the single largest element above the fold (DEV / Riemer, 2026). Identify it, then prioritize it: serve it as AVIF or WebP compressed to a sensible size, give it fetchpriority="high", never lazy-load it, and preload it — but preload only it, because preloading everything creates its own contention (Technova, 2026).
The other half of LCP is the server and the render path. Reduce time to first byte below roughly 600 milliseconds with caching and a CDN, and remove the render-blocking CSS and JavaScript that delay the first paint (Digital Pilots, 2026). The fastest wins for the least work, in order, are usually: compress the hero image, remove heavy third-party scripts, deploy a CDN with caching, and reduce the JavaScript bundle (DEV / Dharanidharan, 2026). A slow server nullifies every front-end optimization, so it is worth checking first.
How do you fix CLS?
CLS is the most fixable of the three, because it comes almost entirely from one cause: elements that load without reserved space. Give every image, video, iframe and ad slot explicit width and height attributes or a CSS aspect-ratio, so the browser holds the space before the asset arrives (Digital Pilots, 2026). For anything injected dynamically — ads, embeds, a chat widget — reserve a minimum height on its container, so an empty space is the worst case rather than a jump that shoves content down as the user reads (DEV / Riemer, 2026).
Fonts are the other classic source. Use font-display: swap and preload your key fonts, and set fallback-font metrics so the swap from system font to web font does not reflow the text — a technique many teams have never heard of that can bring CLS from 0.15 down to 0.02 (DEV / Riemer, 2026). Because the fixes are so mechanical, CLS has the highest pass rate of the three vitals — which means failing it is usually a sign of missing fundamentals rather than a hard problem.
How do you fix INP — the hard one?
INP cannot be tweaked; it has to be re-architected, which is why about 43% of sites fail it and it is the most commonly failed vital in 2026 (Digital Applied, 2026). The mechanism is simple to state and hard to fix: any JavaScript task that runs longer than 50 milliseconds blocks the main thread, and while it runs the browser cannot respond to a tap, click or keypress (ToolsPivot, 2026). One consultant described a client whose e-commerce filters had a 600ms INP because every click triggered a full re-render — the kind of problem the old First Input Delay metric never caught (That’s It Tools, 2026).
The fixes all point the same direction: do less JavaScript, and do it later. Reduce the total bundle and split it so code loads on demand; defer non-critical scripts; move heavy computation to a web worker; and yield to the main thread during interactions so an event handler does almost nothing synchronously (Digital Applied, 2026). The pattern to internalize: anything expensive — filtering, sorting, logging, computation — gets yielded, deferred or offloaded, so the interaction paints first and the work happens after (DEV / Riemer, 2026). Audit third-party scripts hardest of all, since analytics, chat and consent tools are a frequent INP culprit you did not write.
Which pages fail which metric?
The failures cluster by page type, which lets you triage instead of auditing everything at once. Blog posts and home pages most often fail LCP, because a large hero image is the slowest element to load. Product and category pages tend to fail CLS, since prices, stock badges and recommendations get injected after the first paint and shift the layout. And INP failures concentrate on the most interactive pages — checkouts, landing pages with forms, and filter-heavy listings — where heavy JavaScript runs on every tap (W3era, 2026).
Knowing the pattern tells you where to look first. If your money pages are product or category pages, start with CLS and reserve space for the dynamic elements; if they are content pages, start with the hero image and LCP; if they are checkouts or app-like flows, the work is INP and it will take longer. Because the 2026 assessment is whole-site, fixing the template behind each page type lifts every page of that type at once — the place where the effort pays off most.
What changed in 2026: it’s now site-wide
The biggest strategic shift is not a new metric but a wider scope. Google’s March 2026 core update moved Core Web Vitals from a per-page assessment to a whole-site model (ToolsPivot, 2026). The analogy that fits: it used to be a per-employee performance review, and now one slow employee drags down the whole team’s score.
In practice this kills the old shortcut of optimizing your top 20 landing pages and ignoring the rest. If a large share of your pages — say 40% — fail LCP, that can suppress rankings even for the pages that individually pass all three metrics (ToolsPivot, 2026). Performance is now a property of the whole site, which strongly favors a template-level approach: fix the shared layout, the global scripts and the component library once, and every page built on them improves together.
What tools do you actually need?
A small, free stack covers the whole job. Google Search Console shows which URL groups fail at the 75th percentile in field data — your source of truth for what to fix. PageSpeed Insights combines that field data with a Lighthouse lab run for a single URL, useful for a quick read. For deeper diagnosis, Chrome DevTools in the Performance tab records a real interaction and marks the LCP, CLS and INP events on the timeline, so you can see exactly which element or which task caused the problem (That’s It Tools, 2026). And the web-vitals library, running in production, gives you continuous real-user numbers sliced by route and device.
The discipline that matters more than any tool: use the lab as a diagnostic and the field as the scoreboard. Lighthouse exists to find problems, not to celebrate — the number that affects rankings lives in CrUX, and the gap between the two can be an order of magnitude (DEV / Riemer, 2026).
How long until fixes show up?
Not immediately, and knowing that prevents a lot of second-guessing. Lab tools like Lighthouse reflect a change the moment you ship it, but the field data Google actually ranks on comes from the Chrome UX Report on a rolling 28-day window, so a genuine fix can take up to a month to surface in Search Console (That’s It Tools, 2026). The workflow is therefore: implement, verify in staging, deploy, and then wait for the field data to catch up — not refresh PageSpeed Insights an hour later expecting a new number.
A useful early-warning habit is to set alerts below the official thresholds — for example INP over 160ms, LCP over 2.0s, CLS over 0.08 — so a regression after a deploy reaches you before it has spread across your 28-day window and affected rankings (Digital Applied, 2026). You are watching a slow-moving gauge, so you want the warning early.
How do you keep it from regressing?
You treat performance as a product feature with an owner, not a project you finish. The teams that hold their scores are the ones where someone owns the metrics, they are reviewed weekly, regressions are treated as bugs rather than backlog, and passing them is part of the definition of done (DEV / Riemer, 2026). The teams that fail are the ones that treat vitals as something to get to after the next launch — and every new image, script and feature quietly erodes the score in the meantime.
The mechanism is monitoring you do not have to remember. Run Lighthouse in continuous integration on every significant deploy as a diagnostic, and keep real-user monitoring with the web-vitals library running in production as the scoreboard (DEV / Dharanidharan, 2026). Because the assessment is now site-wide, catching a regression at the template level — before it ships to every page — is worth far more than fixing pages one at a time after the fact.
The shortcut: build lean so you pass by default
Read back over the fixes and a pattern emerges: almost all of them are versions of “ship less JavaScript and let the browser render HTML.” Compress and preload one image, reserve space with plain attributes, and move work off the main thread — these are the natural state of a site that was built lean rather than retrofitted. A static, low-JavaScript architecture passes most of Core Web Vitals by construction, which is why the fastest sites rarely look like they were “optimized for speed.” They were just built well, a point we make in our guide on whether Astro is good for SEO and performance.
That is the difference between chasing the metrics and never having to. A heavy site spends its life clawing back milliseconds the architecture keeps adding; a lean one starts with the budget intact and spends its effort keeping a good thing good. The full case for why this score is the proof that the rest of your site is sound — readable, accessible, durable — is in our pillar on Core Web Vitals and site speed. Passing is good; building so that passing was never in doubt is better.
Frequently asked
- How do you pass Core Web Vitals?
- Diagnose the metric that is actually failing using real-user field data from the Chrome UX Report or Search Console, then apply the fix specific to it: LCP problems are about resources (compress and preload the hero image, speed up the server), CLS is about missing dimensions (set width and height on everything), and INP is about JavaScript (ship less of it and break up long tasks). All three must be in the good range at the 75th percentile for a page to pass.
- How do you fix a bad INP score?
- INP is a JavaScript-architecture problem, so the fix is structural rather than a quick tweak. Reduce the total amount of JavaScript, split large bundles so code loads on demand, move heavy computation to a web worker, defer non-critical scripts, and yield to the main thread during interactions so event handlers do almost nothing synchronously. Audit third-party scripts like chat widgets and analytics, which are a common cause. About 43% of sites fail INP, making it the hardest of the three.
- How do you fix LCP?
- Find the single element that is the LCP — usually one above-the-fold image — and prioritize it: serve it as AVIF or WebP, give it fetchpriority="high", never lazy-load it, and preload it. Then reduce server response time below about 600ms with caching and a CDN, and remove render-blocking CSS and JavaScript. Compressing the hero image and improving the server are usually the biggest LCP wins for the least effort.
- What changed about Core Web Vitals in 2026?
- Google's March 2026 core update shifted Core Web Vitals from a per-page assessment to a whole-site model. Before, you could fix your top landing pages and ignore the rest; now a large share of slow pages can suppress rankings even for pages that individually pass. The practical effect is that performance has to be addressed across the whole site, rather than on a handful of priority URLs.
- How long does it take for Core Web Vitals fixes to show up?
- Lab tools like Lighthouse show improvements immediately, but the field data Google ranks on comes from the Chrome UX Report on a rolling 28-day window, so a genuine fix takes up to a month to appear in Search Console. The workflow is to implement, verify in staging, deploy, and then wait for the field data to catch up rather than expecting an instant change.