Cumulative Layout Shift (CLS)

CLS Cumulative Layout Shift

Glossary

Cumulative Layout Shift (CLS) is one of Google’s three Core Web Vitals and measures how much a web page’s layout still shifts after the first render. When content jumps down afterwards because an image without a height attribute loads late, a cookie banner collapses or an asynchronous ad slots in, a layout shift occurs. That’s not just unpleasant to read – it regularly leads to misclicks (“Where did my button go?”) and has been a direct Google ranking factor since 2021.

How is CLS measured?

CLS is reported as a dimensionless score. Every layout shift is broken down into:

  • Impact fraction: what percentage of the viewport was shifted
  • Distance fraction: how far (relative to the viewport height)

Multiplied together, they yield the shift score. CLS sums all shifts not triggered by a user action within 5-second windows and takes the worst window value as the final result (session window).

Thresholds

ValueRating
≤ 0.1good (green)
0.1 – 0.25needs improvement (orange)
> 0.25poor (red)

Measurement happens at the 75th percentile of real user traffic from Google’s CrUX dataset.

Typical causes of high CLS

  1. Images and videos without width/height attributes: the browser only knows the image size once the file loads, and reserves no space until then
  2. Asynchronously embedded ads, embeds or iframes: slots are only filled when the third-party system responds
  3. Web fonts with FOIT/FOUT: the font swap leads to changed line breaks
  4. Dynamically inserted banners: cookie banners, promo bars or newsletter pop-ups that push the layout down afterwards
  5. DOM manipulation via JavaScript after the first paint: elements get inserted above the viewport afterwards
  6. Animations that use top/left instead of transform and recalculate the entire layout

How is CLS optimised?

  • Give all media fixed dimensions: width and height directly in the HTML, alternatively aspect-ratio in CSS
  • Reserve slots for asynchronous content: fixed heights for ad containers, embeds, recommendations
  • font-display: optional or swap instead of FOIT; preload the critical font variant
  • Build cookie banners as overlays instead of pushing blocks
  • Animate with transform: translate(...) instead of top/left: runs on the GPU, doesn’t affect the layout
  • Skeleton screens / placeholders for lazily loading UI areas, so the space is already reserved

Which layout shifts do not count?

CLS deliberately ignores shifts occurring within 500 ms of a user interaction – a click on “Show more” may lengthen the layout without raising the score. What matters is that the triggering interaction clearly comes from the user; auto-loaders or scroll animations don’t count as user interaction.

Tools for measuring

Frequently asked questions about CLS

Does CLS = 0 mean there may be no layout shifts at all? No – just no unexpected ones. Shifts following an explicit user action don’t count.

Why do I see CLS = 0 on my machine but 0.2 in Search Console? Lab tests are a single run under ideal conditions; Search Console aggregates real user behaviour across many devices, connections and sessions. Late layout shifts caused by slow ads or tracking scripts show up there.

How quickly do optimisations take effect? Search Console aggregates over 28 days; visible improvement therefore typically takes 4–6 weeks.

Conclusion

CLS is the most direct measure of layout stability – an important UX signal that simultaneously feeds into the Google ranking. The most common cause (images without dimensions) is fixed quickly; more complex sources like asynchronous ads or banners need architectural solutions. We’re happy to analyse and optimise CLS as part of an SEO audit – get in touch for a no-obligation consultation.

← Back to glossary
HOMEGLOSSARYCUMULATIVE-LAYOUT-SHIFT