Layout Shift Finder
CLS killing your score? This scanner reads your page’s HTML and CSS and points at the exact culprits — images without dimensions, font swaps without fallback metrics, unreserved ad slots and JS-injected headers — with copy-paste fixes.
How does the Layout Shift Finder work?
It fetches your page’s HTML plus up to 6 stylesheets (same-origin and cross-origin CDNs) in your browser and runs a source-level audit for every known CLS cause: missing image dimensions, iframes without size, web-font loading strategy, @font-face without font-display, empty JS-injected placeholders with no reserved min-height, and CSS animations that physically move layout.
- Enter a URL — the homepage or any page that scores badly on CLS.
- Read the culprit list — each finding names the elements involved.
- Apply the CSS fixes — dimensions, min-height guards, font fallback metrics.
- Measure the real number with the Core Web Vitals Checker.
- Repeat until CLS ≤ 0.1 — Google’s “good” threshold.
What causes Cumulative Layout Shift?
Five things cause almost all CLS: images and iframes without width/height, web fonts swapping in at a different size, ads or embeds injected without reserved space, JS-built headers and widgets pushing content down, and CSS animations that move layout properties. Each has a one-line CSS fix shown below.
| CLS cause | The fix |
|---|---|
| Images without dimensions | Add width + height attributes (or CSS aspect-ratio) |
| Font swap resizing text | display=optional, or swap + size-adjust fallback (local("Roboto") first — Android has no Arial) |
| JS-injected header/footer | Reserve exact space: #site-header{min-height:65px} — measure, don’t guess |
| Ad slots / embeds | min-height on the slot container matching the ad size |
| Animations moving layout | Animate transform/opacity only — never left/top/width/margin |