Core Web Vitals explained: what each metric measures and how to move it
Three numbers, each measuring a different way a page can feel bad: slow to appear, slow to respond, and unstable while you use it.
Cumulative Layout Shift measures unexpected movement of visible content. It is caused by images and embeds without dimensions, content injected above existing content, web fonts swapping to different metrics, and animating layout properties. Reserve space for every element whose size you know in advance and the score usually drops below 0.1 immediately.
For each shift, the browser multiplies the impact fraction (how much of the viewport moved) by the distance fraction (how far it moved). CLS is the largest burst of shifts within a session window, not the sum of everything — so one bad shift on load matters more than many tiny ones.
Shifts within 500ms of a user interaction are excluded, which is why expanding an accordion does not count against you but a banner appearing on its own does.
/* Reserve space from intrinsic dimensions and scale responsively */
img, video {
max-width: 100%;
height: auto; /* with width/height attributes set on the element */
}
/* For containers whose ratio is known but content loads later */
.embed {
aspect-ratio: 16 / 9;
width: 100%;
}Anything appearing above existing content pushes it down, and a font swapping to different metrics reflows every line of text.
@font-face {
font-family: "Fallback";
src: local("Arial");
size-adjust: 105%;
ascent-override: 92%;
descent-override: 24%;
}
body { font-family: "Inter", "Fallback", sans-serif; }No. It measures shifts throughout the entire visit, including during scrolling and after interactions. Lazy-loaded content arriving as the user scrolls is a common late-session contributor.
Shifts within 500ms of a user interaction are excluded, because the user caused them and expects them. Anything outside that window counts.
Reserve the exact slot size with CSS before the ad loads, and use fixed-size units rather than allowing the container to grow. If sizes vary, reserve the most common size and accept minor shifts.
Yes for many content sites. The target is under 0.1, but a well-built page with reserved space for everything routinely reports zero.
ROVQIX Growth
SEO & growth team, ROVQIX
The ROVQIX growth team handles technical SEO, Core Web Vitals and AI-search visibility for the sites we build. Recommendations here are the ones we apply to client projects and to rovqix.in itself.
ROVQIXdesigns and builds production web platforms — Next.js front ends, Node.js APIs and the infrastructure behind them. Tell us what you're building and we'll scope it with you.
Three numbers, each measuring a different way a page can feel bad: slow to appear, slow to respond, and unstable while you use it.
Fonts are usually the second-largest asset on a page and the most common cause of text that appears late, then jumps.
Users judge reliability by how your app behaves when something goes wrong. Most apps put all their design effort into the happy path.
No spam. Just the occasional case study and craft breakdown.