Core Web Vitals are three metrics: Largest Contentful Paint (loading), Interaction to Next Paint (responsiveness) and Cumulative Layout Shift (visual stability). All three are measured on real devices, in real conditions.

The important distinction is between field data — measurements from actual visitors, reported by Chrome and Search Console — and lab data, which is a synthetic test. A lab score is an estimate. Presenting it as a real-user measurement is misleading.

What each one actually measures

LCP — Largest Contentful Paint

How long until the largest visible element renders. Usually the hero heading or hero image. Slow fonts and render-blocking CSS are the usual causes.

INP — Interaction to Next Paint

How quickly the page responds to a tap or click. Heavy JavaScript and long tasks are the usual causes.

CLS — Cumulative Layout Shift

How much the layout moves while loading. Images without dimensions and late-loading fonts are the usual causes.

The patterns we see repeatedly

01

The logo is the biggest image

A 200×200 PNG rendered at 32px, unoptimised, on every page. Easy to fix, surprisingly common.

02

Third-party font CSS

An icon font loaded from an external origin, render-blocking, with no preconnect. One extra DNS lookup, TLS handshake and round trip before anything paints.

03

Images without dimensions

No width and height attributes, so the browser cannot reserve space. Layout jumps when the image arrives.

04

Plugin and script bloat

Page builders and chat widgets that load on every page whether or not they are used.

05

No caching on HTML

Every navigation revalidates at origin, so repeat visits are slower than they need to be.

What to do first

Order of operations matters more than the size of the list.

01

Measure honestly

Get field data from Search Console if you have traffic. If you do not, say so and treat lab numbers as estimates.

02

Fix LCP first

Usually: self-host or preload the font, remove render-blocking CSS, compress the hero image, serve modern formats.

03

Then CLS

Add intrinsic dimensions to every image, reserve space for embeds, avoid injecting content above existing content.

04

Then INP

Defer non-critical JavaScript, remove unused widgets, split long tasks.

05

Then re-measure

Compare field data after 28 days. Lab scores will move sooner and are not the outcome.

Do not chase a perfect lab score. A site with a 100 lab score and slow field LCP has not been fixed — it has been tested in favourable conditions.

Do not add a page builder to ‘modernise’ a fast site. The most common way a law firm site becomes slow is a redesign.

A small or new site has no field data

Field data needs visitors. A new site, or a low-traffic practice area, may never accumulate enough real-user measurements for Search Console to report anything. That is not a failure — it is a sample size problem.

In that situation, use lab measurements to find and fix obvious faults, label them as estimates, and wait for traffic before claiming a Core Web Vitals result. Do not report a lab score as though it were field data; it is the most common misrepresentation in performance reporting.

The three faults worth fixing blind, because they are almost never wrong: unoptimised hero images, render-blocking third-party font CSS, and images without intrinsic dimensions.