Skip to main content

Confirm

Are you sure?

Glossary

Cumulative Layout Shift (CLS)

The metric for the button that moves just as you tap it.

By · 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 width and height, 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.

FAQ

Frequently asked questions

What is a good CLS score?
0.1 or less at the 75th percentile of page loads. Between 0.1 and 0.25 needs improvement; above 0.25 is poor.
Does CLS have a unit?
No. It is a product of two fractions of the viewport, so it is unitless.
Why is my field CLS worse than Lighthouse's?
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.