Actualizado mayo 2026

Optimizar imágenes para web: WebP, AVIF y lazy loading

Las imágenes son el factor más pesado en cualquier sitio web moderno. Optimizarlas correctamente reduce el LCP en 30-50%, mejora los Core Web Vitals y te convierte en top 5% en velocidad. Guía completa con formatos nuevos, herramientas profesionales y setup automático en tu build.

⏱️ Lectura: 10 min 📊 4 formatos comparados 🛠️ 8 herramientas profesionales

¿Por qué optimizar imágenes?

Las imágenes representan el 52-67% del peso total de una página promedio. Una imagen sin optimizar de 5MB te puede costar:

  • LCP más lento: si tu hero image tarda 4 segundos en cargar, pierdes usuarios directamente
  • Google ranking: los Core Web Vitals incluyen LCP. Una imagen lenta = ranking más bajo
  • Bounce rate: estudios muestran que cada 1 segundo de delay = +7% bounce rate
  • Coste de ancho de banda: en Cloudflare Images o Imgix, pagas por GB transferido

Una sola optimización (WebP + lazy loading) puede reducir el tamaño total de página en 40% sin perder calidad visual.

Comparativa de formatos: JPEG vs PNG vs WebP vs AVIF

Formato Compresión Soporte navegadores Mejor para
JPEG Buena (con pérdida) 100% (todos) Fotos naturales, fallback
PNG Pobre (sin pérdida) 100% (todos) Iconos, gráficos, transparencia
GIF Pésima 100% (todos) Animaciones simples (evita: usa MP4)
WebP Excelente (-25-35%) 94% (excepto IE, Safari <16) Fotos, héroes, layouts
AVIF Excepcional (-40-50%) 65% (Chrome, Firefox, Edge) Futuro, máxima compresión

WebP: el estándar moderno (use ahora mismo)

¿Qué es WebP?

WebP es un formato de imagen moderno creado por Google en 2010. Ofrece 25-35% menos tamaño que JPEG manteniendo la misma calidad visual. Soportado en el 94% de navegadores modernos (Chrome, Edge, Firefox, Safari 16+).

Si tu sitio tiene fallback a JPEG, WebP es 100% seguro de implementar hoy.

Cómo convertir a WebP

Opción 1: Squoosh (online, sin instalar)

  1. 1. Ve a squoosh.app
  2. 2. Sube tu imagen JPEG/PNG
  3. 3. Selecciona WebP en dropdown derecha
  4. 4. Ajusta quality (85-90 es perfecto)
  5. 5. Descarga. Eso es todo.

Opción 2: ImageMagick (línea de comandos, lotes)

Si necesitas convertir 50+ imágenes:

# Instalar
brew install imagemagick  # macOS
sudo apt install imagemagick  # Linux

# Convertir una imagen
convert input.jpg -quality 85 output.webp

# Convertir todos en carpeta
for f in *.jpg; do convert "$f" -quality 85 "${f%.jpg}.webp"; done

Opción 3: cwebp (oficial de Google)

# Instalar
brew install webp  # macOS

# Convertir
cwebp -q 85 input.jpg -o output.webp

# Con lotes
for f in *.jpg; do cwebp -q 85 "$f" -o "${f%.jpg}.webp"; done

HTML: cómo servir WebP con fallback

<picture>
  <source srcset="image.webp" type="image/webp">
  <source srcset="image.jpg" type="image/jpeg">
  <img src="image.jpg" alt="Description" width="1200" height="800" loading="lazy">
</picture>

El navegador automáticamente elige WebP si lo soporta, si no cae a JPEG. Siempre incluye width + height para evitar CLS.

AVIF: el futuro (compresión superior)

AVIF es el formato del futuro. Ofrece 40-50% menos tamaño que JPEG con calidad superior a WebP. Soportado en Chrome 85+, Firefox 93+, Edge 95+. El problema: Internet Explorer y navegadores viejos no lo soportan (pero podemos usar fallback).

Conversión a AVIF

# Instalar ffmpeg (soporta AVIF)
brew install ffmpeg  # macOS

