How to read a Core Web Vitals report — Canadian operator's interpretation guide
Buyer's guide

How to Read a Core Web Vitals Report (2026)

An operator's guide to interpreting Core Web Vitals — what each metric measures, why lab and field data disagree, and how to translate red CRUX bars into a prioritized work plan.

10 min read
·
1,900 words
·
Updated April 30, 2026
·By Martin Vassilev

The decision in one paragraph

Core Web Vitals are three metrics — LCP (Largest Contentful Paint), CLS (Cumulative Layout Shift), and INP (Interaction to Next Paint) — measured on real users via the Chrome User Experience Report (CRUX). Lab data (Lighthouse, PageSpeed Insights synthetic) is a useful diagnostic but not what Google actually uses for ranking. The 75th-percentile rule means a page passes only if 75% of real-user sessions hit the threshold. Read field data first, lab data second, and prioritize fixes by traffic-weighted impact, not by Lighthouse score.

What LCP, CLS, and INP actually measure

  • LCP — Largest Contentful Paint
    Time from navigation start to when the largest above-the-fold visual element finishes rendering. Threshold: ≤2.5s = good, 2.5–4.0s = needs improvement, >4.0s = poor. Usually the hero image, hero video poster frame, or a hero text block.
  • CLS — Cumulative Layout Shift
    Sum of unexpected layout shifts that happen during page life. Threshold: ≤0.1 = good, 0.1–0.25 = needs improvement, >0.25 = poor. Caused by images without dimensions, ads injected after load, fonts swapping, late-loading widgets.
  • INP — Interaction to Next Paint
    Replaced FID in March 2024. Measures the worst latency between a user input (tap, click, keystroke) and the next visual update. Threshold: ≤200ms = good, 200–500ms = needs improvement, >500ms = poor. Almost always a JavaScript-execution problem.

Three numbers, one ranking signal. INP is where most Canadian ecommerce sites fail in 2026, and it's the hardest of the three to fix because it requires JavaScript discipline most CMSs don't enforce.

— Martin Vassilev, founder, Toronto SEO

Field data vs lab data: why they disagree

PageSpeed Insights shows two columns side by side: 'Discover what your real users are experiencing' (field data, from CRUX) and 'Diagnose performance issues' (lab data, from a synthetic Lighthouse run). They almost never agree, and operators routinely chase the wrong one.

Field data is what Google uses for ranking. It's measured on real Chrome users over a rolling 28-day window. It captures the variance of real devices, real networks, and real user behaviour. It's slow to react to fixes (you'll wait 14–28 days to see your changes reflected) and can only be measured on pages with enough traffic to qualify.

Lab data is what Lighthouse measures in a controlled environment. It's instant — you change the code, you re-run, you see the new number. It's useful for debugging individual fixes. It's not what Google ranks on.

The mistake is using lab data to declare 'we passed Core Web Vitals' when CRUX still shows red bars for real users. The fix has happened in the lab; the field hasn't caught up yet, or the fix doesn't survive real-world conditions.

The 75th-percentile rule and what it means

Google evaluates Core Web Vitals at the 75th percentile of real-user sessions. To pass LCP, 75% of your sessions need to hit ≤2.5s. The 25% slowest sessions can be much slower — the page still passes.

This matters for prioritization. If your median LCP is 1.8s but your 75th percentile is 4.1s, you have a tail problem, not a typical-user problem. Fixing the median doesn't help; fixing the slow 25% does.

Common tail-distribution culprits: third-party scripts that occasionally hang, slow international CDN edges (matters for Canadian sites with US-based hosting and US-edge CDN), heavy ad networks that load slowly under contention, video elements that block rendering on mobile.

How to diagnose each metric when it fails

  • LCP failing — start here
    Identify the LCP element (Lighthouse marks it). Common fixes: serve hero image as preloaded AVIF/WebP, drop hero video for lower-bandwidth users, eliminate render-blocking CSS in <head>, use rel=preload for critical fonts, host fonts on your own domain instead of Google Fonts.
  • CLS failing — start here
    Open Chrome DevTools → Performance → Web Vitals lane to see which element shifted. Most common: images without explicit width/height attributes, ads injected after first render, fonts loading with FOIT/FOUT, third-party widgets (chat, review carousels) appearing late.
  • INP failing — start here
    Most expensive to fix. Common causes: large JavaScript bundles loading on interaction, third-party tags executing on every input, React re-renders triggered by state changes that don't need them. Tools: Web Vitals Chrome extension, Long Animation Frames API, INP debugger in DevTools.

Prioritizing fixes by business impact

Not every red Core Web Vitals bar is worth fixing immediately. Prioritize by traffic share × revenue impact:

URL patternFailing metricTraffic shareAction priority
HomepageLCP redHighImmediate
Top 10 commercial-intent landing pagesLCP or INP redHigh per-URLWithin 30 days
Blog category pagesCLS redMediumWithin 60 days
Long-tail blog articlesCLS redLow per-URL, high in aggregateGroup fix in next sprint
Internal admin / login pagesAnyN/A (noindex)Don't bother
Checkout funnelINP redDirect revenue impactImmediate, even if traffic is low

Frequently Asked Questions

The questions Canadian operators ask before signing a contract.

Talk to an operator

Want a second opinion before you sign?

Book a 15-minute call. We'll read the proposal, audit, or contract you're considering and tell you what we'd push back on.