Saltar al contenido
Construcción, optimización y experimentos web[email protected]
La Trastienda WebLo que pasa detrás de una web
Experimentos

Por qué PageSpeed Insights da una puntuación distinta cada vez

La puntuación de rendimiento de Lighthouse cambia aunque la página no cambie. Qué la mueve, cómo se calcula y cómo leerla sin engañarte: varias ejecuciones y la mediana.

Por Redacción de La Trastienda WebPublicado el 7 min de lectura
Cinco indicadores circulares de puntuación con valores distintos sobre una mesa, junto a una regla y una lupa

Pasas PageSpeed Insights a la misma URL tres veces seguidas y obtienes 82, 76 y 85. No has tocado nada. La documentación de Lighthouse lo reconoce sin rodeos: la puntuación de rendimiento tiende a cambiar por la variabilidad propia de la web y de las redes, aunque la página no haya cambiado. Entender de dónde sale ese ruido evita dos errores opuestos: celebrar una subida que es casualidad y perder una tarde persiguiendo una bajada que tampoco existe.

Dos informes en una misma pantalla

Antes de hablar de variación conviene separar lo que muestra PSI. Según su documentación, la parte superior presenta datos de campo: experiencias reales de usuarios de Chrome (CrUX) durante los 28 días anteriores, con el percentil 75 de LCP, INP y CLS y la evaluación de Core Web Vitals. Debajo aparece el informe de laboratorio: una carga simulada con Lighthouse en un único dispositivo y unas condiciones de red fijas, de donde sale la puntuación de 0 a 100.

La puntuación que baila es la de laboratorio. Los datos de campo se actualizan a diario pero cubren una ventana de 28 días, así que no cambian por pulsar el botón otra vez. Si tu página no tiene suficiente tráfico, PSI muestra los datos del origen completo o ninguno. En Cómo montar un experimento web se explica cuándo usar cada parte.

Las dos secciones de PageSpeed Insights
SecciónFuenteQué muestra¿Varía al repetir?
Datos de campoCrUX, usuarios reales, 28 díasp75 de LCP, INP, CLS (y FCP, TTFB); aprobado o no en Core Web VitalsNo entre ejecuciones; sí día a día, poco a poco
Diagnóstico de laboratorioLighthouse, una carga simuladaPuntuación 0–100, FCP, LCP, TBT, CLS, Speed Index y auditoríasSí, en cada ejecución

Cómo se calcula la puntuación

Lighthouse convierte el valor bruto de cada métrica en una subpuntuación de 0 a 1 mediante una curva logarítmico-normal construida con datos reales de sitios web, y después hace una media ponderada. En Lighthouse 10 y posteriores (la versión que usa PSI hoy) los pesos son estos:

Pesos de las métricas en la puntuación de rendimiento (Lighthouse 10+)
MétricaQué midePeso
FCP (First Contentful Paint)Primer contenido pintado10 %
SI (Speed Index)Rapidez con que se rellena visualmente la pantalla10 %
LCP (Largest Contentful Paint)Elemento de contenido más grande pintado25 %
TBT (Total Blocking Time)Suma del tiempo en que el hilo principal está bloqueado por tareas largas entre FCP y el momento en que la página es interactiva30 %
CLS (Cumulative Layout Shift)Desplazamientos inesperados del diseño25 %

Dos consecuencias prácticas. Primera: TBT, LCP y CLS suman el 80 %, así que son las que más mueven el número. Segunda: TBT es la métrica más sensible al ruido, porque depende de cuánto JavaScript se ejecute y de lo cargada que esté la CPU en ese momento. Una página con mucho JavaScript de terceros tendrá puntuaciones más inestables que una estática. Ojo: INP no forma parte de la puntuación; es una métrica de campo y en laboratorio no hay usuario que interactúe.

Los colores son fijos: de 0 a 49 se considera deficiente, de 50 a 89 necesita mejorar y de 90 a 100 es buena. Una página cerca de un límite, por ejemplo en 88–91, cambiará de color con frecuencia sin que haya pasado nada.

Barra horizontal dividida según el peso de cada métrica en Lighthouse: TBT 30 %, LCP 25 %, CLS 25 %, FCP 10 % y Speed Index 10 %
TBT, LCP y CLS concentran el 80 % del peso; TBT, la más inestable, es además la que más pesa.

De dónde sale la variación

El documento de variabilidad de Lighthouse enumera las fuentes y estima su impacto. Algunas las controlas tú y otras no:

  • Red local y de Internet. La latencia y el ancho de banda reales cambian de una carga a otra. La limitación simulada (en móvil, 150 ms de RTT y 1,6 Mbps de bajada) suaviza parte del efecto, pero no todo.
  • CPU del equipo que ejecuta la prueba. Si lanzas Lighthouse desde tu portátil mientras compilas o tienes veinte pestañas abiertas, TBT empeora. Con PSI la prueba corre en servidores de Google, que también tienen carga variable.
  • Extensiones y antivirus. En Lighthouse dentro de Chrome, las extensiones inyectan código en la página. La documentación recomienda aislar el entorno de extensiones y antivirus y, si se puede, usar un equipo dedicado a las pruebas.
  • Servidor web. Un tiempo de respuesta que oscila, por ejemplo, entre 200 y 900 ms según la carga o el estado de la caché arrastra FCP, LCP y Speed Index.
  • No determinismo de la página. Pruebas A/B que sirven variantes distintas, contenido personalizado, carruseles con imágenes aleatorias.
  • Anuncios y scripts de terceros. Cada carga puede recibir una creatividad distinta, más o menos pesada, con más o menos JavaScript, y en un tamaño que desplace o no el contenido. Es habitual que una página con anuncios muestre más dispersión que la misma página sin ellos.

