Only about 42% of mobile websites pass all three Core Web Vitals. Mobile is now the majority of traffic almost everywhere. The arithmetic is not flattering: most of the web is failing most of its visitors on the thing they notice first.
The three numbers
Google's thresholds are specific, and worth committing to memory rather than gesturing at:
- LCP — how long until the biggest visible element has rendered. In practice: how long until the page looks like it has arrived.
- INP — how quickly the page responds when someone actually interacts with it. This replaced First Input Delay and is considerably less forgiving.
- CLS — how much the layout jumps around while loading. This is the metric behind the universal experience of tapping the wrong thing because an ad loaded.
Why this is a revenue conversation
Pages that load beyond 2.5 seconds see bounce rates rise by roughly a third. A single additional second of load time has been associated with conversion drops of up to 7%. Sites scoring in the nineties on Lighthouse convert measurably better than those scoring in the forties.
Read those figures together and a pattern emerges: performance is not a technical hygiene issue that engineering owns quietly. It is a conversion lever that happens to live in the engineering backlog, which is exactly why it never gets prioritised against a feature request.
The honest version
Almost nobody chooses a slow website. They choose a carousel, a video header, a chat widget, three analytics tags, a cookie banner, and a font family with six weights. Slowness is not a decision. It is an accumulation.
Where the weight actually is
In our experience the culprits are depressingly consistent:
- Images. Uncompressed hero images, served at desktop dimensions to phones, in formats from a decade ago.
- Third-party scripts. Every tag manager, heatmap, chat widget and pixel executes on the main thread. Each was individually justifiable. Collectively they are the problem.
- Fonts. Six weights of a custom typeface, when the design uses two.
- Layout shift from unsized media. An image without explicit dimensions reserves no space, so everything below it jumps when it arrives. This is a one-line fix that almost nobody applies.
- Framework overhead. Shipping a large JavaScript bundle to render what is fundamentally a text page.
Fix it in this order
- Measure real users, not just lab tests. Lighthouse on a developer's machine over office fibre is a work of fiction.
- Compress and correctly size images, and serve modern formats. This alone resolves a surprising share of LCP failures.
- Audit your third-party scripts and delete the ones nobody has opened a report from in six months.
- Set explicit width and height on every image and embed. CLS often collapses immediately.
- Only then consider architecture. Re-platforming to fix performance you have not measured is expensive guessing.
The recurring lesson is that performance work is subtraction, not addition. The fastest thing you can do to a page is take something off it.
Key takeaways
- Only ~42% of mobile sites pass all three Core Web Vitals — the bar is low
- Targets: LCP under 2.5s, INP under 200ms, CLS under 0.1
- Past 2.5 seconds, bounce rates climb roughly 32%; a second of delay can cost up to 7% of conversions
- Images, third-party scripts and fonts are almost always the weight
- Measure real users first; re-platforming before measuring is an expensive guess
Want this handled properly?
Tell us what you're working with and we'll scope it with you — no obligation.