# Lighthouse e CrUX: chi ha ragione quando i numeri non tornano

Cinque run di laboratorio sulla stessa pagina danno LCP da 708 a 908 ms, con un TTFB a freddo di 11.416 ms. CrUX pubblica il 75° percentile di 28 giorni.

> Pagina: https://ui.eneawork.it/blog/performance-lighthouse-vs-crux
> Markdown: https://ui.eneawork.it/blog/performance-lighthouse-vs-crux.md

*2026-11-01*

Lighthouse e CrUX non sono due misure della stessa cosa: Lighthouse è una singola esecuzione in laboratorio, CrUX è il 75° percentile di 28 giorni di utenti reali. Quando i numeri non tornano ha ragione CrUX sul verdetto e Lighthouse sulla diagnosi. Cinque run sulla nostra home hanno dato LCP tra 708 e 908 ms, e una partenza a freddo ha misurato 11.416 ms di TTFB.

Cinque esecuzioni con Puppeteer, cioè lo stesso driver che usa Lighthouse, su https://ui.eneawork.it/ da Windows, cache disattivata, LCP letto con PerformanceObserver, il 1 novembre 2026: LCP da 708 a 908 ms, mediana 748 ms; TTFB da 319 a 529 ms; evento load da 443 a 675 ms; 24 richieste e 340 KB trasferiti. Nella prima serie della giornata la run a freddo ha misurato 11.416 ms di TTFB e 11.618 ms di load. Il catalogo EneUI misura 111.985 componenti, 1.556 blocchi e 12.808 icone da 1.472 librerie, letti da /api/stats il 1 novembre 2026. Soglie: web.dev, CC BY 4.0.

## Due misure, due domande

Nella nostra serie il campo di variazione del TTFB è 319-529 ms, cioè 210 ms tra una run e l'altra sulla stessa pagina, dalla stessa rete. La run a freddo arriva a 11.416 ms. Chi guarda una sola esecuzione vede uno di questi tre mondi e lo chiama "la performance del sito".

## Il comando

npx lighthouse https://example.com/ --only-categories=performance --preset=desktop \ --output=json --output-path=./lh.json --chrome-flags="--headless=new" node -e "const r=require('./lh.json');console.log(Math.round(r.audits['largest-contentful-paint'].numericValue))"

Il comando richiede Node, Chrome e una connessione; la prima esecuzione scarica Lighthouse. numericValue è l'LCP in millisecondi di quella singola run. Ripetilo cinque volte: se i valori ballano, il numero da citare è la mediana con il suo intervallo, non la run migliore.

## Perché il laboratorio e il campo divergono

Un laboratorio misura una macchina veloce con una rete buona, oppure emula una macchina lenta con una rete lenta: in entrambi i casi misura un modello. Il campo misura telefoni veri, con cache diverse, estensioni, 4G affollato e batterie quasi scariche. La divergenza non è un errore di uno dei due strumenti: è la differenza tra una prova controllata e un campione.

## Il limite da dichiarare

Non abbiamo interrogato l'API CrUX, che richiede una chiave e un'origine con traffico sufficiente: i dati di campo di questo sito non sono pubblicati qui. Le cinque run vengono da una sola rete e da un solo dispositivo. Quindi il confronto onesto è tra una distribuzione di laboratorio e le soglie di campo, non tra due numeri di campo.

## Dove continuare

Il catalogo EneUI indicizza 111.985 componenti, i blocchi chart e il record hero parallax, un hero che sposta l'LCP più di qualunque tweak. Per il confronto tra laboratorio e campo leggi misurare l'LCP, per mettere le soglie in CI Lighthouse CI con soglie, per la reattività INP: cosa misura, e per il confronto tra architetture framework frontend a confronto.

## FAQ

### Se Lighthouse dà 98 e CrUX dice "da migliorare", chi sbaglia?

Nessuno dei due. Lighthouse ha misurato una run su una macchina veloce, CrUX il 75° percentile dei tuoi utenti. Il campo decide se la pagina passa, il laboratorio spiega quale parte del codice pesa.

### Perché due run di Lighthouse danno punteggi diversi?

Perché ogni run è un campione: rete, cache, altri processi e avvio del browser cambiano. Nella nostra serie l'LCP è passato da 708 a 908 ms e il TTFB da 319 a 529 ms sulla stessa pagina.

### CrUX misura tutte le pagine del sito?

No. Pubblica dati per origine e, sopra una soglia di traffico, per URL. Le pagine poco visitate non hanno dati propri: entrano nell'aggregato dell'origine.

### Posso usare CrUX al posto di un RUM mio?

CrUX è un dato pubblico e aggregato, utile come riferimento esterno. Non ti dà il dettaglio per pagina, dispositivo o versione del codice: per quello serve un RUM tuo.

### Quale soglia uso in CI?

Le soglie di laboratorio sono più severe di quelle di campo: un budget su LCP intorno a 2.500 ms in laboratorio lascia margine al campo. Fissa il budget sulla mediana di più run, non sulla migliore.
