Codificação

Gzip/Deflate ↔ Base64

Compressão de texto em Gzip ou Deflate com codificação Base64 do resultado — e vice-versa. Funciona via API Compression Streams diretamente no navegador.

Base64 by itself doesn't compress anything — quite the opposite, it grows the size by about 33%. To send large text compactly through a text-only channel, it's first compressed with Gzip or Deflate, and only then is the result Base64-encoded.

How to use it

Common uses

Things to keep in mind

Compression only pays off on sufficiently large, compressible text — on short strings the Gzip header overhead plus the Base64 expansion can actually make the result bigger.

Deflate skips Gzip's headers, so its output is more compact, but the format is less self-describing: the receiving side needs to know in advance that it's Deflate specifically.

Artigo sobre esta ferramenta: Gzip + Base64: comprimir dados para transmitir como texto

Perguntas frequentes

Qual a diferença entre Gzip e Deflate aqui?

O Gzip envolve os dados comprimidos em um cabeçalho e um checksum CRC final, enquanto o Deflate é o fluxo de compressão bruto, sem esse envoltório. Dados comprimidos em um formato não podem ser decodificados escolhendo o outro — confirme que o formato selecionado corresponde ao usado na compressão.

Por que preciso codificar em Base64 os dados comprimidos?

A saída de Gzip/Deflate é binária bruta, que não sobrevive bem em contextos de texto como URLs, JSON ou arquivos de configuração. Codificar em Base64 transforma esses dados binários em texto ASCII seguro e copiável.

Por que a ferramenta diz que meu navegador não suporta isso?

Esta ferramenta depende da API nativa Compression Streams do navegador (CompressionStream/DecompressionStream), que não está disponível em todos os navegadores ou versões antigas — nenhum dado é enviado a um servidor, então se não houver suporte a ferramenta simplesmente não funciona.

Por que a descompactação às vezes dá o erro "invalid header"?

A causa mais comum é o formato trocado: os dados foram comprimidos como Deflate "bruto" sem cabeçalho, mas são descompactados como Gzip (que espera seu próprio cabeçalho e CRC-32), ou vice-versa. Tente alternar o formato nas configurações da ferramenta.

A compressão sempre reduz o tamanho final?

Não. Em strings muito curtas, o overhead dos cabeçalhos do Gzip e o aumento causado pelo Base64 podem superar o ganho da compressão — a abordagem só faz sentido para dados de texto grandes o suficiente e compressíveis.

Artigos: Codificação

Base64: para que serve a codificação e como funciona

Como o Base64 transforma dados binários em texto ASCII e quando isso é realmente necessário.

Base32: em que difere do Base64 e quando é mais prático

O alfabeto do Base32, que não diferencia maiúsculas de minúsculas, e os casos em que é mais prático que o Base64.

URL Encode/Decode: o percent-encoding em links

Como caracteres especiais em endereços e parâmetros se tornam sequências %XX.

HTML Entities: como exibir caracteres especiais com segurança

Por que os caracteres < > & precisam ser escapados e como isso evita que a marcação quebre.

JWT: a estrutura do token e o que significa "decodificar" um JWT

O header, o payload e a signature de um JWT, e por que decodificar não é o mesmo que verificar a assinatura.

Unicode Escape: o que significam as sequências \uXXXX

De onde vêm sequências como \u0041 em JSON e strings JS, e o que significam.

ROT13 e a cifra de César: substituição simples de caracteres

Por que um deslocamento de 13 letras torna o ROT13 autoinverso, e por que ainda se usa hoje.

Punycode: como os domínios internacionalizados funcionam no DNS

Como um domínio com caracteres não latinos se torna uma forma ASCII com o prefixo xn--.

Código Morse: como o texto se transforma em pontos e traços

O princípio de codificar letras em pontos e traços, e onde o Morse ainda é usado hoje.

Data URI: quando incorporar imagens diretamente no código

Como um Data URI incorpora o conteúdo de um arquivo diretamente em HTML ou CSS, e quando vale a pena.

XML Entities: escapar caracteres em documentos XML

As cinco entidades XML obrigatórias sem as quais o documento quebra ao ser analisado.