Command Palette

Search for a command to run...

Core Web Vitals: Métricas Esenciales de Rendimiento Web

Comprende las métricas Core Web Vitals (LCP, FID, CLS) y cómo optimizarlas para mejorar la experiencia de usuario y el SEO de tu sitio web.

Lectura: 20 min
Nivel: Intermedio

TL;DR - Resumen rápido

  • LCP mide cuánto tarda el contenido más grande en aparecer en la pantalla
  • FID mide el tiempo desde que el usuario interactúa hasta que el navegador responde
  • CLS mide cuánto se desplaza el contenido inesperadamente durante la carga
  • Los Core Web Vitals son factores de ranking en el algoritmo de búsqueda de Google
  • Optimizar estas métricas mejora la experiencia de usuario y el SEO

Introducción a los Core Web Vitals

Los Core Web Vitals son un conjunto de métricas estandarizadas por Google que miden la experiencia de usuario en la web. Estas métricas son esenciales porque Google las usa como factores de ranking en su algoritmo de búsqueda, lo que significa que optimizarlas puede mejorar significativamente el SEO de tu sitio.

Los Core Web Vitals se enfocan en tres aspectos fundamentales de la experiencia de usuario: carga (loading), interactividad (interactivity) y estabilidad visual (visual stability). Cada aspecto tiene una métrica principal: LCP (Largest Contentful Paint) para carga, FID (First Input Delay) para interactividad, y CLS (Cumulative Layout Shift) para estabilidad visual.

Importancia para SEO

Google anunció oficialmente en 2021 que los Core Web Vitals son factores de ranking en Page Experience. Sitios web con mejores métricas de Core Web Vitals tienen una ventaja en los resultados de búsqueda. Optimizar estas métricas no solo mejora la experiencia de usuario, sino también el SEO.

¿Qué son los Core Web Vitals?

Los Core Web Vitals son métricas que Google considera esenciales para evaluar la calidad de la experiencia de usuario en la web. Estas métricas evolucionan con el tiempo para reflejar mejor las necesidades de los usuarios, pero actualmente consisten en tres métricas principales: LCP, FID y CLS.

Cada métrica tiene umbrales específicos que clasifican el rendimiento como "bueno" (verde), "necesita mejora" (amarillo) o "pobre" (rojo). Estos umbrales están basados en investigaciones extensivas sobre la experiencia de usuario y se actualizan periódicamente.

LCP (Largest Contentful Paint) mide el tiempo de carga del contenido más grande, con un umbral de menos de 2.5 segundos para un rendimiento bueno. FID (First Input Delay) mide el retraso en la primera interacción, con un umbral de menos de 100ms. CLS (Cumulative Layout Shift) mide el desplazamiento acumulado del contenido, con un umbral de menos de 0.1. Las métricas se miden en el navegador del usuario real (field data) y Google las usa como factores de ranking en Page Experience.

LCP: Largest Contentful Paint

LCP (Largest Contentful Paint) mide cuánto tiempo tarda el elemento de contenido más grande en aparecer en la pantalla. El "contenido" se refiere a elementos como imágenes, videos, bloques de texto con imágenes de fondo, o elementos SVG. LCP es una métrica crítica porque indica cuándo el usuario percibe que la página ha cargado su contenido principal.

Los umbrales para LCP son: bueno (< 2.5s), necesita mejora (2.5s - 4s), y pobre (> 4s). Un LCP bueno significa que el usuario ve el contenido principal de la página rápidamente, lo que reduce la tasa de rebote y mejora la percepción de velocidad.

lcp-concept.js
Loading code...

Este ejemplo muestra cómo identificar el elemento que contribuye al LCP. El elemento más grande que aparece en la pantalla durante la carga de la página es el que determina el LCP. Optimizar este elemento (por ejemplo, precargando una imagen crítica) puede mejorar significativamente el LCP.

LCP Puede Cambiar Durante la Carga

El LCP puede cambiar a medida que se cargan más elementos. El elemento que determina el LCP final es el más grande que aparece en cualquier momento durante la carga. Por esto, es importante optimizar no solo el primer elemento grande, sino todos los elementos de contenido importantes.