Ejemplo: cinco ejecuciones, media frente a mediana

Ejemplo de cálculo (cifras inventadas)

Supongamos cinco ejecuciones de PSI en móvil sobre la misma página con anuncios. Las puntuaciones son: 78, 74, 81, 62, 79.

Media: (78 + 74 + 81 + 62 + 79) / 5 = 374 / 5 = 74,8.

Mediana: ordenadas quedan 62 – 74 – 78 – 79 – 81. El valor central es 78.

La ejecución de 62 coincidió, supongamos, con un anuncio que cargó mucho JavaScript. Ese único valor baja la media algo más de tres puntos (sin él sería 78); la mediana ni lo nota. Si mañana repites y sale un 85 en lugar del 62, la media salta a 79,4 mientras la mediana pasa a 79: un punto.

Por qué una sola ejecución mueve tanto. Imagina que en una ejecución las subpuntuaciones son FCP 0,92; SI 0,85; LCP 0,70; TBT 0,80; CLS 1,00. La puntuación es 0,92×0,10 + 0,85×0,10 + 0,70×0,25 + 0,80×0,30 + 1,00×0,25 = 0,092 + 0,085 + 0,175 + 0,240 + 0,250 = 0,842, es decir, 84. Si en la siguiente un script de terceros hace caer la subpuntuación de TBT a 0,40, la puntuación baja a 0,722: 72. Doce puntos por una sola métrica que dependía de un anuncio.

Cinco puntos con las puntuaciones 62, 74, 78, 79 y 81 sobre un eje, con la media en 74,8 y la mediana en 78 marcadas
Con un valor atípico (62), la media cae a 74,8; la mediana se queda en 78, junto al grupo principal.

Qué recomienda la documentación de Lighthouse

El documento de variabilidad aconseja no fijar umbrales sobre pruebas sueltas y usar valores agregados: la mediana, el percentil 90 o incluso el mínimo y el máximo. Según ese texto, la mediana de cinco ejecuciones es el doble de estable que una ejecución. Para automatizarlo propone Lighthouse CI, que puede lanzar varias ejecuciones y quedarse con la representativa, por ejemplo con npx -p @lhci/cli lhci collect --url https://example.com -n 5.

Un matiz: Lighthouse CI no elige la mediana de la puntuación, sino la ejecución más cercana a la mediana de ciertas métricas (la función computeMedianRun del propio Lighthouse). Para una comprobación manual, la mediana de la puntuación y de cada métrica por separado es suficiente.

La misma documentación sugiere reducir el ruido en origen: ejecutar desde la misma red, aislar el navegador de extensiones y antivirus, usar servidores dedicados en integración continua (los entornos de CI gratuitos y las instancias «ampliables» o burstable suelen ser volátiles) y preferir varias máquinas pequeñas a una grande cuando se lanzan pruebas en paralelo.

Ruta de decisión ante un cambio de puntuación

  1. ¿Es una sola ejecución? Repite hasta tener al menos cinco y calcula la mediana. Si la diferencia con la mediana anterior es de pocos puntos, trátala como ruido.
  2. ¿La mediana cambió de verdad? Mira qué métrica la movió. Si es TBT, revisa scripts de terceros y anuncios; si es LCP, la imagen o el texto principal y el tiempo de servidor; si es CLS, espacio reservado para anuncios, imágenes y fuentes (ver Imágenes ligeras y sin saltos de diseño).
  3. ¿Cambió algo en la página? Despliegues, plugins, campañas publicitarias nuevas. Si nada cambió y la mediana bajó, comprueba el servidor a distintas horas.
  4. ¿Qué dicen los datos de campo? Son los que reflejan a tus usuarios y los que usa Search Console. Una puntuación de laboratorio de 70 con Core Web Vitals aprobados en campo no es una emergencia; una de 95 con LCP de campo en rojo sí merece atención.

Cuándo no merece la pena perseguir el número

La puntuación de Lighthouse resume una carga simulada, no la experiencia de tus visitantes. Si tu sitio ya aprueba Core Web Vitals en campo y la mediana de laboratorio oscila entre 85 y 92, es mejor dedicar el tiempo a contenido o a un experimento con hipótesis clara que a rascar tres puntos. Y si necesitas un control automático que no se dispare por ruido, fija límites sobre la mediana y sobre métricas o tamaños concretos, no sobre una ejecución: es lo que se trata en Presupuesto de rendimiento: cómo calcularlo con números.

  • Mínimo cinco ejecuciones por versión, misma URL, mismo tipo de dispositivo.
  • Comparar medianas, no ejecuciones sueltas ni medias con valores atípicos.
  • Anotar la versión de Lighthouse que figura al pie del informe.
  • Navegador sin extensiones o PSI; nada pesado ejecutándose en paralelo.
  • Mirar qué métrica se movió antes de mirar la puntuación.
  • Contrastar siempre con la sección de datos de campo.

Cómo se ha elaborado este artículo

El artículo se apoya en la documentación oficial de Lighthouse sobre puntuación de rendimiento y sobre variabilidad, y en la página «About PageSpeed Insights». Los pesos corresponden a Lighthouse 10 y versiones posteriores. Las cinco ejecuciones y las subpuntuaciones del ejemplo son inventadas para ilustrar el cálculo; no son mediciones propias.

Fuentes consultadas

  1. Chrome for Developers: Lighthouse performance scoring
  2. GoogleChrome (GitHub): Lighthouse Variability
  3. Google for Developers: About PageSpeed Insights
  4. GoogleChrome (GitHub): Lighthouse throttling

¿Has visto un dato erróneo o desactualizado? Escribe a [email protected] indicando la URL. Las correcciones se aplican según la política editorial.