Cumulative Layout Shift (CLS)

highperformance-cls

CLS scores how much content jumps around as a page loads. Reserving space for images and embeds fixes most of it — here's the pattern.

What it is

Cumulative Layout Shift (CLS) scores how much visible content unexpectedly moves during a page's lifetime, weighted by how much of the viewport shifted and how far. A score under 0.1 is good; 0.1-0.25 is graded medium here, above 0.25 is high.

It's the Core Web Vital most directly tied to a visitor's own experience rather than a network condition: it happens on a fast connection just as easily as a slow one, whenever something loads in above content that's already rendered.

Why it matters

The canonical failure mode is an image or ad with no reserved dimensions: the browser doesn't know its final size until it loads, so everything below it jumps down the moment it does — often exactly when a visitor is tapping a button that a moment later is a different element entirely.

Reserving space with explicit width/height (or CSS aspect-ratio) on anything that loads asynchronously — images, embeds, ads, injected banners — fixes the large majority of CLS findings without touching anything else about the page.

How to fix it

with a reference doc
html
<img src="photo.jpg" width="800" height="600" alt="…">

Reference documentation

Related checks

3
highLargest Contentful Paint (LCP)Largest Contentful Paint (LCP) measures the time from navigation start until the largest image or text block in the viewport has rendered — a stand-in for 'when does this page feel loaded' rather than 'when did the first byte arrive'. It's one of Google's three Core Web Vitals.highTotal Blocking Time (TBT)Total Blocking Time (TBT) sums how long the main thread was blocked by long tasks (over 50ms) between First Contentful Paint and the page becoming interactive. It's the lab-measurable stand-in this scanner uses for Interaction to Next Paint (INP), which needs real user interaction data that a single-page lab test can't produce.mediumRender-blocking resourcesA render-blocking resource is a stylesheet or synchronous script in <head> that the browser must download and process before it can paint anything — the page stays blank until every one of them resolves. This check looks specifically at resources in the document head, the ones the browser encounters before it can render a single pixel.

This is one of the 75 checks the scanner runs. See what we check for the full list, every severity weight, and how the score is computed from them.

See whether your own site passes cumulative layout shift (cls).

One page, all 75 checks, free. No account, no card.

Run a scan