Premier affichage de contenu (FCP)

Ce que Premier affichage de contenu measures, what's a bon FCP score, pourquoi it isn't a Core Web Vital, how it differs from Premier Paint and LCP, and Comment corriger a slow un.

Première publication : 26 juin 2026 · Dernière mise à jour : 3 août 2026 · Advanced
Langues

Premier affichage de contenu (FCP) is the temps from quand une page starts chargement to quand quelconque partie of its content — text, image, SVG, or non-white canvas — premier renders. Bon is ≤1,8 s at the 75th percentile of réel utilisateurs. It n’est pas a Core Web Vital: the ranking signals are LCP, INP, and CLS. FCP is a diagnostic metric (lab and field) that's a building block of LCP — it se produit at or avant LCP — so it's mainly utile pour catching ressources qui bloquent le rendu and slow TTFB. In Lighthouse 10 it's 10% of the Performances score. Fix it by eliminating render-blocking CSS/JS, cutting TTFB, inlining critical CSS, en utilisant font-display: swap, and preconnecting to requis origins.

TL;DR — FCP is the temps from navigation commencer to quand quelconque page content (text, image, <svg>, or non-white <canvas>) premier renders. It is pas a Core Web Vital — it’s a supplementary, lab-and-field diagnostic metric, and a building block of LCP (FCP se produit at or avant LCP). Field thresholds (p75): Bon ≤ 1,8 s, needs-improvement ≤ 3,0 s, poor > 3,0 s. In Lighthouse 10 it’s 10% of the Performances score. Parce que FCP’s clock starts at navigation — it inclut redirection temps, connection setup, and TTFB — lab (Lighthouse) and field (CrUX) numbers souvent diverge. Fix it où it lives: render-blocking CSS/JS premier, alors TTFB, alors fonts.

Ce que FCP measures (precisely)

Google’s definition, from Philip Walton’s web.dev article, is the accuracy spine ici: “Premier affichage de contenu (FCP) measures the temps from quand the utilisateur premier navigated to lune page to quand quelconque partie of lune page’s content is rendered on the screen.” “Content,” per the même doc, signifie “text, images (notamment background images), <svg> elements, or non-white <canvas> elements.”

The word que fait tout the fonctionner is quelconque. FCP doesn’t care ce que renders — a 40-pixel logo counts the même as a complet hero image. It’s the “is anything on screen yet?” signal, qui is exactly pourquoi it’s an early indicator plutôt que a completion metric.

Evidence for this claim FCP measures from navigation until the first text, image, SVG, or non-white canvas content is rendered. Scope: Current web.dev FCP definition and qualifying content types. Confidence: high · Verified: web.dev: First Contentful Paint

Un detail that’s facile to miss and changements how vous lire the number: FCP’s clock starts at navigation, so it bundles in everything que se produit avant votre HTML is même parsed. Google’s propre Clé Point: “FCP inclut quelconque unload temps from the previous page, connection définir up temps, redirection temps, and Temps To Premier Byte (TTFB) qui peut be significant quand mesuré in the field.” A server que takes 1,5 s to respond has déjà burned la plupart of votre 1,8 s budget avant le navigateur has processed a unique byte.

FCP n’est pas a Core Web Vital

Let me be blunt à propos de ce parce que la plupart pages hedge it: FCP n’est pas a Core Web Vital and n’est pas partie of Google’s ranking signals. The Core Web Vitals are LCP, INP, and CLS — and FCP isn’t mentioned anywhere on Google’s Search ranking Core Web Vitals page.

Ce que FCP is, in Google’s taxonomy, is an “Other Web Vital” — a supplementary metric that’s utile pour diagnosis. web.dev puts it ce façon: “the metrics Temps to Premier Byte (TTFB) and Premier affichage de contenu (FCP) are les deux vital aspects of the chargement experience, and are les deux utile in diagnosing problèmes with LCP (slow server réponse times or ressources qui bloquent le rendu, respectively).”

So the honest framing pour stakeholders is two-sided, and vous devez state les deux halves sans flinching:

  • FCP ne fait pas affecter rankings directement. Don’t optimize FCP “for SEO.”
  • FCP is a great diagnostic pour LCP, qui fait affecter rankings. Render-blocking resources montrer up in FCP premier.

FCP vs Premier Paint (FP)

