guías/Cuánto ahorra comprimir de verdad
GUÍA

Cuánto ahorra comprimir de verdad

Toda herramienta de compresión publica un porcentaje, y casi todos los porcentajes son un artefacto de los archivos que le dieron de comer. Esto es lo que hizo un lote mixto de verdad, separado por formato de origen.

PNG → WEBP−96%12 archivos, 27.6 MB de entrada
JPG → WEBP−56%4 archivos, 560 KB de entrada
PROMEDIO DEL LOTE−95%no significa nada — ver abajo

Por qué el promedio miente

En ese lote los JPG eran el 1.9% de los bytes. Un promedio ponderado sobre esa entrada es entonces, casi por completo, una medición de los PNG: de ahí sale el 95%. Publicarlo es prometer un resultado que solo se cumple con un tipo de archivo.

Los dos números honestos son los separados. Y el −56% de los JPG ya se midió dos veces, sobre lotes distintos, cayendo en el mismo lugar las dos.

El número de los PNG es cambio de formato, no compresión

Un PNG de 2.5 MB de una foto que baja a 96 KB no es un codificador ingenioso. Es un formato sin pérdida reemplazado por uno con pérdida en calidad 0.75. Eso lo hace cualquier herramienta. La dificultad nunca fue un archivo: es hacerlo con doscientos sin congelar el navegador.

Los archivos ya optimizados crecen

Recomprimir un archivo que ya venía por debajo de la calidad que pedís lo infla, y no recupera nada, porque la pérdida original ya está hecha. Medido con el mismo libwebp que usa el navegador: un archivo codificado en calidad 45 salió 17.7% más grande al recodificarlo en 0.78.

Sobre un lote de 17 archivos así, 15 quedaron intactos y el lote igual dio ahorro positivo. Sin ese guardarraíl habría crecido.

Dónde se va el tiempo en realidad

Sobre 300 archivos y 503 MB, decodificar promedió 16 ms por archivo y codificar 84 ms. Codificar es el 84% del costo, lo que parece el argumento para un codificador en WebAssembly — hasta que caés en que el codificador del navegador ya es código nativo. Una compilación WASM de la misma biblioteca corre más lento, no más rápido.

Medido sobre el formato que un navegador realmente no codifica: AVIF tardó 9.7 veces más para un 10% menos de bytes, y eso fue nativo. En un lote de 300 archivos, eso convierte tres segundos en un minuto.

La memoria no es la pared

503 MB de entrada dejaron la pestaña del navegador en 92.9 MB, con 23.9 MB de resultados en memoria. El límite que uno espera golpear primero no es el que muerde.

PrensoDecodifica y recodifica en esta pestaña. Funciona sin conexión.