Skip to main content
Performance

Cumulative Layout Shift (CLS)

Published:
Updated:

CLS is the largest sum of shift scores in a session window: shifts are less than one second apart, and the window lasts at most five seconds. Each score depends on the affected viewport area and movement distance. It is not the sum over the whole visit.

Typical symptoms of high CLS are text "jumping" after a banner loads, buttons escaping from under the cursor, or ads pushing content down. A good score is at most 0.1 at the 75th percentile of real visits.

Most common causes

  • Images and iframes without declared dimensions (width/height or aspect-ratio).
  • Ads, embeds and banners loading above existing content.
  • Web fonts causing text reflow (FOIT/FOUT).
  • Content injected dynamically by JavaScript without reserved space.

How to improve CLS

Reserve space for media and dynamic content. Match fallback font metrics using size-adjust and metric overrides where appropriate, and inspect line wrapping; swap plus preload alone does not guarantee stability. Animate transform where suitable. The 500 ms exclusion applies to discrete input such as a click or key press, not scrolling, dragging or pinch zoom.

Example

An image without dimensions causes layout shift after loading. width, height or aspect-ratio reserve space upfront.

Causes CLS: no dimensions
HTML
<img src="/summer-promo.jpg" alt="Summer promotion">
Stable layout: reserved space
HTML
<img src="/summer-promo.jpg" alt="Summer promotion"
     width="1200" height="400" style="aspect-ratio: 3 / 1;">

Sources & further reading

Check your site performance

Insight measures Core Web Vitals and ranks bottlenecks by impact.