PageSpeed Matters
    Speed Audit
    Let's Talk
    PageSpeed Matters
    Book a Call
    Core Web Vitals · Glossary

    Cumulative Layout Shift (CLS)

    Matt SuffolettoWritten by Matt Suffoletto
    Published June 26, 2026
    Cumulative Layout Shift
    Share

    TL;DR

    Cumulative Layout Shift (CLS) is a Core Web Vital that measures the visual stability of a page by summing the layout shift scores of unexpected movements of visible elements during the page's lifetime.

    What is Cumulative Layout Shift (CLS)?

    Cumulative Layout Shift (CLS) is a Core Web Vital that measures the visual stability of a page by summing the layout shift scores of unexpected movements of visible elements during the page's lifetime.

    Learn more in our how to improve CLS guide, or work with us through our done-for-you speed optimization service.

    CLS Thresholds & Benchmarks

    Metric Good Needs Improvement Poor
    CLS ≤ 0.1 0.1, 0.25 > 0.25

    How CLS is Measured

    CLS is reported as a unitless score computed from the impact fraction and distance fraction of each shift, captured via the Layout Instability API and aggregated in CrUX using a session-window model.

    How to Fix & Optimize

    Most CLS problems are fixed with a small, disciplined checklist:

    • Set explicit width and height on all images and embeds (or use CSS `aspect-ratio`), so the browser reserves the correct space before the resource loads. Missing image dimensions are the single most common CLS cause.
    • Reserve space for ads, banners, and dynamic widgets with a `min-height` matching the expected size, so injected content does not push page content down when it arrives.
    • Use `font-display: swap` with size-adjusted fallback fonts (`size-adjust`, `ascent-override`, `descent-override` on the fallback `@font-face`) so text does not reflow when the webfont finally loads.
    • Never inject content above existing content. Cookie banners, promo bars, and app-install prompts should push down from the top of the viewport as an overlay, or reserve their space in the layout from the initial paint.
    • Animate with `transform` and `opacity`, not layout properties. Changes to `width`, `height`, `top`, `left`, or `margin` trigger layout and can cause shifts; `transform` runs on the compositor and cannot.

    Related Terms

    Sources