Análisis Profundos

La vida secreta de JPEG: cómo un formato de 1992 conquistó Internet

koboshiCo-founder
·12 min de lectura
La vida secreta de JPEG: cómo un formato de 1992 conquistó Internet
Resumen

JPEG no es magia. Es una canalización de transformadas discretas del coseno, tablas de cuantización y submuestreo de croma que descarta datos que tus ojos probablemente no habrían notado. Treinta y tres años después sigue dominando porque todo lo abre.

Abre cualquier archivo .jpg en un editor hexadecimal. Los dos primeros bytes:

FF D8

Ese es el marcador Start of Image (inicio de imagen). Cada archivo JPEG comienza con él. Cada decodificador JPEG en la Tierra lo busca. Los siguientes bytes le indican al decodificador qué variante de JPEG es esta, qué espacio de color esperar y dónde comienzan los datos de los píxeles. El formato es más antiguo que el navegador web, y aun así transporta aproximadamente el 57% de todas las imágenes servidas en la web moderna, según el Web Almanac 2025.

La crisis de almacenamiento que creó JPEG

En 1986, una imagen en escala de grises sin comprimir de 640 x 480 consumía 307 KB de espacio en disco. Una imagen a color de la misma resolución necesitaba 921 KB. En una época en la que un disco duro de 20 MB costaba cientos de dólares y los disquetes de 1,44 MB eran el medio de intercambio estándar, una sola foto sin comprimir podía llenar dos tercios de un disco.

La necesidad era obvia: un formato de compresión estándar para imágenes de tono continuo, como fotografías y no dibujos de líneas. Varios grupos trabajaban en el problema. El Joint Photographic Experts Group, formado en 1986 por ISO/IEC e ITU-T, fusionó las mejores ideas en un único borrador. Después de seis años de refinamiento, el estándar se publicó en 1992 como ISO/IEC 10918-1.

JPEG nunca fue concebido para ser el único formato de imagen. Fue diseñado para un solo trabajo: hacer que las fotografías fueran lo suficientemente pequeñas para almacenarlas y transmitirlas. Lo hace descartando información en un orden muy específico.

Por qué JPEG comprime tan bien

La compresión JPEG es una canalización, no un algoritmo único. Cada etapa elimina datos que el ojo humano apenas notaría.

Conversión del espacio de color (RGB → YCbCr)

Tu pantalla muestra RGB. JPEG almacena YCbCr. El canal Y transporta la luminancia (brillo). Cb y Cr transportan la crominancia (diferencia de azul y diferencia de rojo). Esto importa porque el ojo humano tiene aproximadamente 2,5 millones de conos sintonizados al brillo y solo 100.000 sintonizados al color. Vemos el detalle de luminancia mucho mejor que el detalle de color.

Submuestreo de croma (chroma subsampling)

La mayoría de los JPEG utilizan submuestreo 4:2:0. Por cada 4 muestras de luminancia, hay 1 muestra Cb y 1 muestra Cr. Eso significa que los canales de croma se almacenan a un cuarto de la resolución del canal de luma. Para una imagen de 4000 x 3000, el plano Y está a resolución completa. Los planos Cb y Cr son de 2000 x 1500 cada uno. Acabas de reducir los datos brutos aproximadamente un 50% antes de que siquiera comience la compresión real, y la mayoría de los espectadores nunca se dan cuenta.

La transformada discreta del coseno (DCT)

La imagen se divide en bloques de 8 x 8 píxeles. Cada bloque se somete a una DCT, que convierte datos espaciales (valores de píxeles) en datos de frecuencia (qué tan rápido cambian los valores a lo largo del bloque). El resultado es una matriz de 8 x 8 de coeficientes. El valor de la esquina superior izquierda es el coeficiente DC, es decir, el brillo promedio del bloque. Los otros 63 son coeficientes AC que representan detalles de frecuencia cada vez más alta.

Los coeficientes de alta frecuencia codifican textura fina: cabello, césped, ruido. Los coeficientes de baja frecuencia codifican formas amplias: cielos, paredes, tonos de piel.

Cuantización

Aquí es donde ocurre la pérdida. JPEG aplica una tabla de cuantización a cada bloque DCT. La tabla es una segunda matriz de 8 x 8 de divisores. Cada coeficiente DCT se divide por su cuantizador correspondiente y se redondea al entero más cercano.

La tabla de cuantización estándar golpea más fuerte los coeficientes de alta frecuencia:

16  11  10  16  24  40  51  61
12  12  14  19  26  58  60  55
14  13  16  24  40  57  69  56
14  17  22  29  51  87  80  62
18  22  37  56  68 109 103  77
24  35  55  64  81 104 113  92
49  64  78  87 103 121 120 101
72  92  95  98 112 100 103  99

