Technical

First Contentful Paint (FCP)

Also known as: FCP, first contentful paint

FCP is the time from page request to the first piece of content (text, image, SVG, non-white canvas) being painted on the screen. FCP is a supplementary Web Vitals metric — it's not one of the three Core Web Vitals (LCP, INP, CLS) but is widely reported in Lighthouse / PageSpeed audits. The threshold for 'Good' is ≤ 1.8 seconds; 'Needs Improvement' is 1.8–3.0; 'Poor' is > 3.0.

FCP vs LCP — the relationship

FCP measures when the user sees ANY content; LCP measures when they see the LARGEST content. FCP almost always fires earlier than LCP.

A typical page progression:

  • 0.0s: page request starts
  • 0.4s: TTFB (server response begins)
  • 1.2s: FCP fires (first text or image visible)
  • 2.1s: LCP fires (hero image fully rendered)

Optimizing FCP optimizes the “page is loading” moment; optimizing LCP optimizes the “page has loaded” moment.

What FCP measures (precisely)

The metric fires the first time the browser paints ANY of:

  • Text (after web fonts load, or fallback fonts)
  • Images (raster, SVG, or background)
  • Non-white canvas
  • Iframe content

White-background-only pages don’t satisfy FCP — there must be visible content.

Why FCP matters

Even though FCP isn’t directly used in Google ranking, it correlates strongly with perceived speed and bounce rate:

  • Sites with poor FCP (>3s) bounce 32% more on mobile
  • Users feel they “can use” the site once FCP fires, regardless of whether all content is loaded

For business outcomes, FCP shapes user impression in the critical 0-2 second window.

Optimization tactics

  • Eliminate render-blocking resources — critical CSS inline, defer/async JS
  • Reduce TTFB — CDN edge caching, server-side optimizations
  • Server-side render or static generate — avoid CSR-only patterns where the page is white until JS runs
  • Optimize font loadingfont-display: swap or optional to avoid invisible text
  • Compress critical text content — gzip/brotli served from origin

FCP vs LCP — which to prioritize

If you have to choose, LCP wins (it’s a Core Web Vital and directly affects ranking). But the optimizations that improve LCP usually improve FCP too — they’re related metrics. A page with good LCP almost always has good FCP.

The exception: pages where the LCP element is much later than FCP (large hero images after early text). Optimizing LCP-specific levers (image preload, image format) won’t help FCP at all.

Measurement

  • PageSpeed Insights — surfaces FCP for both lab (Lighthouse) and field (CrUX) data
  • Lighthouse — lab simulation; useful for debugging
  • CrUX — 28-day rolling real-user FCP
  • Web Vitals JS library — RUM measurement of FCP

Resocial perspective

We monitor FCP alongside the three Core Web Vitals, but treat it as supplementary. A page that passes LCP almost always passes FCP; the inverse isn’t always true. FCP regressions usually indicate broader render-pipeline issues that will eventually hurt LCP too.

Looking for hands-on help with this?

Free SEO audit

60+ dimensions, 48-hour turnaround.

Get a Free SEO Audit

Enterprise RFP

Tailored proposal in 5 business days.

Submit an Enterprise RFP