Above-the-Fold Strategy
Above-the-fold (ATF) design has an outsized impact on LCP, CLS, and INP. The goal is simple: the browser discovers the primary content early, can render it without waiting on heavy work, and nothing jumps around while it loads.
The ATF Contract
| ATF Element | What "Good" Looks Like | Why It Matters |
|---|---|---|
| H1 + supporting copy | Text renders immediately with a stable fallback font | Prevents FOIT and reduces CLS risk |
| Primary visual (often LCP) | One image, responsive, compressed, and not lazy-loaded | LCP depends on this element |
| Navigation/header | Stable height; no late injection above content | Prevents layout shift |
| CTA | Simple button/link; minimal JS required | Keeps INP healthy |
LCP Element Rules
If your LCP element is an image, follow these rules:
- Use a real
<img>(avoid CSS background images for your LCP element). - Provide dimensions (
width/height) oraspect-ratioso space is reserved. - Do not lazy-load the LCP element.
- Prefer WebP/AVIF and keep the file size reasonable.
- Consider
fetchpriority="high"and (sometimes) a preload hint.
hero-image.html
<img
src="/images/hero.webp"
width="1200"
height="630"
alt="Hero image"
fetchpriority="high"
decoding="async"
loading="eager"
/>
Optional preload (use sparingly):
preload-hero-image.html
<link rel="preload" as="image" href="/images/hero.webp" />
CLS-Safe Patterns
Common causes of above-the-fold CLS:
- Images/iframes without reserved space
- Font swaps (custom font loads late)
- Banners injected above the header
- Sticky headers that change height after load
Fix patterns:
- Reserve space for media: set
width/height(oraspect-ratio). - Keep headers a fixed height; avoid adding bars above it after load.
- Use
font-display: swapand preload only the fonts you truly need for ATF.
INP-Safe Patterns
Keep interactivity simple above the fold:
- Avoid carousels and heavy animation libraries for the hero.
- Delay non-essential third-party scripts (chat, marketing) until interaction.
- Prefer CSS transforms/opacity for animations (avoid layout-affecting animations).
Quick Audit
- PageSpeed Insights (mobile): identify the LCP element and what delays it.
- DevTools -> Performance: look for long tasks and heavy layout/paint work.
- DevTools -> Rendering: enable "Layout Shift Regions" and reload to see jumps.
- DevTools -> Network: confirm the hero image/font strategy matches intent.