SEO-21
High CLS
What the check measures
The page is loaded in a real browser and CLS (Cumulative Layout Shift) is measured: how much the content jumps around while loading. It is a dimensionless number; the higher it is, the more the page moves under your hands. The finding is raised above 0.1. The threshold lives in config/ under web_ and is the official “good” boundary from the Core Web Vitals methodology, not our estimate.
The same limitations as SEO-20 apply and for CLS they matter even more: one lab load without interaction, over a sample of at most 10 pages. Real shifts often happen while scrolling or after dismissing a cookie banner, and our measurement will not catch that.
Which yields an important point: a zero CLS in our report does not mean the page does not jump. It means it did not jump during the few seconds we were watching.
And what the check does not do: it will not tell you which element jumped. It measures the sum of the shifts, not their author; you have to find that in the browser, see below.
The finding is page-level; severity is warning.
How strong the evidence is
We recommend it because it does no harm or has some other benefit, but we promise nothing about whether it makes language models cite you. Nobody has demonstrated that yet.
For classic search it is a confirmed ranking signal: Google's own documentation says Core Web Vitals are used by its ranking systems. It is just one component of a broader “page experience” assessment, not the main criterion.
For visibility in AI answers we have no documented effect and do not claim one. Hence “effect not demonstrated”, the same discipline as SEO-20.
Where CLS has value regardless of any search engine: it is the one metric whose impact a customer can recall unaided. Everybody knows the moment when you are about to tap a link, the page jumps, and the tap lands on an advert. That is not an abstract number, that is a specific annoyed person.
The practical conclusion: fix it for that reason, not for ours. And because our measurement is one load without interaction, treat the report's value as a direction indicator; the real numbers are in Search Console, from your visitors.
How to fix it
Layout shift has four usual causes, all removable by reserving space for the element in advance:
- Images without dimensions. The browser cannot reserve space, so when the image arrives it shoves the text down. Add
widthandheightattributes (also reported bySEO-10). - Embedded content without dimensions: maps, videos, ad slots. Wrap them in a container with a fixed
aspect-ratio. - Fonts that swap. Text renders in a fallback and reflows when the web font arrives. Fix:
font-display: optional, or a fallback with similar metrics. - Content inserted above existing content. Consent bars, notices, banners. Reserve space for them, or render them over the content rather than above it.
<!-- Image with reserved space -->
<img src="photo.jpg" alt="…" width="1200" height="800" style="max-width:100%;height:auto">
<!-- Embedded video with a fixed aspect ratio -->
<div style="aspect-ratio:16/9">
<iframe src="…" style="width:100%;height:100%"></iframe>
</div>You can check this yourself, more reliably than our measurement: open the page, throttle the network in developer tools and watch what jumps while it loads. What you see is what CLS measures.
What the report says about it
Finding description
The measured Cumulative Layout Shift is [cls]; the "good" threshold is [threshold]. Core Web Vitals are a documented Google ranking signal for classic search (source: web.dev / Google Search Central, see docs/
Recommendation
Set explicit dimensions on images/videos (related to SEO-10), reserve space for ads/embeds, and avoid inserting content above already-
Sources
- Google Search Central: Understanding page experience (accessed 2026-09-12)
- web.dev: Cumulative Layout Shift (CLS) (accessed 2026-09-12)
Text verified 2026-09-12