WEB DESIGN CONSTANȚAOpen now02.10.2026--:--:--0722 810.870office@digital-art.ro
Change language
Let’s talk

Core Web Vitals explained for business owners

LCP, INP and CLS without the jargon: the current thresholds, how to measure your site for free, the six common causes, and what can be fixed without a rebuild.

A stopwatch beside a laptop, suggesting the measurement of a site’s loading speed

Core Web Vitals are three measurements by which Google assesses how a person feels on your page. Not how fast it loads in a laboratory, but what a real visitor experiences, on their phone, on their connection. They are a confirmed ranking factor, but more importantly they measure exactly the things that make people close a page before seeing what you sell.

This article explains each of the three without jargon: what it measures, what the threshold is, what breaks it, and what can be fixed on an existing site. At the end there are real figures from an optimisation we carried out, so you can see the order of magnitude of the gain.

Contents

What Google actually measures

The three measurements correspond to three moments every visitor goes through:

  1. Is it loading? — how long do I wait before I see something useful. (LCP)
  2. Does it respond? — I tap, and does something happen? (INP)
  3. Does it stay put? — or does the content jump and I tap something I did not mean to? (CLS)

Lab data and field data

There are two kinds of measurement, and the confusion between them causes a lot of pointless argument:

  • Lab — a test run under controlled conditions, which gives a score. Useful for diagnosis.
  • Field — data collected from real users over the last 28 days. These are what count for ranking.

A site can have a good lab score and poor field data, because real visitors have weaker phones and worse connections than the test machine.

The 75th percentile

Google does not look at the average user but at the 75th percentile: three quarters of visitors have to have a good experience. That is the right choice — an average hides exactly the users who are having trouble.

LCP: how long until the main thing appears

Largest Contentful Paint measures how long it takes from the start of loading until the largest visible element in the top part of the page appears — usually a large image or the heading.

Threshold Interpretation
under 2.5 s good
2.5–4 s needs improvement
over 4 s poor

LCP is the metric most sites fail on mobile — only about 62% of mobile pages pass the threshold, against 77% for INP and 81% for CLS (corewebvitals.io(opens in a new tab)).

What breaks LCP

  • The large image at the head of the page, unsized and in an old format.
  • A slow server — if the response takes 800 ms, you have used a third of the budget before anything has begun.
  • Fonts that block the display of text.
  • JavaScript that has to be downloaded and executed before the content appears.
  • An autoplaying background video. The most expensive thing you can put on a page.

INP: how long until the site responds

Interaction to Next Paint measures the time from a tap or click until the screen visibly updates. It replaced an older measurement that assessed only the first interaction; INP takes all of them into account.

Threshold Interpretation
under 200 ms good
200–500 ms needs improvement
over 500 ms poor

INP is the most commonly failed metric: 43% of sites do not pass the 200 ms threshold (NitroPack(opens in a new tab)).

Why it is the hardest

Because it does not depend on how fast the page loads, but on how much code runs after it has loaded. A site with many scripts — chat, maps, tracking, animations, consent modules, review widgets — can look perfect and respond with a delay the user reads as “it’s frozen”.

What breaks INP

  • Too many third-party scripts. Every widget added eats into the response budget.
  • Tracking modules that execute on every interaction.
  • Badly implemented animations that force the browser to recalculate the page.
  • Menus and filters that process long lists on every tap.

CLS: how much the page jumps under your finger

Cumulative Layout Shift measures how much the content moves during loading. It is the frustration metric: you start reading a paragraph, an image loads above it, and the text moves down.

Threshold Interpretation
under 0.1 good
0.1–0.25 needs improvement
over 0.25 poor

What breaks CLS

  • Images without declared dimensions. The browser does not know how much space to reserve, so it reserves none, and when the image arrives it pushes everything below it down.
  • Adverts or content loaded later, inserted between existing elements.
  • Banners that appear over the content after a second.
  • Fonts that switch on loading, with a large difference in size between the fallback and the final one.

The easiest to fix

Of the three, CLS is the simplest to resolve: declare the dimensions of images and reserve space for anything that appears later. It is mechanical work, with an immediate result.

Are Core Web Vitals a ranking factor

Yes, they are a confirmed ranking factor, folded into the page experience signals since 2021. But they are a secondary factor: the relevance of the content remains decisive. In practice, Core Web Vitals act as a tie-breaker between pages with content of comparable quality. A fast page with weak content will not overtake a slow page with excellent content.

The better reason to watch them

Not ranking, but behaviour. A page that loads slowly on a phone loses visitors before they see what you sell. Every extra second cuts into the number of people who reach the contact form.

In other words: optimise for people, and the ranking comes as a side effect. It does not work the other way round.

How to measure your site in ten minutes

PageSpeed Insights

Open pagespeed.web.dev, enter a page address, choose Mobile.

What to read, in order:

  1. The section at the top, “Discover what your real users are experiencing”. That is the field data, the only part that counts for ranking. If it is missing, the site does not have enough traffic for collection — use the rest of the report as a guide.
  2. The three values, in green, amber or red.
  3. The list of opportunities below, sorted by impact.

Test the home page, a service page and a portfolio page. They are different structures and can have different problems.

Search Console

The dedicated report shows the field data for the whole site, grouped by page type. That is the correct site-level view, where PageSpeed Insights is the page-level one.

What does not matter

The overall 0-to-100 score. It is a weighted average of several lab measurements and is not used for ranking. A site scoring 78 with all three field values green is in a better position than one scoring 95 with red field data.

The six causes behind most problems

