Answers · Websites & Page Speed

What is Cumulative Layout Shift (CLS) and what causes it?

Last reviewed: · Strategic AI Architects Data Desk · reviewed by Mike Moore

Cumulative Layout Shift measures how much visible page content unexpectedly moves around while a visitor is using the page, scored as a unitless number where 0.1 or less — assessed at the 75th percentile of real page loads — counts as good, and anything over 0.25 counts as poor (web.dev, "Cumulative Layout Shift (CLS)," verified live August 18, 2026).

The qualifier: CLS only counts unexpected movement. Content that moves within half a second of the visitor's own tap or click is excluded, because responding to input is what pages are supposed to do. What CLS punishes is the page rearranging itself on its own — the paragraph you were reading dropping out of view, or the button you were about to tap becoming a different button. It is the visual-stability member of the Core Web Vitals, alongside LCP for loading and INP for responsiveness.

What actually causes layout shift

  • Images and videos without dimensions: the browser reserves no space, so content below jumps down when the file arrives. The fix is explicit width/height (or CSS aspect-ratio) on every image — web.dev lists this first.
  • Ads, embeds, and iframes that size themselves late: the classic mid-article jump. The fix is a reserved container sized before the embed loads.
  • Web fonts swapping in: text renders in a fallback font, then reflows when the web font arrives at a different size. Metric-matched fallbacks and font-display tuning shrink the shift.
  • Content injected above existing content: banners, notices, and widgets inserted into the document flow after render — anything added without the visitor asking for it.
  • Animating layout properties: moving elements with top/left/width instead of CSS transform forces re-layout; web.dev's guidance is to animate with transform.

CLS is the vital with the least excuse, because it is fully within the developer's control — no server, no network, no visitor hardware involved. It is why we treat 0, not 0.1, as the build target: our 15-page agency rebuild measures a CLS of 0 site-wide, and our production client builds measure 99-100 on mobile partly because layout stability is designed in — dimensions on every image, space reserved for every late-loading element — rather than patched after launch (SAA build measurements, July-August 2026).

Sources

  1. web.dev (Google). "Cumulative Layout Shift (CLS)" — definition, session-window scoring, the 0.1 / 0.25 thresholds at the 75th percentile, and the user-input exclusion. Verified live 2026-08-18. web.dev.
  2. web.dev (Google). "Optimize Cumulative Layout Shift" — the documented causes and fixes. Verified live 2026-08-18. web.dev.
  3. Strategic AI Architects. gbsllcia.com rebuild measurements via PageSpeed Insights, 2026: CLS 0, 99 mobile performance on 14 of 15 pages.

Related questions

How is the CLS number actually calculated?

Each unexpected shift gets a layout shift score — the fraction of the viewport affected multiplied by how far the content moved — and CLS is the largest burst of shifts, where a burst is shifts landing within about a second of each other, capped at five seconds, per web.dev's definition. Shifts within 500 ms of a visitor's own interaction are excluded, because content moving in response to a tap is expected.

Is a CLS of 0 realistic?

Yes, and we ship it. Our 15-page agency rebuild measures a CLS of 0 across the site (SAA build measurements, 2026), because every image carries explicit dimensions, fonts are loaded so text does not reflow, and nothing is injected above rendered content. Zero is not a heroic number — it is what happens when every element's space is reserved before it arrives.

Do cookie banners and chat widgets hurt CLS?

Only when they push content. A banner or widget that overlays the page (position: fixed) causes no shift; one that inserts itself into the document flow above rendered content is exactly the 'dynamic content injected without user interaction' cause web.dev lists. Same feature, different implementation, opposite CLS result.

Want to know where your own site stands? Run the free Audit — a live AEO audit plus a HIPAA tracking scan — or browse all answers.