CLS Deep Dive
Q1 2026 | Phone | 55,913 sitesCumulative Layout Shift across 100k sites: what drives shifts (iframes, third-party, font loading, shadow DOM) and which prevention patterns actually work (aspect-ratio CSS, sized images, font preloading).
CLS Distribution
CLS 0.00. p75 0.02. p99 0.70. 88.9% pass.
CLS Pass Rates
CLS passes on 88.9% of sites. 6.3% need improvement, 4.8% fail.
What Drives CLS?
0
0
3
7–8
>p98
>p98
0
0
2
5
>p98
>p98
1
1
4
9–11
>p98
>p98
0
0
3
5–6
>p98
>p98
Each row shows how the p75 CLS shifts as a page metric increases. Dots represent bucket p75s — wider spread means stronger influence on CLS.
Shift Driver Distribution
How the p75 CLS shifts as each page metric increases. Use the dropdown to explore different factors.
Layout Foundations: How sites prevent shifts
Most layout shifts trace back to one thing: the browser discovering an element's real size after it already painted around a placeholder. The fixes are well-known - width/height attributes, aspect-ratio CSS, sized iframes. Here is who is actually using them.
Image dimensions
Image dimensions. On the fleet: 54.2% has_none, 44.4% has_dimensions, 1.4% has_aspect_ratio. 79.3% of sites use at least one has_none.
Lowest-share bucket: CLS 0.00. Highest-share bucket: CLS 0.00. r = +0.45.
Iframe dimensions
Iframe dimensions. On the fleet: 68.5% has_none, 31.5% has_dimensions. 35.3% of sites use at least one has_none.
Lowest-share bucket: CLS 0.00. Highest-share bucket: CLS 0.00. r = +0.42.
Fonts: Preventing text reflow
Fonts shift content twice: once when fallback text lays out, and again when the webfont swaps in. font-display: swap plus preloading the hero font keeps that second shift small or invisible.
Font-display strategy
Font-display strategy. On the fleet: 48.9% swap, 40.0% auto, 10.0% block. 57.6% of sites use at least one swap.
Lowest-share bucket: CLS 0.00. Highest-share bucket: CLS 0.00. r = +0.35.
Font preloading
Font preloading: median 0 B, p75 0 B.
Spearman with CLS: r = +0.48.
Dynamic & third-party content
Shifts that come from late-arriving content: third-party scripts injecting ads or consent banners into the flow after first paint, render-blocking HTML elements delaying layout, and components mounting content asynchronously.
Third-party domain count
Third-party domain count: median 7 B, p75 11 B.
Spearman with CLS: r = +0.31.
How many shifts?
How many shifts?: median 1 B, p75 3 B.
Spearman with CLS: r = +0.41.
Largest single shift
Largest single shift: median 0 B, p75 0 B.
Spearman with CLS: r = +0.34.