# Convertir
ffmpeg -i input.jpg -c:v libaom-av1 -crf 30 output.avif

# O usar imagemagick (más lento pero fácil)
convert input.jpg output.avif

HTML: servir AVIF con fallback a WebP a JPEG

<picture>
  <source srcset="image.avif" type="image/avif">
  <source srcset="image.webp" type="image/webp">
  <source srcset="image.jpg" type="image/jpeg">
  <img src="image.jpg" alt="Description" width="1200" height="800" loading="lazy">
</picture>

Orden importante: AVIF (mejor) → WebP (bueno) → JPEG (fallback universal)

Lazy loading: carga diferida nativa

No carguemos todas las imágenes en el primer momento. Solo cargamos las que el usuario ve. Esto reduce el LCP drásticamente.

Método 1: loading="lazy" (nativo, recomendado)

<img src="image.webp" alt="..." loading="lazy" width="1200" height="800">

Soportado en el 95% de navegadores. El navegador automáticamente carga la imagen cuando está a punto de entrar en viewport. No necesitas JavaScript.

Método 2: Intersection Observer (control total)

<img data-src="image.webp" alt="..." width="1200" height="800" class="lazy">

<script>
const images = document.querySelectorAll('.lazy');
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      entry.target.src = entry.target.dataset.src;
      observer.unobserve(entry.target);
    }
  });
});
images.forEach(img => observer.observe(img));
</script>

Imágenes responsive: srcset y sizes

No sirvas la misma imagen en móvil y desktop. En móvil una imagen 1200x800 se ve como 400x266. ¿Por qué descargar 1200x800 en móvil?

<img
  src="image-400.webp"
  srcset="
    image-400.webp 400w,
    image-800.webp 800w,
    image-1200.webp 1200w"
  sizes="(max-width: 600px) 100vw, (max-width: 1200px) 50vw, 1200px"
  alt="Description"
  width="1200"
  height="800"
  loading="lazy"
>

El navegador elige automáticamente la versión correcta según pantalla. En móvil 400w, en tablet 800w, en desktop 1200w. Ahorras 60-70% ancho de banda en móviles.

Herramientas profesionales para optimizar

Squoosh (gratuito, web)

squoosh.app — Interfaz visual. Arrastra imagen, convierte a WebP/AVIF, ajusta quality. Ideal para principiantes. Sin instalar nada.

TinyPNG (freemium, web)

tinypng.com — Compresión con IA. Pierde ~5% calidad pero reduce 40-50%. Plan gratuito: 20 imágenes/mes. Pro: €35/año ilimitado.

ImageOptim (gratuito, macOS)

imageoptim.com — App nativa. Arrastra carpeta, optimiza todo sin perder calidad. Usa 5+ algoritmos. Solo macOS.

ShortPixel (freemium, cloud)

shortpixel.com — API cloud. Sube imagen, recibe optimizada. Convierte JPEG→WebP/AVIF automático. 100 imágenes/mes gratis.

imagemin (npm, automatizado)

npmjs.com/package/imagemin — Para buildtools. Integra en tu workflow: npm run build optimiza automático. Ideal en CI/CD.

Cloudflare Image Resizing (pago, CDN)

Transforma imágenes on-the-fly. Sirve WebP/AVIF automático, redimensiona según device, cachea en CDN. €10/1M transformaciones.

Imgix (pago, profesional)

imgix.com — CDN especializado. URL-based optimization: ?fm=webp&q=80&w=1200. Desde €30/mes.

Astro image integration (gratuito, build-time)

Si usas Astro, <Image> component optimiza automático: WebP, srcset, lazy loading. Sin configurar nada.

Tabla de decisión: qué herramienta usar

Situación Mejor opción
Soy diseñador, 5 imágenes, sin técnica Squoosh.app
Tengo 50+ imágenes, necesito batch ImageOptim (Mac) o cwebp
Integrar en pipeline automatizado imagemin (npm)
CDN con transform on-the-fly Cloudflare Image o Imgix
Usando Astro o Next.js Image component nativo

