Keep CLS under 0.1 on every page

Cumulative Layout Shift scores unexpected movement of visible content. Good means 0.1 or less at p75. The main causes are images without dimensions, injected ads or banners, and web fonts changing metrics. Reserve space, preload fonts and never insert content above existing content.

mediumIn codeimpact effort

Why this matters

Reserve space before content arrives and stop shifting the page.

Get the full breakdown

The extended brief explains when this works, when it does not, and the trade-offs. Join the waitlist and it unlocks for every tip when sign-in opens; MCP access is the paid part.

Join the waitlist

Before you start

  • Field data access
  • Access to layout and font loading

How to apply it

  1. Locate the shifting nodes

    Record a throttled load in the Performance panel and read the Layout Shifts track. Each entry names the node and the impacted region.

    Check: The trace lists the shifting elements and their contribution to total CLS.

  2. Reserve space and stabilise fonts

    Add width and height or aspect-ratio to media, reserve container heights for embeds, and preload the above-the-fold font with a metric-compatible fallback.

    Check: The trace shows zero layout shifts from images or fonts during load.

  3. Confirm field improvement

    Compare the Core Web Vitals report for the template across four-week windows after the fix ships.

    Check: Field p75 CLS is 0.1 or less.

Get the prompt for your agent

A ready-to-paste prompt for your agent that implements this tip and verifies the result in your repo.

Join the waitlist

Source: seo-mcp playbook · curated entry · report an error

Framework notes

nextjs-app

`next/image` requires width and height unless `fill` is used; supply dimensions so the component reserves space before the file loads.

nuxt

Use `@nuxt/image` with explicit width and height, and load fonts through `@nuxt/fonts` so metric overrides are generated.

Official references

Let your agent apply this + 161 more tips.

Pre-order — $19