Glossary
Compressão sem perdas
Compressão que preserva todos os bytes
By Buğra SözeriPublished Updated
Compressão sem perdas reduz o tamanho do arquivo preservando todos os bytes do original. A descompressão produz saída bit a bit idêntica à entrada. Custo: economias menores que a compressão com perdas — tipicamente 30-70% de redução de tamanho dependendo do conteúdo.
Como funciona: algoritmos sem perdas encontram padrões estatísticos (substrings repetidas, sequências previsíveis) e os codificam com representações mais curtas. Duas famílias clássicas:
- Baseada em dicionário (LZ77, LZ78, LZW): constrói um dicionário de substrings vistas e emite referências anteriores. A base de DEFLATE, gzip, ZIP.
- Codificação de entropia (Huffman, codificação aritmética, ANS): atribui códigos binários mais curtos a símbolos mais frequentes. Tipicamente combinada com métodos de dicionário.
Formatos comuns sem perdas:
- PNG — imagens (usa DEFLATE)
- FLAC — áudio (preserva PCM de 16-24 bits, tipicamente 50-60% do tamanho do WAV)
- ZIP, gzip, Brotli, Zstandard — dados gerais
- WebP e AVIF — ambos suportam modos sem perdas
- Arquivos de pacote Git — armazenamento de repositório de código-fonte
Use sem perdas quando precisar de reprodução bit a bit perfeita, quando o conteúdo será editado posteriormente ou quando o arquivo é texto/dados estruturados (que não comprimem bem com perdas de qualquer forma).
O teto teórico da informação: o artigo de 1948 de Claude Shannon estabeleceu que a compressão sem perdas não pode descer abaixo da entropia da fonte — a informação média por símbolo. Para dados aleatórios (bytes aleatórios, texto cifrado criptografado, arquivos já comprimidos), a entropia é máxima e a compressão sem perdas alcança essencialmente zero de economia. É por isso que “gzip image.jpg” não ganha quase nada; os bytes JPEG já parecem aleatórios para um compressor. O corolário: se sua taxa de compressão for suspeitosamente boa em dados que deveriam ter alta entropia, você provavelmente encontrou um bug.
Sem perdas em dados com perdas — quando vale a pena: uma confusão comum é optar por FLAC sobre uma fonte MP3 de 128 kbps, esperando melhor qualidade de áudio. O MP3 já descartou informações; o FLAC apenas preserva sem perdas a versão descartada. Para áudio que se originou como PCM de 16 bits (CDs, masters de estúdio), o FLAC é a escolha certa de arquivamento. Para áudio que se originou com perdas, transcodificar para FLAC apenas infla o arquivo. A regra geral: armazene o master no formato sem perdas de maior qualidade que a fonte suporta; entregue via o melhor formato com perdas que o consumidor pode reproduzir. Relacionado: DEFLATE, compressão com perdas, entropia. Referência: Shannon CE, A Mathematical Theory of Communication (Bell Syst Tech J, 1948).
Exemplo prático: comprimindo um arquivo de log de 10 MB
Um log de aplicação típico de 10 MB (linhas JSON com timestamps, nível, mensagem, nomes de campo repetidos) é altamente redundante. Números reais de um benchmark recente no mesmo input: gzip nível padrão ≈ 1,6 MB (84% de redução, 0,2 s de codificação), Brotli nível 6 ≈ 1,1 MB (89%, 0,5 s), Zstandard nível 3 ≈ 1,3 MB (87%, 0,05 s), Zstandard nível 19 ≈ 0,9 MB (91%, 1,8 s). Bytes aleatórios (10 MB de /dev/urandom) comprimem para dentro de alguns bytes de 10 MB em cada algoritmo — incompressível porque tem alta entropia. Imagens PNG já existentes encolhem mais 1-3% sob gzip -9, razão pela qual servidores HTTP normalmente ignoram Content-Encoding: gzip em respostas PNG/JPEG/MP4 para economizar CPU.
Escolhendo um algoritmo em 2026
Para entrega web: Brotli na qualidade 5-6 para ativos estáticos (melhor taxa em tempo de codificação aceitável, suportado em todos os navegadores modernos desde 2017), gzip como fallback para clientes legados. Para armazenamento interno e pipelines: Zstandard, que domina a fronteira de Pareto taxa de compressão vs velocidade na maioria dos níveis de qualidade e agora é o padrão em tar, módulos do kernel Linux, RocksDB e o formato de pacote npm. Para arquivamento de masters insubstituíveis: ainda use um wrapper que inclua checksum (xz com SHA-256, ou zip com CRC + SHA-256 externo) — a compressão em si não detecta corrupção de bits. Referência: RFC 8878 — Compressão Zstandard e o tipo de mídia application/zstd.
Frequently asked questions
- O que é compressão sem perdas?
- A compressão sem perdas reduz o tamanho do arquivo usando algoritmos (como DEFLATE, LZ77 ou codificação Huffman) que codificam redundâncias, permitindo que os dados originais sejam reconstruídos exatamente. Nenhuma informação é descartada.
- Quais são exemplos comuns de formatos sem perdas?
- PNG e WebP-lossless para imagens, FLAC e ALAC para áudio, ZIP e GZIP para arquivos e GIF (paleta limitada) são todos sem perdas. Descomprimí-los sempre produz dados bit a bit idênticos ao original.
- Qual é a diferença entre compressão sem perdas e com perdas?
- A compressão sem perdas preserva cada bit; a compressão com perdas descarta informações que o codificador considera imperceptíveis (quantização JPEG, mascaramento de frequência MP3) para atingir taxas de compressão mais altas. Arquivos com perdas não podem ser perfeitamente restaurados.
- Quando devo escolher sem perdas em vez de com perdas?
- Use sem perdas para ativos de origem, documentos, código e qualquer coisa que será editada ou recomprimida — a recodificação com perdas repetida acumula artefatos. Use com perdas para formatos de entrega (imagens web, streaming de áudio) onde o tamanho do arquivo importa mais que a fidelidade perfeita.
Related
Published May 15, 2026 · Last reviewed May 31, 2026