Gzip e Deflate são algoritmos de compressão que reduzem o tamanho dos dados, mas o resultado é binário, não texto. Se esses dados comprimidos precisam trafegar por um canal pensado para texto (URL, cookie, campo JSON), eles também são codificados em Base64 — daí a dupla "Gzip/Deflate ↔ Base64", usada por ferramentas que empacotam o estado inteiro de um app num link para compartilhar por WhatsApp.
Por que o português comprime bem apesar dos acentos
Cada vogal acentuada (á, ã, é, ê, ç) ocupa 2 bytes em UTF-8 em vez de 1, o que a princípio prejudicaria a compressão de texto em português. Na prática o efeito é pequeno: o idioma tem muita redundância em palavras curtas e frequentes — de, que, para, com — e é exatamente essa repetição que o Gzip aproveita para substituir padrões por referências mais curtas, compensando o custo extra dos acentos.
A ordem típica das operações
- O texto original é comprimido com Gzip ou Deflate — o tamanho diminui.
- O resultado binário comprimido é codificado em Base64 — o tamanho cresce um pouco de volta, mas os dados viram texto.
- A string resultante é transmitida com segurança por um canal de texto.
A decodificação acontece na ordem inversa: primeiro Base64 → dados binários, depois descompressão Gzip/Deflate → texto original.
Casos de uso comuns
- Empacotar o estado inteiro de uma aplicação numa URL para compartilhar um link e reabri-lo exatamente como foi deixado.
- Guardar dados comprimidos num cookie ou campo de texto de um banco de dados.
- Depuração: descompactar e ler conteúdo codificado assim por um sistema externo ou API.
Gzip vs. Deflate "bruto"
O Gzip é, na prática, um formato-envelope em torno do algoritmo Deflate: ele adiciona seu próprio cabeçalho e um checksum (CRC32) sobre os dados comprimidos. O Deflate "bruto" não tem esses bytes extras, por isso o resultado é um pouco mais compacto, mas não pode ser descompactado por um utilitário de gzip sem indicar explicitamente que se trata do formato raw. Confundir essas duas variantes é uma causa comum do erro "invalid header" ao tentar descompactar dados.