Ces obtenir conflated constantly:

  • Premier Paint (FP) fires quand le navigateur paints anything at tout — notamment a bare background color with aucun réel content.
  • FCP fires seulement quand eligible content renders: text, images (notamment background images), <svg> elements, or non-white <canvas> elements. That’s a spécifique, spec-defined liste — pas a loose “any DOM content” rule — and it’s worth keeping precise, since a background image counts même though it isn’t text in the DOM.

So FP ≤ FCP, toujours. On la plupart pages they’re nearly identical, parce que painting a background color with aucun content on top is rare. Quand là is a meaningful gap, it usually signifie a cosmetic background painted avant quelconque contenu réel did. The Paint Timing API renvoie les deux first-paint and first-contentful-paint entries — but FCP is the un worth analyzing; FP rarely indique vous anything actionable.

FCP vs LCP

The autre pair personnes merge:

  • FCP = quand quelconque content paints. Fires early. Pourrait be a tiny logo or a nav lien.
  • LCP = quand the largest element in the viewport renders. Fires at or après FCP.

Google’s wording: FCP measures quand quelconque content is painted and LCP quand the principal content is painted, so LCP is intended to be plus selective. Lire que as “plus selective,” not “certified correct” — neither metric proves lune page’s réel principal content is complet or utile to the visitor. FCP simplement confirms something eligible painted; LCP confirms the largest eligible candidate did. Une page peut have a fast FCP (logo at 0,5 s) and a slow LCP (hero image at 4 s) — que gap is itself a utile diagnostic. And si votre FCP is fermer to votre LCP, that’s souvent a bon sign: it signifie the premier chose painted is aussi the largest un, with aucun wasted early-paint on chrome que doesn’t matter to the utilisateur.

Evidence for this claim FCP answers when any eligible content first appears, while LCP tracks the largest eligible viewport candidate; neither metric proves the page's main content is complete or useful. Scope: field and lab Confidence: high · Verified: First Contentful Paint (FCP)

Un measurement oddity worth knowing: parce que of security restrictions on cross-origin image timing, le navigateur API peut in rare cas report LCP précédent que FCP. That’s a measurement artifact, pas something que physically happened.

Thresholds — and pourquoi lab and field disagree

Field thresholds (CrUX, p75): Bon ≤ 1,8 s · nécessite improvement ≤ 3,0 s · poor > 3,0 s. Google’s guidance is to mesurer at the 75th percentile of page loads, split à travers mobile and desktop.

Evidence for this claim A good FCP is 1.8 seconds or less at the 75th percentile; above 3 seconds is poor. Scope: Current web.dev FCP field thresholds. Confidence: high · Verified: web.dev: First Contentful Paint

But Lighthouse desktop uses différent, stricter cutoffs — green is roughly 0–0,9 s, orange 0,9–1,6 s, red over 1,6 s — parce que the lab runs a clean, throttled Chrome on a simulated device, pas real-world conditions. (Ceux bands, comme the score weights ci-dessous, are Lighthouse-version-specific — ce reflects the current audit doc as of ce writing.) The Lighthouse FCP score is “a comparison of votre page’s FCP temps and FCP times pour réel websites, fondé on données from the HTTP Archive.”

Ce is the unique la plupart courant source of FCP confusion, so internalize it:

The 1,8 s “good” line is the field (CrUX p75) threshold. Lighthouse desktop’s “green” line is ~0,9 s. Ils are différent scales pour différent jobs.

Field and lab numbers diverge mainly parce que ils sample différent populations, pas parce que un is universally “more true.” Lighthouse runs a unique clean session on fixed device/network conditions. Field/CrUX aggregates réel devices, réel networks, cache states, and navigation types — notamment back/forward-cache restores and prerendered pages, qui don’t automatically obtenir a fresh FCP the façon a normal navigation fait; ils besoin leur propre lifecycle handling (the web-vitals library fait ce pour vous). On la plupart sites the field number fait lire plus élevé — réel utilisateurs carry chaîne de redirectionss, previous- page unload temps, and cold connections a lab run skips — but that’s a tendency, pas a rule. Avant reading a lab/field gap as a problem, vérifier you’re comparing like-for-like (même device class, même network conditions). Utiliser field données pour votre real-world number and Lighthouse pour diagnosis.

Où FCP sits in the Lighthouse score

In Lighthouse 10 — the current version as of ce writing, pas a permanent figure — FCP is 10% of the Performances score. The complet weighting:

