Skip to content
Dawit.

performance

Measuring Core Web Vitals without fooling yourself

Lab scores lie to you politely. How to measure LCP, INP, and CLS in ways that reflect what readers on real phones actually experience.

· 3 min read

Contents

The most common performance mistake is not slow code. It is measuring on your own machine, seeing a good number, and believing it. My thesis: a Lighthouse score collected on a developer laptop is a compliment, not a measurement, and treating it as ground truth is how fast-looking sites end up slow for the people who matter.

The three numbers, in reader terms

Core Web Vitals compress the reading experience into three metrics, and each maps to a moment a reader actually feels:

  • LCP — Largest Contentful Paint. How long until the main thing is visible. For an article, that is the title or the hero image. Target: under 2.5 seconds; under 1.8 if you are serious.
  • INP — Interaction to Next Paint. When the reader taps something, how long before the page visibly responds. Above ~200 ms, the interface feels like it is ignoring them.
  • CLS — Cumulative Layout Shift. How much the page jumps around while loading. The paragraph you were reading leaping downward because an image finally arrived is CLS, and readers experience it as hostility.

Lab data versus field data

Lab tools — Lighthouse, WebPageTest — run your page in a controlled environment. Field data is what real visitors’ browsers report back through the Chrome UX Report. The two disagree constantly, and when they do, the field is right, because the field is the actual readers.

The gap has a shape: your lab machine has a fast CPU, a warm cache, and an unmetered connection. Your median reader — as I argued in why static sites win — is on a mid-range Android phone on a cellular connection. A page that scores 99 on an M-series laptop can take six seconds to paint on a $200 phone. Same page. Both numbers true. Only one of them matters.

Measuring honestly

Three practices close the gap between what you measure and what readers get:

Throttle like you mean it

Run Lighthouse with mobile CPU throttling on and treat the throttled number as the real one. Better, test on an actual cheap Android device over a cellular connection at least once per redesign. The device emulator in desktop Chrome underestimates both CPU and network pain — it simulates a slow network on a fast computer, which is exactly the combination readers do not have.

Watch the field, not the snapshot

Search Console’s Core Web Vitals report and the CrUX dashboard show the 75th-percentile experience of your actual traffic over 28 days. This is the number Google uses as a ranking signal, and it is the number that reflects reality. Check it monthly. A regression there is a real regression even if every lab run looks clean.

Gate in CI so regressions can’t land quietly

Performance decays by accumulation — one more script, one unsized image at a time. The countermeasure is a hard threshold in continuous integration that fails the build when a budget is exceeded, which is the subject of performance budgets are a design decision. A budget that only produces warnings is a budget that will be exceeded.

What usually moves the numbers

Having profiled more pages than I can count, the fixes cluster with boring regularity. For LCP: the hero image is too large, the wrong format, or not prioritized — fix the format, size it responsively, mark it high priority, and preload the font the title renders in. For CLS: something has no reserved space — give every image and embed explicit dimensions. For INP: too much JavaScript runs on the main thread — ship less of it.

That last one deserves its own sentence. The most reliable INP optimization on the modern web is not clever scheduling; it is not sending the JavaScript at all.

The habit that matters

Measure where your readers are, not where you are. Once a month, open the field data, and once a quarter, hold a cheap phone in your hand and load your own site on it. Everything else in performance work follows from refusing to be flattered by your own hardware.

One essay on building for the web, most weeks

No digests, no product updates — the same articles that appear here, in your inbox. Unsubscribe with one click, any time. Or take the RSS feed instead.

Double opt-in — you'll get a confirmation email first. Your address is used for nothing else.