Elegir el formato correcto impacta directamente en el rendimiento, la experiencia del usuario y el coste operativo de un SaaS. Esta guía ofrece recomendaciones claras para cada caso de uso, junto con snippets para React y Next.js.
¿Por qué importa el formato?
- Rendimiento: archivos pequeños = cargas más rápidas
- Banda ancha: reduce el consumo de CDN/hosting
- UX: menos tiempo de espera mejora la retención
- SEO: Core Web Vitals favorece sitios ágiles
Los cuatro formatos esenciales
1. JPEG (.jpg/.jpeg) – estándar para fotografía
Úsalo para
- Fotos subidas por usuarios (avatars, contenido)
- Banners y hero images con muchos colores
- Capturas complejas con gradientes
Especificaciones
- Compresión con pérdida
- Sin transparencia ni animación
- Calidad web ideal: 75-85%
Ejemplo React
function UserAvatar({ userId, size = 'medium' }) {
const sizeMap = { small: '32', medium: '64', large: '128' };
return (
<img
src={`/api/users/${userId}/avatar.jpg?size=${sizeMap[size]}`}
alt="Avatar"
width={sizeMap[size]}
height={sizeMap[size]}
loading="lazy"
/>
);
}
2. PNG (.png) – campeón de la transparencia
Úsalo para
- Logos, elementos de marca
- UI con fondo transparente
- Capturas con texto
Detalles
- Compresión sin pérdida
- Soporta canal alpha
- PNG-8 (hasta 256 colores), PNG-24 (16.7 millones)
Next.js
import Image from 'next/image';
function CompanyLogo({ variant = 'light', size = 'medium' }) {
const dim = {
small: { width: 120, height: 40 },
medium: { width: 180, height: 60 },
large: { width: 240, height: 80 }
};
return (
<Image
src={`/images/logo-${variant}.png`}
alt="Logo"
width={dim[size].width}
height={dim[size].height}
priority
/>
);
}
3. WebP (.webp) – eficiencia moderna
Cuándo usarlo
- Navegadores modernos (90%+ soporte)
- Apps centradas en rendimiento/móvil
Ventajas
- Compresión lossy y lossless
- Transparencia y animación nativas
- 25-35% más pequeño que JPEG
Estrategia
function OptimizedImage({ src, alt, ...props }) {
const webpSrc = src.replace(/\.(jpg|jpeg|png)$/, '.webp');
return (
<picture>
<source srcSet={webpSrc} type="image/webp" />
<img src={src} alt={alt} {...props} />
</picture>
);
}
4. SVG (.svg) – vector escalable
Úsalo para
- Iconos, logotipos, ilustraciones geométricas
- Elementos interactivos controlados vía CSS/JS
Ejemplo
function CheckIcon({ size = 24, color = 'currentColor' }) {
return (
<svg
width={size}
height={size}
viewBox="0 0 24 24"
fill="none"
stroke={color}
strokeWidth="2"
>
<polyline points="20,6 9,17 4,12" />
</svg>
);
}
Formatos avanzados
AVIF (.avif)
- Soporte cercano al 73% (2024)
- 50% más pequeño que JPEG, 20% más que WebP
- Safari aún no lo soporta (2025)
- Usa
<picture>con fallback WebP/JPEG
GIF (.gif)
- Animaciones simples
- Considera WebP animado o MP4 para reducir peso
Recomendaciones por plataforma
React
- Organiza
/public/images(hero, icons, screenshots…) - Implementa lazy loading con IntersectionObserver
Next.js
- Configura
next.config.jspara formatos modernos - Usa
<Image>conplaceholder="blur"ysizes - Importa componentes pesados de forma dinámica (SSR false)
Objetivos de tamaño
| Caso | Peso recomendado | | --- | --- | | Hero desktop | 150-300 KB (JPEG 80-85%) | | Hero mobile | 50-150 KB (WebP) | | Miniaturas | 10-30 KB | | Iconos SVG | 1-5 KB | | Avatares (64 px) | 5-15 KB |
Flujo de optimización
- CLI:
convert,cwebp,svgo - Scripts npm con imagemin + mozjpeg/pngquant/webp
- Webpack + image-webpack-loader
Métricas de rendimiento
- Mide LCP (menos de 2.5 s), FID (menos de 100 ms) y CLS (por debajo de 0.1)
- Monitorea tiempos de carga de cada imagen
- Sigue el peso total por página
Errores comunes
- Usar PNG para fotografías
- No ofrecer fallback (WebP sin JPEG)
- Servir la misma imagen gigante a desktop y móvil
- Olvidar versiones @2x para pantallas retina
QA y pruebas
- Checklists manuales (visualización, velocidad, alt text)
- Tests automatizados (p.ej. Jest verificando encabezados
Content-Type) - Lighthouse para auditar “uses-optimized-images”
Conclusión
Equilibra rendimiento, calidad y compatibilidad. Inicia con la pareja clásica (JPEG + PNG) y añade WebP/AVIF cuando tu stack lo permita. Audita constantemente, mantente al día con el soporte de navegadores y documenta un flujo claro para convertir o dividir imágenes. Elegir bien el formato impacta directamente en la experiencia del usuario y en el éxito de tu SaaS.


