First Contentful Paint (FCP): guida
Cosa misura il First Contentful Paint, qual è un buon punteggio FCP, perché non è un Core Web Vital, in cosa differisce da First Paint e LCP e come correggere un FCP lento.
Lingue
First Contentful Paint (FCP) è il tempo che intercorre dall’inizio del caricamento di una pagina al primo rendering di una parte qualsiasi del suo contenuto — testo, immagine, SVG o canvas non bianco — al 75° percentile degli utenti reali un buon valore è ≤1,8 s. NON è un Core Web Vital: i segnali di ranking sono LCP, INP e CLS. FCP è una metrica diagnostica (di laboratorio e sul campo), un elemento costitutivo di LCP — avviene allo stesso tempo o prima di LCP — utile soprattutto per individuare risorse che bloccano il rendering e un TTFB lento. In Lighthouse 10 pesa il 10% del punteggio Performance. Per migliorarlo, elimina CSS/JS che bloccano il rendering, riduci il TTFB, inserisci il CSS critico inline, usa font-display: swap e preconnetti alle origini necessarie.
TL;DR — First Contentful Paint (FCP) è il momento in cui un visitatore vede il primo elemento della pagina — qualunque testo, immagine o grafica — invece di uno schermo bianco. Più è veloce, meglio è: meno di 1,8 secondi è il valore considerato «buono». È un utile controllo della velocità, ma non è una delle metriche che Google usa per il ranking.
Che cos’è davvero l’FCP
Quando qualcuno fa clic su un link che porta alla tua pagina, c’è un breve intervallo in cui fissa il nulla — uno schermo vuoto — mentre il browser recupera ed elabora la pagina. First Contentful Paint è l’istante in cui quello schermo vuoto si trasforma in qualcosa di reale: un titolo, un logo, una foto, qualsiasi elemento che il visitatore possa davvero vedere.
Ecco l’idea. FCP risponde a una domanda semplice: «Quanto tempo passa prima che l’utente veda che la pagina è viva e sta facendo qualcosa?» Una pagina che mostra contenuti in mezzo secondo sembra veloce. Una pagina che resta vuota per tre secondi sembra guasta — e le persone se ne vanno.
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 PaintChe cosa conta come «contenuto»
L’FCP scatta quando il browser disegna sullo schermo uno qualsiasi di questi elementi:
- Testo (un titolo, un paragrafo, un link di navigazione)
- Immagini, comprese le immagini di sfondo
- Grafiche
<svg> - Un elemento
<canvas>non bianco
Un semplice colore di sfondo, da solo, non conta: è un evento diverso e precedente chiamato First Paint. L’FCP conta solo quando appare un vero contenuto.
Qual è un buon punteggio?
Le fasce di Google, misurate su visitatori reali:
| Tempo FCP | Valutazione |
|---|---|
| 1,8 secondi o meno | Buono |
| 1,8–3,0 secondi | Da migliorare |
| Oltre 3,0 secondi | Scarso |
Vedrai il tuo FCP in strumenti come PageSpeed Insights e Lighthouse, gli stessi report che mostrano i tuoi Core Web Vitals.
L’FCP influisce sul mio ranking in Google?
No, non direttamente. È il punto su cui la maggior parte delle persone sbaglia. Le metriche che Google usa davvero per il ranking sono i tre Core Web Vitals: LCP, INP e CLS. L’FCP non è uno di questi.
Ecco però perché vale comunque la pena monitorarlo: le cause di un FCP lento — un server lento, fogli di stile pesanti e script che bloccano il rendering della pagina — sono spesso le stesse che danneggiano il Largest Contentful Paint (LCP), che invece è un segnale di ranking. Risolvere le cause profonde dell’FCP aiuta quindi spesso anche l’LCP, ma non è una garanzia, perché l’LCP ha cause proprie (le dimensioni e la priorità di caricamento del suo elemento più grande). Pensa all’FCP come a un rilevatore di fumo: vale la pena controllarlo, ma non dimostra che l’incendio sia spento.
Le correzioni rapide
Se il tuo FCP è lento, queste sono le cause più comuni (e cosa fare):
- File che bloccano il rendering. CSS e JavaScript nel tuo
<head>possono impedire al browser di disegnare qualsiasi cosa finché non hanno finito di caricarsi. È la causa numero 1. - Un server lento. Se il server impiega molto a rispondere (TTFB elevato), il browser non può disegnare nulla finché non arrivano i byte.
- Font che nascondono il testo. Alcune configurazioni dei font lasciano il testo invisibile
fino a tre secondi mentre si carica un webfont. Impostare la regola su
font-display: swapmostra subito il testo di fallback.
Vuoi la versione tecnica — la differenza tra laboratorio e dati sul campo, la catena diagnostica FCP/LCP e l’elenco completo delle correzioni? Passa alla scheda Advanced.
TL;DR — FCP è il tempo che va dall’inizio della navigazione al primo rendering di un contenuto qualsiasi della pagina (testo, immagine,
<svg>o<canvas>non bianco). Non è un Core Web Vital: è una metrica diagnostica supplementare, di laboratorio e sul campo, e un elemento costitutivo di LCP (FCP si verifica allo stesso tempo o prima di LCP). Soglie sul campo (p75): Buono ≤1,8 s, da migliorare ≤3,0 s, scarso >3,0 s. In Lighthouse 10 vale il 10% del punteggio Performance. Poiché il cronometro dell’FCP parte dalla navigazione — includendo reindirizzamenti, configurazione della connessione e TTFB — i numeri di laboratorio (Lighthouse) e sul campo (CrUX) spesso divergono. Intervieni dove si trova il problema: prima CSS/JS che bloccano il rendering, poi TTFB, poi font.
Che cosa misura l’FCP (con precisione)
La definizione di Google, tratta dall’articolo di Philip Walton su web.dev, è la spina dorsale
dell’accuratezza: “First Contentful Paint (FCP) measures the time from when the user first navigated to
the page to when any part of the page’s content is rendered on the screen.” — «First Contentful Paint
(FCP) misura il tempo dal momento in cui l’utente ha iniziato a navigare verso la pagina a quello in cui
una parte qualsiasi del contenuto della pagina viene visualizzata sullo schermo». «Contento», secondo
lo stesso documento, significa “text, images (including background images), <svg> elements,
or non-white <canvas> elements.” — «testo, immagini (comprese le immagini di sfondo), elementi
<svg> o elementi <canvas> non bianchi».
La parola che fa tutto il lavoro è qualsiasi. A FCP non importa che cosa venga visualizzato: un logo da 40 pixel vale quanto una grande immagine hero. È il segnale «c’è qualcosa sullo schermo?», proprio per questo è un indicatore precoce e non una metrica di completamento.
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 PaintUn dettaglio facile da trascurare cambia il modo in cui si legge il numero: il cronometro dell’FCP parte dalla navigazione, quindi include tutto ciò che accade prima ancora che il tuo HTML venga analizzato. Il Key Point di Google dice: “FCP includes any unload time from the previous page, connection set up time, redirect time, and Time To First Byte (TTFB) which can be significant when measured in the field.” — «L’FCP include il tempo di scaricamento della pagina precedente, il tempo di configurazione della connessione, il tempo dei reindirizzamenti e il Time To First Byte (TTFB), che può essere significativo quando viene misurato sul campo». Un server che impiega 1,5 s a rispondere ha già consumato gran parte del tuo budget di 1,8 s prima che il browser abbia elaborato un solo byte.
L’FCP NON è un Core Web Vital
Voglio essere diretto, perché la maggior parte delle pagine usa formule prudenti: l’FCP non è un Core Web Vital e non fa parte dei segnali di ranking di Google. I Core Web Vitals sono LCP, INP e CLS, e l’FCP non viene menzionato da nessuna parte nella pagina di Google sui Core Web Vitals per il ranking nella Ricerca.
Nella tassonomia di Google, l’FCP è un «Other Web Vital», una metrica supplementare utile per la diagnosi. web.dev lo spiega così: “the metrics Time to First Byte (TTFB) and First Contentful Paint (FCP) are both vital aspects of the loading experience, and are both useful in diagnosing issues with LCP (slow server response times or render-blocking resources, respectively).” — «le metriche Time to First Byte (TTFB) e First Contentful Paint (FCP) sono entrambe aspetti fondamentali dell’esperienza di caricamento ed entrambe sono utili per diagnosticare problemi con LCP (rispettivamente, tempi di risposta del server lenti o risorse che bloccano il rendering).»
Per gli stakeholder, quindi, l’inquadramento onesto ha due lati: dichiarali entrambi senza esitazioni:
- L’FCP non influisce direttamente sul ranking. Non ottimizzare l’FCP «per la SEO».
- L’FCP è un ottimo strumento diagnostico per LCP, che invece influisce sul ranking. Le risorse che bloccano il rendering si manifestano prima nell’FCP.
FCP e First Paint (FP) a confronto
Vengono confusi continuamente:
- First Paint (FP) scatta quando il browser dipinge qualsiasi cosa, anche un semplice colore di sfondo privo di contenuto reale.
- FCP scatta solo quando viene visualizzato un contenuto idoneo: testo, immagini (comprese
quelle di sfondo), elementi
<svg>o elementi<canvas>non bianchi. È un elenco specifico, definito dalla specifica, non una regola generica di «qualunque contenuto del DOM»; è importante mantenere questa precisione, perché un’immagine di sfondo conta anche se non è testo nel DOM.
Quindi FP ≤ FCP, sempre. Nella maggior parte delle pagine sono quasi identici, perché
è raro dipingere un colore di sfondo senza contenuto sovrapposto. Quando esiste una differenza
significativa, di solito significa che uno sfondo cosmetico è stato dipinto prima di qualsiasi
contenuto reale. La Paint Timing API restituisce entrambe le voci first-paint e
first-contentful-paint, ma vale la pena analizzare l’FCP: l’FP raramente fornisce indicazioni
utili per intervenire.
FCP e LCP a confronto
L’altra coppia che viene spesso confusa:
- FCP = quando viene dipinto un contenuto qualsiasi. Scatta presto. Potrebbe essere un piccolo logo o un link di navigazione.
- LCP = quando viene visualizzato l’elemento più grande nel viewport. Scatta in corrispondenza o dopo l’FCP.
La formulazione di Google è: FCP misura quando viene dipinto un contenuto qualsiasi e LCP quando viene dipinto il contenuto principale, quindi LCP è pensato per essere più selettivo. Leggilo come «più selettivo», non come «certificato corretto»: nessuna delle due metriche dimostra che il contenuto principale effettivo della pagina sia completo o utile al visitatore. FCP conferma solo che è stato dipinto un contenuto idoneo; LCP conferma che lo è stato il candidato idoneo più grande. Una pagina può avere un FCP veloce (logo a 0,5 s) e un LCP lento (immagine hero a 4 s): quella differenza è di per sé una diagnosi utile. E se l’FCP è vicino all’LCP, spesso è un buon segno: significa che la prima cosa dipinta è anche la più grande, senza una pittura anticipata sprecata su elementi dell’interfaccia che non interessano all’utente.
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)Vale la pena conoscere una stranezza della misurazione: a causa delle restrizioni di sicurezza sulla temporizzazione delle immagini cross-origin, in rari casi l’API del browser può riportare LCP prima di FCP. È un artefatto di misurazione, non qualcosa che sia avvenuto fisicamente.
Soglie e motivo della differenza tra laboratorio e dati sul campo
Soglie sul campo (CrUX, p75): buono ≤1,8 s · da migliorare ≤3,0 s · scarso >3,0 s. La guida di Google è misurare al 75° percentile dei caricamenti di pagina, separando mobile e 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 PaintMa Lighthouse desktop usa soglie diverse e più severe: verde circa 0–0,9 s, arancione 0,9–1,6 s, rosso oltre 1,6 s, perché il laboratorio esegue Chrome in condizioni pulite e limitato artificialmente su un dispositivo simulato, non in condizioni reali. (Queste fasce, come i pesi del punteggio sotto, dipendono dalla versione di Lighthouse: qui si riflette la documentazione dell’audit attuale al momento della stesura.) Il punteggio FCP di Lighthouse è “a comparison of your page’s FCP time and FCP times for real websites, based on data from the HTTP Archive.” — «un confronto tra il tempo FCP della tua pagina e i tempi FCP di siti reali, basato sui dati dell’HTTP Archive».
Questa è la fonte più comune di confusione sull’FCP, quindi fissala bene:
La soglia «buona» di 1,8 s è quella sul campo (p75 di CrUX). La soglia «verde» del desktop Lighthouse è circa 0,9 s. Sono scale diverse per scopi diversi.
I numeri sul campo e in laboratorio divergono soprattutto perché campionano popolazioni diverse, non perché uno sia universalmente «più vero». Lighthouse esegue una singola sessione pulita su condizioni fisse di dispositivo e rete. I dati sul campo/CrUX aggregano dispositivi, reti, stati della cache e tipi di navigazione reali, compresi ripristini dalla cache indietro/avanti e pagine prerenderizzate, che non ricevono automaticamente un nuovo FCP come una navigazione normale: richiedono una gestione del ciclo di vita dedicata (la libreria web-vitals lo fa per te). Nella maggior parte dei siti il valore sul campo è più alto, perché gli utenti reali portano con sé catene di reindirizzamenti, il tempo di scaricamento della pagina precedente e connessioni fredde che un test di laboratorio salta; ma è una tendenza, non una regola. Prima di leggere la differenza laboratorio/campo come un problema, verifica di confrontare condizioni omogenee (stessa classe di dispositivo, stesse condizioni di rete). Usa i dati sul campo per il numero reale e Lighthouse per la diagnosi.
Dove si colloca l’FCP nel punteggio Lighthouse
In Lighthouse 10, la versione attuale al momento della stesura ma non un valore permanente, l’FCP vale il 10% del punteggio Performance. La ponderazione completa è:
| Metrica | Peso |
|---|---|
| Total Blocking Time (TBT) | 30% |
| Largest Contentful Paint (LCP) | 25% |
| Cumulative Layout Shift (CLS) | 25% |
| First Contentful Paint (FCP) | 10% |
| Speed Index | 10% |
Il punteggio Performance è una media ponderata dei punteggi delle singole metriche e Google nota che i pesi cambiano nel tempo con l’evolversi della ricerca: l’FCP è rimasto al 10% da Lighthouse 8 a 10, ma verifica la versione in esecuzione prima di trattare «10%» come un valore senza tempo. In pratica, un FCP perfetto può spostare il punteggio Lighthouse solo fino a un certo punto; inoltre un FCP scarso spesso segnala anche un LCP scarso (condividono le cause profonde), ma è una sovrapposizione da verificare, non qualcosa che il punteggio garantisca.
Che cosa causa un FCP lento
In ordine approssimativo di priorità:
- Risorse che bloccano il rendering — il principale problema. CSS e JS sincrono nel
<head>obbligano il browser ad aspettare: non può costruire CSSOM e albero di rendering, quindi non può dipingere nulla finché quei file non vengono scaricati e analizzati. - TTFB elevato — l’FCP non può scattare prima che arrivino i byte. Un server lento è il primo domino e rientra dentro la misurazione FCP.
- Catene di reindirizzamenti — ogni reindirizzamento aggiunge un round trip completo prima del primo byte.
- Strategia di caricamento dei webfont —
font-display: block(o nessuna regola) può lasciare il testo invisibile per circa 3 s. Anche se il rendering scatta tecnicamente su uno sfondo, l’utente non vede nulla di utile.
Come correggerlo
L’elenco completo, ma con un ordine di priorità che la documentazione non fornisce. Sono leve comuni, non universali: controlla prima il tuo trace o filmstrip per capire quale risorsa o fase stia davvero ritardando il tuo candidato FCP, prima di applicare correzioni (preconnect, preload o modifica di font-display) che potrebbero non valere per la tua pagina:
Fai prima queste cose (i guadagni maggiori):
- Elimina CSS e JavaScript che bloccano il rendering. Inserisci direttamente nel
<head>il CSS critico above the fold; carica il resto in modo asincrono; aggiungiasync/deferagli script non critici. Riposizionare un tag<link>non serve: il browser non dipingerà finché tutto il CSS non sarà caricato e analizzato, indipendentemente dalla posizione del tag. - Riduci il TTFB (tempo di risposta del server). Cache, CDN, un’origine più veloce: tutto ciò che fa arrivare prima il primo byte riduce direttamente l’FCP.
- Correggi il caricamento dei font. Usa
font-display: swap(mostra subito il testo di fallback e sostituisce il webfont quando pronto) ofont-display: optional(salta il webfont se non è già in cache). Evitafont-display: blockper il testo critico: è la scelta peggiore per l’FCP.
Poi sistema il resto:
- Preconnetti alle origini necessarie con
<link rel="preconnect">: instaurare presto connessioni verso origini di terze parti importanti può far risparmiare 100–500 ms. - Precarica le richieste chiave (
<link rel="preload">) per un font critico o per l’immagine LCP. - Minifica il CSS, rimuovi il CSS inutilizzato e rimuovi il JavaScript inutilizzato: file più piccoli vengono analizzati più velocemente e sbloccano prima il rendering.
- Evita più reindirizzamenti, payload di rete enormi, asset statici con una policy di cache inefficiente, un DOM eccessivamente grande e una profondità eccessiva delle richieste critiche. È l’igiene generale del payload che alimenta il primo rendering.
La catena diagnostica FCP → TTFB → LCP
Ecco come userei davvero l’FCP: è l’inquadramento a cui la documentazione accenna senza svilupparlo. Tratta le tre metriche di caricamento come un unico flusso di lavoro:
- FCP alto → controlla le risorse che bloccano il rendering (CSS/JS nel
<head>). È la causa più comune e la vittoria più rapida. - Controlla anche il TTFB: poiché l’FCP lo include, un server lento gonfia l’FCP prima ancora che una risorsa che blocca il rendering entri in gioco. La guida di web.dev dice che, poiché il TTFB precede sia FCP sia LCP, il server dovrebbe rispondere abbastanza rapidamente da far raggiungere a un buon FCP il 75° percentile degli utenti.
- Gli stessi problemi spesso si propagano nell’LCP, la metrica che è davvero un segnale di ranking, perché FCP e LCP condividono spesso le cause profonde. È una sovrapposizione da verificare, non una garanzia: LCP ha fattori propri (dimensioni, priorità e percorso di caricamento del suo elemento più grande), quindi risolvere le cause dell’FCP non promette di risolvere l’LCP. È il posto giusto da cui iniziare, non l’ultimo passaggio.
Questo è il valore dell’FCP per chi si occupa di SEO: una lettura precoce ed economica della salute del percorso di caricamento, prima che la misurazione più selettiva dell’LCP sia terminata.
Riepilogo AI
Una sintesi della versione Advanced:
- FCP = tempo dall’inizio della navigazione al primo rendering di un contenuto qualsiasi:
testo, immagini (incluse quelle di sfondo),
<svg>o<canvas>non bianco. È il segnale «c’è qualcosa sullo schermo?». - L’FCP NON è un Core Web Vital. I segnali di ranking sono LCP, INP e CLS. L’FCP è una metrica diagnostica supplementare, di laboratorio e sul campo: non è un fattore di ranking diretto.
- È un elemento costitutivo di LCP (FCP si verifica allo stesso tempo o prima di LCP), quindi spesso individua le stesse risorse che bloccano il rendering e lo slow TTFB che danneggiano LCP — che invece influisce sul ranking — ma risolvere le cause dell’FCP non garantisce di aver corretto l’LCP: LCP ha fattori propri.
- Soglie sul campo (p75 di CrUX): buono ≤1,8 s · da migliorare ≤3,0 s · scarso >3,0 s.
- Laboratorio ≠ campo, e «il campo è sempre più alto» è una tendenza, non una regola. La soglia «verde» di circa 0,9 s del desktop Lighthouse è più severa della soglia sul campo di 1,8 s perché è una singola esecuzione pulita in condizioni fisse; i dati sul campo/CrUX aggregano dispositivi, reti, stati della cache e tipi di navigazione reali (compresi ripristini dalla cache indietro/avanti e pagine prerenderizzate). Confronta popolazioni omogenee prima di leggere la differenza come un problema: usa il campo per il valore reale e il laboratorio per la diagnosi.
- FCP e FP: First Paint scatta con qualsiasi pittura (anche un colore di sfondo); FCP richiede contenuto idoneo (testo, immagini comprese quelle di sfondo, SVG, canvas non bianco). FP ≤ FCP sempre.
- FCP e LCP: FCP = qualunque contenuto idoneo; LCP = il candidato idoneo più grande. Nessuna delle due metriche dimostra che il vero contenuto principale della pagina sia completo o utile: sono proxy. FCP veloce + LCP lento è una differenza reale e comune.
- Peso di Lighthouse 10 (attuale al momento della stesura): 10% — TBT 30%, LCP 25%, CLS 25%, FCP 10%, Speed Index 10%; i pesi cambiano tra le versioni di Lighthouse.
- Correzioni principali, in ordine: elimina CSS/JS che bloccano il rendering → riduci il TTFB
→ correggi i font (
font-display: swap/optional) → preconnect/preload → minifica, cache e igiene del DOM.
Documentazione ufficiale
Documentazione primaria di Google sull’FCP.
web.dev (Google)
- First Contentful Paint (FCP) — definizione canonica di Philip Walton, elenco di ciò che conta come contenuto, soglia di 1,8 s, Key Point su TTFB/reindirizzamenti e modalità di misurazione dell’FCP con Paint Timing API e libreria web-vitals.
- Web Vitals — la posizione dell’FCP: un «Other Web Vital», supplementare rispetto ai Core Web Vitals (LCP, INP, CLS), utile per diagnosticare l’LCP.
- Largest Contentful Paint (LCP) — la distinzione tra FCP e LCP e il loro rapporto.
- Time to First Byte (TTFB) — perché il TTFB precede ed è incluso nell’FCP.
- Metriche delle prestazioni centrate sull’utente — la classificazione dell’FCP come metrica sia di laboratorio sia sul campo.
Lighthouse / Chrome Developers
- Audit First Contentful Paint — fasce di valutazione desktop di Lighthouse (verde ≤0,9 s) e calcolo del punteggio FCP rispetto ai dati dell’HTTP Archive.
- Punteggio delle prestazioni di Lighthouse — i pesi delle metriche, incluso l’FCP al 10% del punteggio Performance in Lighthouse 10.
Google Search Central
- Core Web Vitals e Google Search — la pagina sui segnali di ranking; elenca LCP, INP e CLS. L’FCP non c’è, ed è proprio questo il punto.
Citazioni dalla fonte
Dichiarazioni ufficiali tratte dalla documentazione di Google. Ogni link è un deep link che porta direttamente al passaggio citato nella pagina sorgente.
web.dev — la definizione
- “First Contentful Paint (FCP) measures the time from when the user first navigated to the page to when any part of the page’s content is rendered on the screen.” — Philip Walton, First Contentful Paint (FCP), web.dev (aggiornato il 6 dicembre 2023). — «First Contentful Paint (FCP) misura il tempo dal momento in cui l’utente ha iniziato a navigare verso la pagina a quello in cui una parte qualsiasi del contenuto della pagina viene visualizzata sullo schermo». Vai alla citazione
web.dev — la soglia
- “sites should strive to have a First Contentful Paint of 1.8 seconds or less.” — stessa fonte. — «i siti dovrebbero puntare a un First Contentful Paint pari o inferiore a 1,8 secondi». Vai alla citazione
web.dev — che cosa include l’FCP (il Key Point)
- “FCP includes any unload time from the previous page, connection set up time, redirect time, and Time To First Byte (TTFB) which can be significant when measured in the field.” — stessa fonte. — «L’FCP include il tempo di scaricamento della pagina precedente, il tempo di configurazione della connessione, il tempo dei reindirizzamenti e il Time To First Byte (TTFB), che può essere significativo quando viene misurato sul campo».
web.dev — il ruolo dell’FCP rispetto ai Core Web Vitals
- “the metrics Time to First Byte (TTFB) and First Contentful Paint (FCP) are both vital aspects of the loading experience, and are both useful in diagnosing issues with LCP (slow server response times or render-blocking resources, respectively).” — Web Vitals, web.dev. — «le metriche Time to First Byte (TTFB) e First Contentful Paint (FCP) sono entrambe aspetti fondamentali dell’esperienza di caricamento ed entrambe sono utili per diagnosticare problemi con LCP (rispettivamente, tempi di risposta del server lenti o risorse che bloccano il rendering)». Vai alla citazione
Lighthouse — come viene calcolato il punteggio FCP
- “Your FCP score is a comparison of your page’s FCP time and FCP times for real websites, based on data from the HTTP Archive.” — Audit First Contentful Paint, developer.chrome.com. — «Il tuo punteggio FCP è un confronto tra il tempo FCP della tua pagina e i tempi FCP di siti reali, basato sui dati dell’HTTP Archive».
Lighthouse — come funziona il punteggio Performance
- “The Performance score is a weighted average of the metric scores.”
- “The weightings have changed over time because the Lighthouse team is regularly doing research and gathering feedback to understand what has the biggest impact on user-perceived performance.” — Punteggio delle prestazioni di Lighthouse, developer.chrome.com. — «Il punteggio Performance è una media ponderata dei punteggi delle metriche». — «I pesi sono cambiati nel tempo perché il team Lighthouse svolge regolarmente ricerche e raccoglie feedback per capire che cosa incida maggiormente sulle prestazioni percepite dagli utenti».
#:~:text=; verifica tali passaggi nelle pagine live prima di considerare definitiva qualsiasi citazione. I pesi di Lighthouse sono citati per Lighthouse 10: verificali nuovamente se è stata rilasciata una versione più recente di Lighthouse. Checklist per il triage di un FCP lento
Quando l’FCP è alto, percorri questo elenco in ordine: è grosso modo ordinato dai guadagni maggiori ai minori:
- Controlla il numero sul campo, non solo Lighthouse. Leggi il p75 FCP di CrUX/PageSpeed Insights per il valore reale; usa Lighthouse solo per diagnosticare.
- Cerca le risorse che bloccano il rendering. CSS e JS sincrono nel
<head>sono la causa numero 1: l’audit di Lighthouse «Elimina le risorse che bloccano il rendering» le elenca. - Inserisci inline il CSS critico above the fold e carica il resto in modo asincrono.
- Aggiungi
async/deferagli script non critici; sposta i tag di terze parti dopo il primo rendering. - Misura il TTFB. È dentro l’FCP: un server lento gonfia l’FCP prima di tutto il resto. Aggiungi cache/CDN/origine più veloce.
- Elimina le catene di reindirizzamenti: ogni passaggio è un round trip completo prima del primo byte.
- Correggi i font: usa
font-display: swapooptional; maiblockper il testo critico. Precarica il file del font critico. - Preconnetti alle origini di terze parti necessarie; precarica l’immagine LCP/le richieste chiave.
- Riduci il payload: minifica il CSS, rimuovi CSS/JS inutilizzati, usa una policy di cache efficiente, riduci il DOM e la profondità delle richieste critiche.
- Ricontrolla LCP dopo, perché le stesse correzioni dovrebbero averlo spostato ed è LCP a influire sul ranking.
Scheda rapida FCP
Soglie sul campo (CrUX, 75° percentile)
| Tempo FCP | Valutazione |
|---|---|
| ≤ 1,8 s | Buono |
| 1,8–3,0 s | Da migliorare |
| > 3,0 s | Scarso |
Valutazione desktop di Lighthouse (laboratorio: nota, più severa dei dati sul campo)
| Tempo FCP | Colore |
|---|---|
| 0–0,9 s | Verde (veloce) |
| 0,9–1,6 s | Arancione (moderato) |
| Oltre 1,6 s | Rosso (lento) |
Pesi del punteggio Performance di Lighthouse 10 (attuali al momento della stesura; i pesi cambiano tra le versioni di Lighthouse)
| Metrica | Peso |
|---|---|
| Total Blocking Time | 30% |
| Largest Contentful Paint | 25% |
| Cumulative Layout Shift | 25% |
| First Contentful Paint | 10% |
| Speed Index | 10% |
Le tre metriche di caricamento, senza confusione
| Metrica | Scatta quando… | Core Web Vital? |
|---|---|---|
| First Paint (FP) | il browser dipinge qualsiasi cosa, anche un colore di sfondo | No |
| First Contentful Paint (FCP) | viene dipinto un contenuto reale (testo/immagine/SVG/canvas) | No (diagnostica) |
| Largest Contentful Paint (LCP) | viene visualizzato l’elemento più grande nel viewport | Sì |
Sequenza degli eventi: FP ≤ FCP ≤ LCP.
Che cosa conta come «contenuto» per l’FCP
testo · immagini (comprese quelle di sfondo) · elementi <svg> · elementi <canvas> non bianchi
Fatti rapidi
- Il cronometro dell’FCP parte dalla navigazione: include tempo di reindirizzamento, configurazione della connessione e TTFB.
- L’FCP è misurabile sia in laboratorio sia sul campo.
font-display: usaswap/optional; evitablock(testo invisibile fino a circa 3 s).- Preconnettersi alle origini di terze parti può far risparmiare 100–500 ms.
Strumenti per misurare l’FCP
Dati sul campo (utenti reali)
- PageSpeed Insights: mostra il FCP p75 CrUX del tuo URL (sul campo) insieme a un’esecuzione Lighthouse (in laboratorio).
- Chrome User Experience Report (CrUX): il dataset di utenti reali alla base dei numeri sul campo, disponibile via API o BigQuery.
- Libreria JavaScript web-vitals: inserisci
onFCP(console.log)(o invialo ai tuoi analytics) per acquisire l’FCP dei tuoi visitatori; gestisce i casi limite di bfcache e schede in background.
Dati di laboratorio (simulati)
- Lighthouse: in Chrome DevTools, PageSpeed Insights o CLI. Usalo per diagnosticare l’FCP (l’audit «Elimina le risorse che bloccano il rendering» è quello fondamentale).
- Pannello Performance di Chrome DevTools: mostra esattamente quando scattano first paint e first contentful paint durante un caricamento registrato.
Misuralo da solo con la Paint Timing API
new PerformanceObserver((entryList) => {
for (const entry of entryList.getEntriesByName('first-contentful-paint')) {
console.log('FCP candidate:', entry.startTime, entry);
}
}).observe({type: 'paint', buffered: true});Oppure usa la libreria web-vitals (consigliata)
import {onFCP} from 'web-vitals';
onFCP(console.log);Alcune limitazioni che l’API grezza non gestisce ma la libreria web-vitals sì: ignora
l’FCP rilevato nelle schede in background, continua a riportare l’FCP quando una pagina viene
ripristinata dalla cache indietro/avanti (un evento di navigazione nuovo non scatta automaticamente
per un ripristino dalla bfcache, quindi serve una gestione esplicita) e usa activationStart invece
dell’inizio della navigazione come origine del cronometro per le pagine prerenderizzate. La
temporizzazione del paint degli iframe cross-origin resta una lacuna nota: una pagina il cui
contenuto principale viene visualizzato dentro uno di essi può mostrare un FCP ingannevolmente veloce.
Errori sull’FCP che nascondono il vero collo di bottiglia
- Trattare l’FCP come un Core Web Vital. L’FCP è utile per la diagnosi, ma LCP, INP e CLS sono i Core Web Vitals usati nei sistemi di ranking di Google. Usa l’FCP per indagare la fase dello schermo vuoto, non come sostituto dei dati CWV sul campo.
- Ottimizzare un piccolo logo perché diventa il primo elemento dipinto. Un rendering precoce ma privo di significato può migliorare l’FCP mentre il contenuto utile della pagina arriva tardi. Controlla LCP e il filmstrip insieme all’FCP, così la modifica migliora ciò che il visitatore vede davvero.
- Iniziare dalla compressione delle immagini quando la pagina è vuota. Se non si può dipingere nulla, i blocchi più comuni sono tempo di risposta del server, CSS che bloccano il rendering, JavaScript sincrono o font. Segui il waterfall delle richieste prima di modificare asset non correlati.
- Confrontare esecuzioni Lighthouse non correlate. Emulazione del dispositivo, condizioni di rete, stato della cache e variabilità tra esecuzioni spostano tutti l’FCP di laboratorio. Confronta esecuzioni ripetute con le stesse impostazioni e conferma il risultato con i dati sul campo quando disponibili.
Il budget dello schermo vuoto
Scomponi l’FCP in tre domande consecutive invece di trattare il numero finale come un unico problema:
- Quanto tempo passa prima che arrivi l’HTML? Controlla il TTFB. Una risposta lenta significa che il browser non può iniziare un lavoro utile, quindi parti da server, cache, reindirizzamenti o configurazione della connessione.
- Quanto tempo passa prima che il browser possa eseguire il rendering? Controlla fogli di stile che bloccano il rendering, script sincroni e comportamento dei font. L’HTML può essere presente mentre il thread principale o il percorso di rendering sono ancora bloccati.
- Che cosa diventa davvero il primo contenuto? Usa un filmstrip o un trace per verificare che il primo rendering sia testo o immagini significativi, non un elemento insignificante che fa apparire migliore la metrica senza migliorare l’esperienza.
Questo schema mantiene le correzioni in ordine: prima la distribuzione, poi il rendering, infine l’utilità. Ripeti lo stesso profilo di laboratorio dopo ogni modifica per sapere quale fase è cambiata.
Mettiti alla prova: First Contentful Paint
Cinque domande rapide su che cosa misura l’FCP e su come diagnosticarlo. Scegli una risposta per ciascuna, poi controlla.
Risorse che meritano il tuo tempo
Google / web.dev
- First Contentful Paint (FCP) — il riferimento canonico: definizione, soglie, codice di misurazione ed elenco completo delle ottimizzazioni.
- Web Vitals — come l’FCP si rapporta ai Core Web Vitals e perché è una metrica diagnostica.
- Largest Contentful Paint (LCP) — la metrica che l’FCP aiuta a diagnosticare e che è un Core Web Vital.
- Time to First Byte (TTFB) — la metrica della risposta del server che vive dentro l’FCP.
Lighthouse
- Audit First Contentful Paint — fasce di valutazione desktop e modalità di calcolo del punteggio.
- Punteggio delle prestazioni di Lighthouse — i pesi delle metriche, con FCP al 10%.
I miei articoli correlati
- The Beginner’s Guide to Technical SEO — il posto della velocità delle pagine nel quadro più ampio.
- Core Web Vitals: What They Are & How to Improve Them — le metriche che fungono da segnali di ranking e a cui l’FCP contribuisce.
Dal settore
- First Contentful Paint (FCP) — l’articolo canonico di Google di Philip Walton: definizione, soglie, codice della Paint Timing API ed elenco completo delle ottimizzazioni.
- Web Vitals — il modello di Google che spiega dove si colloca l’FCP (un «Other Web Vital», supplementare rispetto ai Core Web Vitals) e il suo ruolo nella diagnosi dell’LCP.
- Audit First Contentful Paint — la documentazione di Chrome Developers sulle fasce desktop di Lighthouse e sul calcolo del punteggio FCP rispetto ai dati dell’HTTP Archive.
- Time to First Byte (TTFB) — la guida di Google sul motivo per cui il TTFB precede ed è incluso nell’FCP e su come un server lento consumi il budget FCP prima che il browser dipinga un solo pixel.
- Eliminate render-blocking resources — la guida di Chrome Developers sul principale problema dell’FCP: CSS e JS sincrono nel tag
<head>che impediscono al browser di dipingere. - Ensure text remains visible during webfont load — l’audit di Chrome Developers sui valori di font-display e sul motivo per cui
blockritarda l’FCP mentreswapooptionalmantengono visibile il testo. - First Contentful Paint — la guida pratica di NitroPack all’FCP, con consigli di ottimizzazione specifici per i CMS e una spiegazione chiara della differenza tra dati sul campo e di laboratorio.
Statistiche degne di citazione
- FCP buono = ≤1,8 s al 75° percentile degli utenti reali; da migliorare fino a 3,0 s; oltre è scarso (soglie sul campo/CrUX). Fonte
- Lighthouse desktop è più severo: circa 0–0,9 s è «verde», perché il laboratorio esegue in un ambiente simulato e limitato invece che in condizioni reali. Fonte
- L’FCP vale il 10% del punteggio Performance di Lighthouse 10 (attuale al momento della stesura; i pesi cambiano tra le versioni di Lighthouse), insieme a TBT 30%, LCP 25%, CLS 25% e Speed Index 10%. Fonte
- Preconnettersi a origini di terze parti può far risparmiare 100–500 ms di caricamento instaurando connessioni in anticipo. Fonte
Cronologia modifiche
Aggiornato il 17 lug 2026.
Riepilogo editoriale e dettagli registrati delle modifiche.Dettagli delle modifiche
-
Le note dettagliate sulle modifiche sono attualmente disponibili in inglese.
Confronto completo non disponibile — non è stata archiviata alcuna istantanea precedente per questa revisione.