Todos los artículos

Gzip + Base64: comprimir datos para transmitirlos como texto

Gzip y Deflate son algoritmos de compresión que reducen el tamaño de los datos, pero el resultado es binario, no texto. Si esos datos comprimidos necesitan viajar por un canal pensado para texto (una URL, una cookie, un campo JSON), se codifican además en Base64: de ahí la pareja "Gzip/Deflate ↔ Base64", muy usada por herramientas que guardan el estado completo de una app en un enlace para compartirlo por WhatsApp o correo.

Por qué el español comprime tan bien pese a los acentos

Cada vocal acentuada (á, é, í, ó, ú) o la eñe ocupa 2 bytes en UTF-8 en lugar de 1, lo que en teoría debería penalizar la compresión de texto en español. En la práctica apenas se nota: el idioma tiene mucha redundancia en palabras cortas muy repetidas —de, la, que, para— y esa repetición es justo lo que Gzip aprovecha para sustituir patrones por referencias más cortas, compensando el coste extra de los acentos.

El orden habitual de las operaciones

  1. El texto original se comprime con Gzip o Deflate: el tamaño se reduce.
  2. El resultado binario comprimido se codifica en Base64: el tamaño vuelve a crecer un poco, pero los datos ya son texto.
  3. La cadena resultante se transmite de forma segura por un canal de texto.

La decodificación va en orden inverso: primero Base64 → datos binarios, y luego descompresión Gzip/Deflate → texto original.

Casos de uso habituales

  • Empaquetar el estado completo de una aplicación en una URL para compartir un enlace y reabrirlo tal como se dejó.
  • Guardar datos comprimidos en una cookie o un campo de texto de una base de datos.
  • Depurar: descomprimir y leer contenido codificado así por un sistema externo o una API.

Gzip frente a Deflate "en crudo"

Gzip es, en esencia, un formato envoltorio en torno al algoritmo Deflate: añade su propia cabecera y una suma de comprobación (CRC-32) encima de los datos comprimidos. El Deflate "en crudo" no tiene esos bytes adicionales, así que el resultado es algo más compacto, pero no se puede descomprimir con una utilidad gzip sin indicar explícitamente que se trata del formato raw. Confundir estas dos variantes es una causa habitual del error "invalid header" al intentar descomprimir datos.

Probar la herramienta