Developer Toolbox

gzip (DEFLATE)

Mira cómo gzip reduce el texto: las repeticiones se convierten en copias cortas y los códigos Huffman dan menos bits a los símbolos frecuentes.

  • Ventana: 32 KB
  • Copias: 3-258 bytes
  • Códigos: hasta 15 bits
  • Encapsulado gzip: 18 bytes
¿Qué significan estos términos?
  • Literal: un carácter escrito tal cual, porque en su posición no empieza ninguna repetición de 3 caracteres o más.
  • Copia: una longitud y una distancia que significan "toma tantos caracteres desde tan atrás". Puede solaparse con el texto que va produciendo.
  • Ventana: hasta dónde puede mirar hacia atrás el compresor en busca de una repetición. 32 KB en gzip, hasta 16 MB en Brotli.
  • Código Huffman: un código de bits para cada símbolo, más corto para los frecuentes, construido con un árbol que une una y otra vez los dos símbolos más raros.
  • Libre de prefijos: ningún código es el comienzo de otro, así que una secuencia de códigos se puede leer sin separadores.
LZ77 y Huffman, paso a paso 0 / 19 pasos

El texto tiene 23 caracteres, 184 bits sin comprimir. El compresor lo lee de izquierda a derecha y en cada posición se pregunta si lo que sigue ya apareció antes.

Espacio: reproducir o pausar. Flechas izquierda y derecha: paso a paso. Inicio y Fin: saltar.

Prueba esto: Escribe la misma letra muchas veces. Una sola copia con distancia 1 las cubre todas, porque una copia puede solaparse con el texto que va produciendo.

Cómo funciona

gzip aplica DEFLATE en dos etapas. LZ77 recorre el texto y, en cada posición, busca la secuencia de bytes más larga que ya apareció en los últimos 32 KB; en lugar de repetirlos, escribe un par: cuántos bytes copiar (3-258) y a qué distancia hacia atrás están. Lo que queda, los literales y esos pares, se escribe después con códigos Huffman, donde los símbolos frecuentes reciben códigos cortos y los raros, códigos largos. gzip envuelve el resultado en una cabecera de 10 bytes y un pie de 8 bytes con una suma de comprobación CRC-32.

Cuándo es una buena opción

gzip comprime texto que se repite: HTML, CSS, JavaScript, JSON, registros, CSV. Todos los navegadores y servidores lo entienden, es rápido en cualquier nivel y es la opción segura para comprimir respuestas al vuelo. Los datos ya comprimidos, como JPEG, PNG, WOFF2 o ZIP, no tienen repeticiones, así que gzip solo añade su encapsulado.

Con tu propio texto

Las mismas dos etapas, hechas por gzip real (nivel 6) sobre un texto más largo. Pega el tuyo o trae uno de la herramienta Compresión gzip y Brotli.

Entrada