FID: First Input Delay

FID (First Input Delay) mide el tiempo desde que el usuario interactúa por primera vez con la página (haciendo clic, tocando, o presionando una tecla) hasta que el navegador puede responder a esa interacción. FID es una métrica de interactividad que indica qué tan rápido la página se vuelve interactiva.

Los umbrales para FID son: bueno (< 100ms), necesita mejora (100ms - 300ms), y pobre (> 300ms). Un FID bueno significa que la página responde rápidamente a las interacciones del usuario, lo que crea una sensación de fluidez y capacidad de respuesta.

fid-concept.js
Loading code...

Este ejemplo muestra cómo ocurre un FID. Cuando el usuario hace clic en un botón, el evento se registra pero el navegador no puede procesar el handler inmediatamente porque el hilo principal está ocupado ejecutando JavaScript. El retraso entre el evento y la ejecución del handler es el FID.

FID Solo se Mide en la Primera Interacción

FID solo mide el retraso en la primera interacción del usuario. Interacciones posteriores no afectan el FID, aunque pueden tener su propio retraso. Por esto, es importante optimizar el código que se ejecuta durante la carga inicial de la página para minimizar el FID.

CLS: Cumulative Layout Shift

CLS (Cumulative Layout Shift) mide cuánto se desplaza el contenido inesperadamente durante la carga de la página. Los desplazamientos de layout ocurren cuando los elementos visibles cambian de posición inesperadamente, causando que el contenido se mueva mientras el usuario intenta interactuar con él.

Los umbrales para CLS son: bueno (< 0.1), necesita mejora (0.1 - 0.25), y pobre (> 0.25). Un CLS bueno significa que la página es visualmente estable y el contenido no se mueve inesperadamente, lo que mejora la experiencia de usuario y reduce clics accidentales.

cls-concept.js
Loading code...

Este ejemplo muestra cómo ocurre un CLS. Cuando una imagen se carga después de que el texto ya está visible, el texto se desplaza hacia abajo para hacer espacio para la imagen. Este desplazamiento inesperado contribuye al CLS acumulado.

CLS es Acumulativo

CLS es la suma de todos los desplazamientos de layout que ocurren durante la vida de la página, no solo durante la carga inicial. Pequeños desplazamientos pueden acumularse y resultar en un CLS pobre. Es importante prevenir todos los desplazamientos, no solo los grandes.

Cómo Medir Web Vitals

Medir los Core Web Vitals requiere APIs específicas del navegador. Puedes usar la biblioteca web-vitals de Google, que proporciona una forma estandarizada de medir estas métricas, o implementar tus propias mediciones usando las APIs nativas del navegador.

Medir LCP

LCP se puede medir usando la Performance API, específicamente el evento 'largest-contentful-paint' que se dispara cuando se renderiza el elemento de contenido más grande.

measure-lcp.js
Loading code...

Este ejemplo muestra cómo medir LCP usando el evento 'largest-contentful-paint'. El evento proporciona información sobre el elemento que causó el LCP, incluyendo su tamaño, posición y URL (si es una imagen). Esta información es útil para identificar qué elementos optimizar.

Medir FID

FID se puede medir usando la Performance API, específicamente el evento 'first-input' que se dispara cuando el usuario interactúa por primera vez con la página.

measure-fid.js
Loading code...

Este ejemplo muestra cómo medir FID usando el evento 'first-input'. El evento proporciona información sobre la interacción del usuario, incluyendo el tipo de evento (click, keydown, etc.) y el tiempo de procesamiento. El FID es el tiempo entre el inicio del evento y el inicio del procesamiento.

Medir CLS

CLS se puede medir usando la Performance API, específicamente el evento 'layout-shift' que se dispara cuando ocurre un desplazamiento de layout.

measure-cls.js
Loading code...

Este ejemplo muestra cómo medir CLS usando el evento 'layout-shift'. El evento proporciona información sobre el desplazamiento, incluyendo qué elementos se movieron y cuánto se movieron. CLS se calcula como la suma de los puntajes de todos los desplazamientos que no fueron iniciados por el usuario.

