Skip to main content

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

0.1 or less at the 75th percentile of page loads. Between 0.1 and 0.25 needs improvement; above 0.25 is poor.

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.