Glossary
Cumulative Layout Shift (CLS)
The metric for the button that moves just as you tap it.
By Roger Campos · Last updated: September 2026
TL;DR
Cumulative Layout Shift (CLS) measures how much visible content moves unexpectedly while a page is open. Each shift is scored by how much of the viewport moved and how far; CLS is the largest burst of shifts. It is the Core Web Vital for visual stability: 0.1 or less is good, over 0.25 is poor.
Free plan, no credit card. 1,000 credits a month.
How it works
How the score is calculated
A layout shift happens when an element that was already visible changes position between two frames. Each shift scores impact fraction × distance fraction: the share of the viewport the moving elements touched, before and after, times the distance they moved as a share of the viewport.
Worked example: an element covering half the viewport moves down by a quarter of it. Together its old and new positions cover 75% of the viewport, so the impact fraction is 0.75; the distance fraction is 0.25. The shift scores 0.75 × 0.25 = 0.1875 — on its own, well past the 0.1 line.
Shifts are grouped into session windows: shifts less than 1 second apart, up to 5 seconds in all. CLS is the score of the worst window. Shifts within 500 ms of a click, tap or key press don't count — the visitor expected those.
In practice
The usual causes
- Images and iframes without
widthandheight, so no space is reserved for them. - Ads, embeds and cookie banners injected above existing content.
- Web fonts swapping in with different metrics than the fallback.
- Content inserted by JavaScript after the first render — a "related posts" block, a promo bar.
URLpipe
Measuring CLS with URLpipe
/lighthouse returns cumulative-layout-shift in metrics, unitless, with its 0–1 score; it carries 25% of the Lighthouse 13 performance score. A lab run only sees shifts during load — shifts that happen as a visitor scrolls show up in field data only. With include_audits: "true" the audits list the elements that moved.
To see a shift rather than measure it, capture the page at two moments with /screenshot — once as it is, once with a delay in page_options — and compare.
Try it
Cumulative Layout Shift (CLS), on a page you choose
Related terms
FAQ
Frequently asked questions
0.1 or less at the 75th percentile of page loads. Between 0.1 and 0.25 needs improvement; above 0.25 is poor.
No. It is a product of two fractions of the viewport, so it is unitless.
Lighthouse measures a single page load without scrolling or interaction. Real visitors scroll into lazy content, late ads and embeds, which shift the page after load.
See it on your own pages.
Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.