# Cause Metric affected Effort to fix
1 Unmanaged images LCP, CLS small
2 Too many third-party scripts INP, LCP small–medium
3 Slow server LCP small (change host)
4 Fonts that block rendering LCP, CLS small
5 Excess plugins and modules all medium
6 A heavy theme, with a visual editor all large

The first four are a few hours’ work. The fifth is a clear-out. The sixth is usually the reason the other five do not turn out to be enough.

Why images are almost always to blame

In a typical audit, images account for more than half the problem. Four mistakes, all of them common:

1. The original file is served. A photograph 2,000 pixels wide, displayed in a 400-pixel card, forces the phone to download an image far larger than it needs.

2. The wrong format. For many web images, JPEG and PNG files can be considerably larger than AVIF or WebP at comparable visual quality.

3. No declared dimensions. The main cause of content jumping.

4. Everything loads at once. The images at the foot of the page, which nobody will see without scrolling, download at the same time as the ones at the top.

Figures from a real optimisation

When we rebuilt this site, we applied exactly those four corrections to the portfolio grid. The measured result:

Before After
Portfolio grid, 12 visible cards ~2.4 MB ~180–260 KB
Bytes for a card 400 px wide 206 KB ~18–28 KB

A reduction of roughly 90%, with no visible loss of quality. Not one image was changed: variants were generated at the sizes actually used, in modern formats, with declared dimensions and deferred loading for anything below the first visible section.

Third-party scripts: the hidden cost of every widget

The second most frequent cause, after images, and the one that explains most INP problems.

How they accumulate

Nobody decides to put eight scripts on a site. They get added one at a time, in different months, each for a good reason:

What gets added The reason at the time
Traffic analytics “we have to know how many visitors we get”
Consent banner mandatory
Chat “so they can ask quickly”
Social network pixel “for the campaigns”
Embedded map “so they can see where we are”
Review widget “so people see we have good reviews”
Embedded video “it’s easier than hosting it ourselves”
A form from an external service “it was ready made”

Eight scripts, each from a different domain. Each needs a new connection, downloads code and executes it. The effect is not additive, it is cumulative: they block each other on the browser’s main thread, and the result shows in INP.

Roughly what it costs

An ordinary chat widget adds a few hundred kilobytes of JavaScript and tens of milliseconds of execution. An embedded map is often the heaviest element on a contact page — heavier than all the images put together.

What to do

Take an inventory. In the developer tools, in the network section, sort by domain. You will see exactly what comes from whom.

For each one, ask: what does it bring, and who last checked whether it is used? Review widgets and pixels from finished campaigns stay on sites for years.

Replace what you can:

Instead of Use
An interactive map embedded on every page a static image of the map, linking to the maps app
Embedded video, loaded automatically a preview image that loads the player only on click
A review widget the reviews as text on the page, updated periodically
An external font the font hosted locally

Defer what is not needed immediately. Chat, campaign pixels and additional analytics scripts do not have to start with the page. Loaded after the user interacts, they disappear entirely from the initial loading budget.

Most third-party scripts set cookies and are not allowed to start before the visitor agrees. Implemented properly, that partly solves the performance problem too: for anyone who does not accept, the scripts never load at all. See Cookie banners and Consent Mode v2.

Fonts, the cause nobody suspects

A font is a file that has to be downloaded before text can be shown in its final form. Badly configured, it causes problems on two of the three measurements.

Invisible text

The default behaviour of some configurations is to hide the text until the font loads. The result: an empty page for a few hundred milliseconds, even though the text was ready to display. If the largest element at the top of the page is a heading, LCP grows directly by the font’s delay.

The fix: configure the font to show a fallback immediately and switch when the final one arrives.

The jump on switching

Switching produces a change in appearance. If the fallback font has very different widths, the text reflows and CLS increases. It is solved by choosing a fallback with similar metrics and adjusting the difference.

The four rules

  1. Host the fonts locally. A font from an external domain means an extra connection before the text appears — plus a consent problem.
  2. Load only the weights you use. A font with nine weights of which you use two means four times as many bytes for nothing.
  3. Narrow the character set to what you need. For Romanian: latin plus latin-ext — the diacritics ș, ț, ă, î and â are in the extension. Without it, they show in a fallback font.
  4. Preload the main font, the one used for the heading at the top of the page.

The quick check

In the network section of the developer tools, filter by fonts. How many files download? From where? How much do they weigh? More than three font files on a page is almost certainly too many.

What can be fixed and what needs a rebuild

Fixable on an existing site

  • Optimising images and declaring their dimensions.
  • Removing third-party scripts that bring nothing.
  • Configuring fonts to display immediately.
  • Turning on compression and caching on the server.
  • Moving to better hosting.
  • Removing unused plugins.

Realistic gain: LCP down by 30–50%, CLS often resolved entirely. A few days’ work.

Not fixable without a rebuild

  • A theme that loads the libraries for every feature, whatever you use.
  • A visual editor that generates layers of code for every section.
  • An accumulation of plugins that overlap and block each other.

The sign: you have done everything above and LCP is still over 4 seconds on mobile. At that point, optimising further is money thrown away — the problem is the foundation.

What the alternative looks like

A site built as static files, with the images processed at build time and the dimensions known in advance, passes the thresholds by construction, not by later optimisation. It is not magic: it is the absence of code that should never have existed. The subject is discussed at length in WordPress or a static site.


Want to know where your site stands and what can be fixed without a rebuild? Send us the address — we will look at the field data and tell you concretely what there is to gain and at what effort.

Read next: The SEO structure of a business website, Web hosting: what really matters, and what a business website project includes.

Message us on WhatsApp(opens in a new tab)