Web Development

Core Web Vitals: What Actually Moves the Needle

Serve Innovate 8 min read

Most performance work fails for the same reason: it optimizes the number in the lab rather than the experience in the field. A perfect Lighthouse score on a developer laptop tells you very little about a customer on a mid-range Android phone on a congested network.

Core Web Vitals matter for two reasons. They are a genuine proxy for whether a site feels usable, and they are a ranking input. But the fixes that move them are not the ones most commonly recommended.

The three metrics, briefly

  • LCP (Largest Contentful Paint) — how long until the main content is visibly rendered. Target under 2.5 seconds.
  • INP (Interaction to Next Paint) — how quickly the page visually responds to taps and clicks, measured across the whole visit. Target under 200 milliseconds.
  • CLS (Cumulative Layout Shift) — how much content jumps around while loading. Target under 0.1.

INP replaced First Input Delay because FID only measured the delay before processing started, which flattered pages that responded instantly and then froze. INP measures the full interaction, which is what a user actually perceives.

Fixing LCP

LCP is almost always one of three things: a slow server response, a render-blocking resource, or an oversized hero image. In that order.

  1. Measure the server first. If time to first byte is 800 ms, no amount of front-end work will get LCP under 2.5 s. Caching, a CDN, and fixing the slow query usually beat any bundler change.
  2. Preload the LCP element and nothing else. Preloading everything is the same as preloading nothing — it just moves the contention.
  3. Serve the hero image at the size it renders, in AVIF or WebP, with explicit width and height, and fetchpriority="high".
  4. Self-host critical fonts with font-display:swap and preconnect to any font origin you cannot self-host.
If your LCP element is an image, the entire optimization is: make it smaller, discover it earlier, and stop anything else competing for bandwidth before it.

Fixing INP

INP problems are long tasks on the main thread. The usual culprits are hydration of components nobody interacted with, oversized third-party scripts, and event handlers doing layout-thrashing work synchronously.

  • Audit third-party scripts ruthlessly. Chat widgets, heat-mapping, and tag managers are frequently the single largest INP contributor on an otherwise fast site.
  • Break up long tasks and yield to the main thread so the browser can paint between chunks.
  • Defer non-critical JavaScript until interaction or idle time rather than parse time.
  • Give immediate visual feedback on interaction — a pressed state that paints in 50 ms buys you the time to do the real work.

Fixing CLS

CLS is the cheapest of the three to fix and the most commonly ignored. Reserve space for anything that loads late: dimensions on every image and iframe, a min-height on ad and embed slots, and no content injected above existing content after paint. Font swapping causes shift too — matching fallback metrics with size-adjust removes most of it.

Trust field data over lab data

Lab tools such as Lighthouse are diagnostic; they tell you what is slow and why. Field data — the Chrome UX Report, or your own real-user monitoring — tells you whether it matters. Ranking uses field data. Optimise against the 75th percentile of your actual visitors, segmented by device, and ignore the score badge.

How we approach performance

Every site we build ships with a performance budget agreed before design begins, image and font strategy decided at build time rather than retrofitted, and third-party scripts loaded on a deliberate schedule. Retrofitting speed onto a finished build costs several times what designing for it costs upfront.

The short version

Fix the server, ship one properly sized hero image, cut the third-party scripts you cannot justify, reserve space for late-loading content, and measure real users. That list covers the large majority of real-world Core Web Vitals failures — long before anything exotic is required.

Serve Innovate

We design, build, market and scale digital experiences — e-learning, websites, campaigns and custom software — for organizations that want one accountable partner rather than four.

Work with us

Frequently asked

What is a good Core Web Vitals score?
A page passes when the 75th percentile of real users records LCP under 2.5 seconds, INP under 200 milliseconds, and CLS under 0.1. All three thresholds must be met on both mobile and desktop field data.
Do Core Web Vitals affect Google rankings?
They are a confirmed ranking signal, but a comparatively small one. They act mainly as a tie-breaker between pages of similar relevance and quality, so they cannot compensate for weak content — though poor scores can cost you positions you would otherwise hold.
How do I measure Core Web Vitals on my own site?
Use field data, not lab data, as the source of truth. The Chrome User Experience Report powers Search Console's Core Web Vitals report and reflects what real visitors experienced over the trailing 28 days. Lighthouse and PageSpeed Insights run a simulated load on one device profile — useful for diagnosing a specific fix, misleading as a pass/fail verdict. When the two disagree, believe the field data.
Why does my Lighthouse score say 100 but Search Console still reports failures?
Because they measure different things. Lighthouse simulates a single load on throttled hardware in a clean environment. Field data aggregates real visitors on real devices with real network conditions, browser extensions, and cold caches. A page can score 100 in the lab and still fail in the field if a meaningful share of your audience is on older phones or slower connections.
Which Core Web Vital is usually the easiest to fix?
CLS, in most cases. Layout shift is typically caused by images and ad slots without reserved dimensions, or by web fonts swapping in at a different size. Setting explicit width and height attributes and reserving space for dynamic content resolves a large share of CLS problems without architectural change. LCP and INP usually require deeper work on rendering and JavaScript execution.
Do Core Web Vitals matter more on mobile or desktop?
Mobile, in practice. Google evaluates the two separately, but mobile is where constrained CPUs and variable networks turn small inefficiencies into visible delays — and for most sites it is also the majority of traffic. If you have to prioritize one, optimize the mobile experience and desktop generally follows.
Read next

Ready to build something remarkable?

Tell us what you are trying to achieve. We will come back within one business day with a clear, honest view of how to get there.