The State of Web Vitals

CLS Deep Dive

Q1 2026 | Phone | 55,913 sites
0ms
CLS (p75)
88.9%
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 6,885 13,770 20,654 27,539
p50 = 0.00
p75 = 0.02
p90 = 0.12
p99 = 0.70
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: 35,520 sites

CLS 0.00. p75 0.02. p99 0.70. 88.9% pass.

CLS Pass Rates

CLS
88.9%
6.3%
4.8%
Good Needs Improvement Poor

CLS passes on 88.9% of sites. 6.3% need improvement, 4.8% fail.

What Drives CLS?

Shift count
0.00
0
0.00
0
0.05
3
0.08
7–8
0.12
>p98
0.12
>p98
Iframes
0.01
0
0.01
0
0.03
2
0.05
5
0.10
>p98
0.10
>p98
3P domains
0.00
1
0.00
1
0.01
4
0.02
9–11
0.08
>p98
0.08
>p98
Preloaded fonts
0.02
0
0.02
0
0.06
3
0.02
5–6
0.03
>p98
0.03
>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.04 0.08 0.11 0.15
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.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
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.0054% of sites
has_dimensions0.0044% of sites
has_aspect_ratio0.001% of sites
has_none
54%
0.00
has_dimensions
44%
0.00
has_aspect_ratio
1%
0.00

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

Median CLS (sites using feature)
0
0.10
0.20
0.30
0.40
0.50
has_none0.0069% of sites
has_dimensions0.0032% of sites
has_none
69%
0.00
has_dimensions
32%
0.00

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

Median CLS (sites using feature)
0
0.10
0.20
0.30
0.40
0.50
swap0.0049% of sites
auto0.0040% of sites
block0.0010% of sites
fallback0.001% of sites
optional0.000% of sites
swap
49%
0.00
auto
40%
0.00
block
10%
0.00
fallback
1%
0.00
optional
0%
0.00

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

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.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

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.31.

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.41.

Largest single shift

0.00 0.04 0.08 0.11 0.15
0.1
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.34.