Google measures how your site feels — and folds it into ranking. Three numbers matter, and most sites fail them for the same few reasons.
The three metrics, in plain language
LCP (Largest Contentful Paint) — how long until the biggest thing on screen appears. Target: under 2.5s. Usually failed because the hero image is a 2MB PNG, or the page waits for JavaScript before showing anything.
INP (Interaction to Next Paint) — when a visitor taps something, how long before the page responds. Target: under 200ms. Usually failed because of heavy JavaScript frameworks doing work on the main thread.
CLS (Cumulative Layout Shift) — does the page jump around while loading. Target: under 0.1. Usually failed by images without dimensions, late-loading ads, and fonts swapping in.
The fixes that actually move the numbers
- Serve HTML, not a JavaScript loading screen. Static-first sites (Astro, plain HTML, well-configured Next.js) pass LCP almost by default.
- Compress and size images properly. Modern formats, explicit width/height, lazy-load everything below the fold — never the hero.
- Self-host fonts with
font-display: swapand preload the one file the headline uses. - Cut third-party scripts. Every chat widget, heatmap, and tracker bids against your INP. Audit quarterly; delete anything nobody checks.
Lab scores lie a little
Lighthouse runs on a fast machine. Google ranks on field data — real visitors’ phones on real networks, collected in the Chrome UX Report. Check Search Console’s Core Web Vitals report for the truth. A site can score 95 in Lighthouse and still fail in the field.
How much does it matter?
It’s a tiebreaker, not a trump card. Content and relevance come first — but between two comparable pages, the faster one wins. And beyond ranking: Vitals measure the experience that decides whether visitors stay. That’s why we build static-first and treat performance as part of design, not an optimization sprint afterward — see how in our works.