Cómo Optimizar Web Vitals

Optimizar los Core Web Vitals requiere un enfoque sistemático que aborda cada métrica individualmente. Las técnicas de optimización varían según la métrica, pero todas tienen el objetivo común de mejorar la experiencia de usuario.

Optimizar LCP

Optimizar LCP requiere identificar el elemento que contribuye al LCP y optimizar su carga. Las técnicas comunes incluyen precargar recursos críticos, optimizar imágenes, y reducir el tamaño del JavaScript que bloquea el rendering.

optimize-lcp.js
Loading code...

Este ejemplo muestra técnicas para optimizar LCP. Precargar la imagen crítica con el atributo rel="preload" permite que el navegador la descargue antes de que se necesite. Usar el atributo loading="eager" en imágenes críticas asegura que se carguen inmediatamente.

Otras técnicas incluyen usar formatos de imagen modernos (WebP, AVIF) que reducen el tamaño del archivo, comprimir imágenes sin sacrificar calidad visual, reducir el tamaño del JavaScript que bloquea el rendering, usar lazy loading para imágenes no críticas, e implementar server-side rendering para contenido inicial.

Optimizar FID

Optimizar FID requiere reducir el tiempo que el hilo principal está ocupado durante la carga inicial de la página. Las técnicas comunes incluyen dividir JavaScript, usar code splitting, y diferir la ejecución de código no crítico.

optimize-fid.js
Loading code...

Este ejemplo muestra técnicas para optimizar FID. Usar el atributo defer en scripts permite que se ejecuten después de que el HTML se ha parseado completamente. Usar async permite que los scripts se ejecuten tan pronto como estén disponibles, sin bloquear el parsing del HTML.

  • Usa defer y async en scripts no críticos
  • Implementa code splitting para cargar solo el JavaScript necesario
  • Reduce el tamaño del JavaScript inicial
  • Minimiza el uso de JavaScript síncrono durante la carga
  • Usa Web Workers para cómputos intensivos
  • Diferir la ejecución de código no crítico

Optimizar CLS

Optimizar CLS requiere prevenir desplazamientos inesperados del contenido. Las técnicas comunes incluyen reservar espacio para imágenes y anuncios, usar fuentes con font-display: swap, y evitar insertar contenido dinámicamente arriba del contenido existente.

optimize-cls.js
Loading code...

Este ejemplo muestra técnicas para optimizar CLS. Especificar width y height en imágenes permite que el navegador reserve espacio antes de que la imagen se cargue. Usar aspect-ratio en CSS crea un contenedor con la proporción correcta que mantiene el espacio reservado.

  • Especifica width y height en todas las imágenes
  • Usa aspect-ratio en CSS para mantener proporciones
  • Usa font-display: swap para fuentes web
  • Reserva espacio para anuncios y contenido dinámico
  • Evita insertar contenido dinámicamente arriba del contenido existente
  • Usa skeletons o placeholders para contenido que se carga dinámicamente

Resumen: Core Web Vitals

Conceptos principales:

  • LCP mide cuánto tarda el contenido más grande en aparecer en la pantalla
  • FID mide el retraso en la primera interacción del usuario con la página
  • CLS mide el desplazamiento acumulado del contenido durante la carga
  • Los Core Web Vitals son factores de ranking en el algoritmo de búsqueda de Google
  • Cada métrica tiene umbrales: bueno, necesita mejora, y pobre
  • Las métricas se miden en el navegador del usuario real (field data)

Mejores prácticas:

  • Precarga imágenes críticas y usa formatos de imagen modernos para optimizar LCP
  • Usa defer y async en scripts no críticos para optimizar FID
  • Especifica width y height en imágenes para optimizar CLS
  • Usa la biblioteca web-vitals de Google para medir las métricas correctamente
  • Monitorea las métricas continuamente para detectar regresiones
  • Optimiza las métricas para mejorar la experiencia de usuario y el SEO