MetricWeight
Total Blocking Temps (TBT)30%
Plus grand affichage de contenu (LCP)25%
Décalage cumulatif de mise en page (CLS)25%
Premier affichage de contenu (FCP)10%
Speed Index10%

The Performances score is a weighted average of the individual metric scores, and Google notes the weightings modifier over temps as leur research evolves — FCP has held at 10% from Lighthouse 8 via 10, but confirmer contre whatever version you’re running avant treating “10%” as timeless. The practical lire: a perfect FCP peut seulement déplacer votre Lighthouse number so far — and a bad FCP souvent points at a bad LCP aussi (ils share root causes), though that’s an overlap worth checking, pas something the score guarantees.

Ce que causes a slow FCP

In rough priority order:

  1. Ressources qui bloquent le rendu — the #1 killer. CSS and synchronous JS in <head> force le navigateur to wait: it can’t construire the CSSOM and render tree, so it can’t paint anything, jusqu’à ceux fichiers are downloaded and parsed.
  2. Élevé TTFB — FCP can’t fire avant bytes arrive. A slow server is the premier domino, and it’s à l’intérieur the FCP measurement.
  3. Chaîne de redirectionss — every redirection is a complet round-trip ajouté avant the premier byte.
  4. Webfont chargement strategyfont-display: block (or aucun rule) peut leave text invisible pour up to ~3 seconds. Même si paint technically fires on a background, the utilisateur sees nothing utile.

Comment corriger it

The complet liste, but with a priority order the docs don’t give vous. Ces are the courant levers, pas universal ones — vérifier votre propre trace or filmstrip premier to voir qui resource or phase is en réalité delaying votre FCP candidate avant reaching pour fixes (preconnect, preload, a font-display modifier) que may pas appliquer to votre page:

Do ces premier (biggest wins):

  • Eliminate render-blocking CSS and JavaScript. Inline the critical, above-the-fold CSS directement in <head>; charger the rest asynchronously; ajouter async/defer to non-critical scripts. Repositioning a <link> tag fait pas aider — le navigateur won’t paint jusqu’à tout CSS is chargé and parsed regardless of où the tag sits.
  • Reduce TTFB (server réponse temps). Mise en cache, a CDN, a faster origin — anything que obtient the premier byte out sooner directement shaves FCP.
  • Fix font chargement. Utiliser font-display: swap (montre fallback text immédiatement, swaps in the web font quand ready) or font-display: optional (skips the web font si it isn’t déjà mis en cache). Éviter font-display: block pour critical text — it’s the worst pour FCP.

Alors tidy up the rest:

  • Preconnect to requis origins with <link rel="preconnect"> — establishing early connections to important third-party origins peut enregistrer 100–500 ms.
  • Preload clé requêtes (<link rel="preload">) pour a critical font or the LCP image.
  • Minify CSS, supprimer unused CSS, supprimer unused JavaScript — plus petit fichiers parse and unblock paint faster.
  • Éviter multiple redirections, éviter enormous network payloads, serve static assets with an efficient cache policy, éviter an excessive DOM size, and minimize critical requête depth. General payload hygiene que tout feeds premier paint.

The FCP → TTFB → LCP diagnostic chain

Ce is how I’d en réalité utiliser FCP, and it’s the framing the docs gesture at but don’t develop. Treat the three chargement metrics as un workflow:

  1. FCP is élevé → vérifier pour ressources qui bloquent le rendu (CSS/JS in <head>). That’s the la plupart courant causer and the fastest win.
  2. Aussi vérifier TTFB — parce que FCP inclut it, a slow server inflates FCP avant quelconque render-blocking même enters the picture. web.dev’s guidance: parce que TTFB precedes les deux FCP and LCP, votre serveur devrait respond fast suffisant que the 75th percentile of utilisateurs hit a “good” FCP.
  3. Ces même problems souvent cascade into LCP — the metric that’s en réalité a ranking signal — parce que FCP and LCP frequently share root causes. That’s an overlap worth checking, pas a guarantee: LCP has factors of its propre (the size, priority, and charger chemin of its spécifique largest element), so fixing FCP’s causes doesn’t promise a fixed LCP. It’s the correct premier placer to regarder, pas the dernier step.

That’s the valeur of FCP pour an SEO: it’s a cheap, early lire on si the chargement chemin is sain, avant the plus selective LCP measurement même completes.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.