Core Web Vitals occupy a strange position in SEO discourse. Half the industry treats them as the deciding ranking factor; the other half dismisses them as a tiebreaker that never matters. Both are wrong in the same way — they are asking about rankings when the larger effect is on conversion.
Here is a working engineer's view of what the metrics measure, what the thresholds are, and which fixes are worth the time.
The three metrics and their thresholds
| Metric | Good | Needs improvement | Poor |
|---|---|---|---|
| LCP — Largest Contentful Paint | ≤ 2.5s | 2.5s – 4.0s | > 4.0s |
| INP — Interaction to Next Paint | ≤ 200ms | 200ms – 500ms | > 500ms |
| CLS — Cumulative Layout Shift | ≤ 0.1 | 0.1 – 0.25 | > 0.25 |
How much do they actually affect rankings?
Directly: not much. Page experience is a lightweight signal, and relevance and authority dominate it comfortably. A slow page with the best answer will outrank a fast page with a mediocre one, consistently.
Indirectly: quite a lot. Slow pages get abandoned, which suppresses engagement signals. Slow pages consume more crawl budget per URL, which matters enormously on large sites. And slow pages convert worse — which is the point of the traffic in the first place.
Optimise Core Web Vitals for revenue, and take the ranking benefit as a bonus. Optimising them purely for rankings gets the priorities backwards.
Fixing LCP — the highest-return metric
LCP fails more often than the other two combined, and in the overwhelming majority of cases the culprit is the hero image or the web font.
- 1Identify the LCP element in Chrome DevTools' Performance panel. It is nearly always a hero image, a heading, or a background image.
- 2Preload it. Add `<link rel="preload" as="image">` for the hero image so it is not discovered late in the parse.
- 3Serve modern formats. AVIF or WebP with correct `width` and `height` attributes to reserve layout space.
- 4Never lazy-load the LCP element. Applying `loading="lazy"` above the fold is one of the most common self-inflicted LCP failures.
- 5Fix font loading. Use `font-display: swap`, preload the primary weight, and self-host rather than fetching from a third-party origin.
- 6Cut render-blocking resources. Inline critical CSS; defer everything that is not needed for the first paint.
The rendering strategy question
For content-led pages, static generation or server rendering with a CDN will beat client-side rendering on LCP essentially every time, because the browser receives markup rather than an empty div and a JavaScript bundle. This is the single largest architectural decision affecting your vitals, and it is very expensive to reverse after launch — which is why we settle it during web design and development discovery rather than at the optimisation stage.
Fixing INP — a JavaScript problem
INP measures how quickly the page responds to a user interaction. Poor INP is almost always long tasks blocking the main thread.
- Break up long tasks. Anything over 50ms blocks interaction; yield to the main thread with `scheduler.yield()` where supported.
- Reduce hydration cost. Ship less JavaScript. Server components and islands architecture exist precisely for this.
- Debounce expensive handlers. Search-as-you-type and scroll handlers are frequent offenders.
- Audit third-party scripts. Chat widgets, heat-mapping tools and tag managers regularly cost more INP than the entire application.
Fixing CLS — mostly reserved space
- Set explicit `width` and `height` (or `aspect-ratio`) on every image and video.
- Reserve space for ad slots and embeds rather than letting them push content down on arrival.
- Avoid injecting banners, cookie notices or promotional bars above existing content after first paint.
- Use `font-display: optional` or match fallback metrics with `size-adjust` to prevent text reflow when the web font loads.
- Trigger animations on `transform` and `opacity`, never on properties that affect layout.
A sensible order of operations
- 1Pull field data from Search Console — fix what real users experience, not what your laptop reports.
- 2Segment by device. Mobile fails far more often, and mobile is what is assessed.
- 3Fix LCP first. It fails most often and has the clearest link to conversion.
- 4Then CLS, because the fixes are cheap and mostly mechanical.
- 5Then INP, which usually means renegotiating your third-party script inventory.
- 6Re-measure after 28 days — the rolling window means changes do not appear immediately.
If your vitals are failing and you would rather not spend a quarter of engineering time on it, this is a standard part of our SEO services engagements. And if you are wondering how long any of this takes to affect traffic, we wrote about realistic SEO timelines separately.
OVAL LLC
Web design and SEO for small businesses in the US and UK
We publish what we learn doing the work — pricing, timelines and the technical detail most agencies keep vague. If something here would be useful on your own site, our packages start at $35.