Un coeficiente de alta frecuencia de, digamos, 7 se divide por 121 y se redondea a 0. Se fue. Irreversible. El decodificador nunca lo ve. Eso es compresión con pérdida: los datos se destruyen, no solo se recodifican.

A calidad 90, los cuantizadores se dividen por un factor de escala más pequeño. A calidad 50, el factor de escala es mayor. Más coeficientes se anulan. El archivo se hace más pequeño. La imagen se vuelve más suave.

Codificación de entropía

Después de la cuantización, los coeficientes restantes se escanean en zigzag, se codifican con codificación de longitud de carrera (RLE) y se comprimen con codificación de Huffman. Esta etapa es sin pérdida. Solo empaqueta los datos ya destruidos de manera más eficiente.

El resultado: una imagen RGB sin comprimir de 12 MP es 36 MB. Guárdala como JPEG calidad 90 con submuestreo 4:2:0 y cae a ~3,5 MB. Eso es una reducción de 10:1 con pérdida de calidad visible solo bajo magnificación.

¿Qué tan con pérdida es realmente?

El daño no se distribuye uniformemente.

CalidadTamaño típico (12 MP)Impacto visual
95+~8 MBCasi invisible; preferido para archivar
90~3,5 MBSuavizado menor; estándar para cámaras
75~1,8 MBDesenfoque visible en detalles finos; predeterminado web
50~1,0 MBArtefactos de bloqueo obvios al zoom al 100%
30~600 KBBanda de color, ruido de mosquito, inútil para impresión

Aparecen tres artefactos distintos a medida que baja la calidad:

  • Bloqueo (Blocking): Bordes de cuadrícula de 8 x 8 visibles, especialmente en degradados suaves como cielos.
  • Anillamiento (Ringing): Halos oscilantes alrededor de bordes de alto contraste (texto junto a fondo).
  • Sangrado de color: El submuestreo de croma difumina el color a través de límites nítidos.

El verdadero asesino es la pérdida de generación (Generation Loss). Abre un JPEG, edítalo, guárdalo como JPEG de nuevo. Cada guardado vuelve a ejecutar toda la canalización: RGB → YCbCr → submuestreo → DCT → cuantizar. Los errores de redondeo se acumulan. Después de 10 generaciones, una imagen puede parecer que fue pintada en acuarela. Después de 50, es irreconocible.

El desplazamiento hacia el verde y otras peculiaridades de recompresión

Vuelve a guardar un JPEG suficientes veces y quizás notes que la temperatura de color se desplaza. Algunas imágenes adquieren un ligero tono verdoso. Otras se desplazan hacia el magenta. La razón está enterrada en los canales de croma.

JPEG almacena Cb y Cr a resolución reducida y los cuantiza agresivamente. Cada guardado introduce error de redondeo en ambos canales. La conversión de regreso a RGB usa esta matriz:

R = Y + 1.402 x (Cr - 128)
G = Y - 0.344136 x (Cb - 128) - 0.714136 x (Cr - 128)
B = Y + 1.772 x (Cb - 128)

Observa que el verde se calcula a partir de Cb y Cr. Cuando la cuantización repetida empuja Cb hacia arriba y Cr hacia abajo, incluso por un solo paso de cuantización, el canal G se desplaza. Un sesgo positivo en Cb empuja el verde hacia abajo. Un sesgo negativo en Cr empuja el verde hacia arriba. La interacción no es simétrica porque los coeficientes -0.344136 y -0.714136 tienen diferentes magnitudes. El resultado es una lenta acumulación de verde en algunas regiones de la imagen, especialmente donde los valores de croma originales ya estaban cerca de los límites de cuantización.

Este no es un efecto garantizado. Depende de las tablas de cuantización del codificador, el modo de submuestreo y el contenido de la imagen. Pero es real, reproducible, y una razón por la que los flujos de trabajo profesionales evitan volver a guardar JPEGs.

Si JPEG es tan defectuoso, ¿por qué todo lo usa?

JPEG no es popular porque sea perfecto. Es popular porque es suficiente y universal.

La patente de JPEG de línea base, en manos de Forgent Networks, expiró en 2006. El formato es libre de regalías. Cada cámara, teléfono, impresora y navegador tiene un decodificador JPEG en silicio o en C altamente optimizado, así que renderizarlo cuesta casi nada. Para redes sociales, sitios de noticias y archivos adjuntos de correo, un JPEG a calidad 75 es indistinguible del original en la pantalla de un teléfono. Además, los sistemas de gestión de contenido, las CDN, las bibliotecas de imágenes y los archivos heredados todos hablan JPEG. Reemplazarlos requiere algo más que un formato mejor. Hace falta una razón para migrar petabytes de activos existentes.

Los formatos que deberían haber ganado

Varios formatos han intentado destronar a JPEG. Ninguno lo ha logrado por completo.

