The State of Web Vitals

CLS Deep Dive

Q1 2026 | Desktop | 55,913 sites
0ms
CLS (p75)
78.2%
Passing CLS
3
Shifts at p75

Cumulative 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

0 2,367 4,735 7,102 9,469
p50 = 0.03
p75 = 0.09
p90 = 0.22
p99 = 0.77
0–0.025 0.025–0.05 0.05–0.075 0.075–0.1 0.1–0.125 0.125–0.15 0.15–0.175 0.175–0.2 0.2–0.225 0.225–0.25 0.25–0.275 0.275–0.3 0.3–0.325 0.325–0.35 0.35–0.375 0.375–0.4 0.4+
Good (≤0.10) Needs improvement Poor (>0.25) Percentile markers Total: 19,608 sites

CLS 0.03. p75 0.09. p99 0.77. 78.2% pass.

CLS Pass Rates

CLS
78.2%
13.2%
8.5%
Good Needs Improvement Poor

CLS passes on 78.2% of sites. 13.2% need improvement, 8.5% fail.

What Drives CLS?

Shift count
0.06
0
0.06
0
0.12
3
0.17
7–8
0.16
>p98
0.16
>p98
Iframes
0.08
0
0.08
0
0.10
2
0.10
5
0.13
>p98
0.13
>p98
3P domains
0.05
1
0.05
1
0.07
4
0.10
9–11
0.11
>p98
0.11
>p98
Preloaded fonts
0.09
0
0.09
0
0.09
3
0.09
5–6
0.12
>p98
0.12
>p98
0.00 0.05 0.10 0.15 0.20 0.25

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

0.00 0.05 0.10 0.15 0.20
0.1
0 15878 31756
0 1 2 3 4 5 6 7–8 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count
0.00 0.06 0.13 0.19 0.25
0.1
0.25
0 8421 16842
0 1 2 3 4 5–6 7–8 9–12 13–17 18–24 25–34 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count
0.00 0.04 0.08 0.11 0.15
0.1
0 5948 11896
0 1 2 3 4 5 6–8 9–11 12–15 16–21 22–29 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count
0.00 0.04 0.08 0.11 0.15
0.1
0 24144 48287
0 1 2 3 4 5–6 7 8–9 10–12 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count

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

Median CLS (sites using feature)
0
0.10
0.20
0.30
0.40
0.50
has_none0.0354% of sites
has_dimensions0.0344% of sites
has_aspect_ratio0.041% of sites
has_none
54%
0.03
has_dimensions
44%
0.03
has_aspect_ratio
1%
0.04

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.02. Highest-share bucket: CLS 0.03. r = +0.35.

Iframe dimensions

Median CLS (sites using feature)
0
0.10
0.20
0.30
0.40
0.50
has_none0.0469% of sites
has_dimensions0.0432% of sites
has_none
69%
0.04
has_dimensions
32%
0.04

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.02. Highest-share bucket: CLS 0.04. r = +0.24.

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

Median CLS (sites using feature)
0
0.10
0.20
0.30
0.40
0.50
swap0.0349% of sites
auto0.0340% of sites
block0.0410% of sites
fallback0.021% of sites
optional0.030% of sites
swap
49%
0.03
auto
40%
0.03
block
10%
0.04
fallback
1%
0.02
optional
0%
0.03

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.02. Highest-share bucket: CLS 0.03. r = +0.22.

Font preloading

0.00 0.04 0.08 0.11 0.15
0.1
0 24144 48287
0 1 2 3 4 5–6 7 8–9 10–12 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count

Font preloading: median 0 B, p75 0 B.

Spearman with CLS: r = +0.29.

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

0.00 0.04 0.08 0.11 0.15
0.1
0 5948 11896
0 1 2 3 4 5 6–8 9–11 12–15 16–21 22–29 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count

Third-party domain count: median 7 B, p75 11 B.

Spearman with CLS: r = +0.16.

How many shifts?

0.00 0.04 0.08 0.11 0.15
0.1
0 8421 16842
0 1 2 3 4 5–6 7–8 9–12 13–17 18–24 25–34 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count

How many shifts?: median 1 B, p75 3 B.

Spearman with CLS: r = +0.27.

Largest single shift

0.00 0.06 0.13 0.19 0.25
0.1
0.25
0 3014 6027
0 0–0 0–0.001 0.001–0.002 0.002–0.004 0.004–0.009 0.009–0.023 0.023–0.058 0.058–0.143 0.143–0.354 0.354–0.879 >p98
Good (≤0.1) Needs improvement Poor (>0.25) Site count

Largest single shift: median 0 B, p75 0 B.

Spearman with CLS: r = +0.33.