Setup automático en tu build

Astro (recomendado)

Astro optimiza imágenes automáticamente. Solo necesitas usar el componente:

---
import { Image } from 'astro:assets';
import myImage from '../images/my-image.png';
---

<Image src={myImage} alt="Description" />

Automáticamente: convierte a WebP, crea srcset, agrega width/height, lazy loading, CLS optimization. Zero config.

Next.js

import Image from 'next/image';

export default function MyComponent() {
  return (
    <Image
      src="/images/hero.jpg"
      alt="Description"
      width={1200}
      height={800}
      priority
    />
  );
}

Next.js Image: optimiza automático, responsive, lazy loading. priority para hero (sin lazy loading).

Evitar CLS con width y height

CLS (Cumulative Layout Shift) ocurre cuando el navegador no sabe el tamaño de la imagen hasta descargarla. Mientras carga, el layout "salta".

<!-- ❌ MALO: CLS issue -->
<img src="image.webp" alt="...">

<!-- ✓ BIEN: CLS evitado -->
<img src="image.webp" alt="..." width="1200" height="800" loading="lazy">

Siempre incluye width y height. El navegador pre-calcula el espacio necesario y el layout no salta cuando la imagen carga.

Hero image: fetchpriority="high"

La imagen del hero afecta directamente el LCP. Dile al navegador que la priorize:

<img
  src="hero.webp"
  alt="Hero"
  width="1200"
  height="600"
  loading="eager"
  fetchpriority="high"
>

fetchpriority="high": comienza descarga inmediatamente. loading="eager": no lazy load (carga en primer byte). Resultado: LCP -30-40%.

Preguntas frecuentes

¿WebP reduce calidad visual? +

No, si lo configuras bien. A quality=85-90, WebP es imperceptible de JPEG para el ojo humano, pero es 30% más pequeño.

Quality=75 sí pierde detalle. En fotos naturales, 85 es el sweet spot. En gráficos/logos usa PNG.

¿Necesito servir AVIF si ya tengo WebP? +

No es obligatorio, pero si quieres máxima compresión, sí. AVIF es 40-50% más pequeño que JPEG. El overhead de mantener 3 versiones (AVIF, WebP, JPEG) es mínimo si automatizas con imagemin.

Recomendación: para sitios grandes (muchas imágenes), sí vale la pena. Para 10 imágenes, overkill.

¿Lazy loading afecta SEO? +

No. Google entiende loading="lazy" y sigue indexando imágenes. Usa lazy loading para TODAS las imágenes debajo del fold.

Excepción: la imagen del hero no debe ser lazy (usa fetchpriority="high" en lugar).

¿Cuál es el tamaño ideal de imagen? +

Depende del uso. Como regla general:

  • Hero: 1200x600px (WebP 100-150KB)
  • Artículo: 800x600px (WebP 80-120KB)
  • Thumbnail: 400x300px (WebP 30-50KB)
  • Favicon: 16x16, 32x32 (PNG puro)
¿SVG vs PNG vs WebP para iconos? +

SVG: Mejor para iconos (vectorial, escalable, pequeño en bytes, soporte 100%).

PNG: Para gráficos con transparencia complejos.

WebP: Solo para fotos/raster. No uses para iconos.

Impacto en Core Web Vitals

LCP (Largest Contentful Paint): Si tu hero image está sin optimizar, LCP >4s. WebP + lazy loading → LCP <2.5s. Mejora: -50-60%

CLS (Cumulative Layout Shift): Sin width/height en imágenes = CLS >0.1 (FAIL). Con width/height = CLS <0.05 (PASS). Mejora: 100%

INP (Interaction to Next Paint): Imágenes ligeras → menos trabajo en el thread principal. INP -20-30%

Artículos relacionados

¿Tu sitio necesita hosting optimizado para imágenes?

No solo optimices imágenes: también necesitas un hosting que las sirva rápido via CDN. Nuestra herramienta te recomienda la plataforma perfecta según tu caso.

Encontrar hosting ideal →