FormatoCon pérdidaSin pérdidaTransparenciaAnimaciónProfundidad de bits máxVentaja clave
JPEGNoNoNo8 bitsSoporte universal
PNGNoNo16 bitsSin pérdida perfecta, alpha
WebP8 bits25-35% más pequeño que JPEG, nativo en navegador
HEIC16 bits~50% más pequeño que JPEG, predeterminado de Apple
AVIF12 bitsMejor compresión hoy, libre de regalías
JPEG XL32 bitsRecompresión JPEG sin pérdida, decodificación progresiva

PNG resolvió el problema sin pérdida pero produce archivos 5 a 10 veces más grandes que JPEG para fotos. Domina las capturas de pantalla, los recursos de interfaz y los gráficos.

WebP (Google, 2010) supera a JPEG en tamaño y añade transparencia y animación. Ahora se envía en cada navegador principal. El Web Almanac 2025 sitúa a WebP en el 11% de las imágenes LCP, frente al 7% en 2024. Es la ruta de actualización segura hoy.

HEIC (Apple, 2017) utiliza compresión HEVC dentro de un contenedor ISOBMFF. Es ~40-50% más pequeño que JPEG y contiene múltiples imágenes por archivo. Domina el ecosistema de Apple y se estanca en todas partes más debido a los pools de patentes HEVC.

AVIF (AOM, 2019) deriva del vídeo AV1. Logra las mejores relaciones de compresión de cualquier formato ampliamente soportado, aproximadamente 30% más pequeño que WebP a calidad equivalente. La desventaja es la velocidad de decodificación. Las imágenes AVIF pueden tardar 2 a 3 veces más en renderizarse que JPEG en dispositivos móviles, consumiendo batería y retrasando el Largest Contentful Paint.

JPEG XL (ISO/IEC 18181, 2021) es técnicamente superior a todos ellos. Comprime 50-60% más pequeño que JPEG. Decodifica rápido. Admite decodificación progresiva, así que una imagen usable aparece después de descargar solo ~1% del archivo. Más importante aún, puede recomprimir JPEGs existentes sin pérdida para ahorros de ~20% en tamaño con recuperación bit a bit del original. Ningún otro formato puede hacer esto.

Dónde estamos ahora

JPEG XL tuvo una infancia difícil. Google agregó soporte experimental a Chrome en 2021, luego lo eliminó el 31 de octubre de 2022, la "decisión de Halloween". La razón declarada: beneficio incremental insuficiente sobre los formatos existentes. La reacción fue inmediata. El problema de Chromium se convirtió en el segundo más destacado en la historia del proyecto. Se acusó a Google de proteger a AVIF, un formato vinculado a la Alliance for Open Media que Google co-fundó.

A finales de 2025, Chromium dio marcha atrás. Un nuevo decodificador en Rust (jxl-rs) llegó a Chrome Canary. Chrome 145, lanzado en febrero de 2026, incluyó soporte para JPEG XL detrás de una bandera (flag). Safari lo ha soportado desde 2023. Firefox Nightly está integrando el mismo decodificador en Rust. JPEG XL aún no está habilitado por defecto, pero está de vuelta en la base de código.

AVIF, mientras tanto, es la opción pragmática para 2026. El soporte del navegador es amplio. Los codificadores están mejorando. Tanto Cloudinary como Cloudflare sirven AVIF automáticamente mediante la negociación del encabezado Accept. La página mediana que sirve AVIF o WebP muestra 81% de buenas tasas LCP frente al 64% de las páginas solo JPEG, según datos de CoreDash.

JPEG en 2026

JPEG es un compromiso de 33 años de antigüedad. Descarta resolución de color, textura de alta frecuencia y precisión numérica a cambio de archivos lo suficientemente pequeños para que la fotografía digital funcionara en los noventa. Sus artefactos se conocen bien. La pérdida de generación existe. El desplazamiento verde pasa.

Aun así, JPEG sigue ahí por la misma razón que sigue QWERTY: cambiar cuesta más que quedarse.

La forma práctica de manejarlo es por capas. Conserva masters en calidad alta, archivados como PNG, TIFF o JPEG calidad 95+. Nunca edites partiendo de una exportación web a calidad 75. Sirve formatos modernos de forma dinámica con una CDN o servicio de imágenes que negocie AVIF, WebP o JPEG XL según el encabezado Accept del navegador. Guarda un master y deja que el borde convierta bajo demanda. Y no recomprimas JPEGs en lotes. Cada generación destruye datos. Si necesitas archivos más pequeños, recodifica desde el master, no desde otro JPEG.

JPEG no va a morir de golpe. Se desvanecerá como GIF: todavía compatible en todas partes, todavía se abre en cualquier visor, pero cada vez más reemplazado por formatos que hacen el mismo trabajo con menos bytes y menos artefactos. Esta vez, los sucesores sí están ganando terreno.

Más publicaciones del blog para leer