Abra qualquer arquivo .jpg em um editor hexadecimal. Os primeiros dois bytes:
FF D8
Esse é o marcador de Início da Imagem (Start of Image). Todo arquivo JPEG começa com ele. Todo decodificador JPEG na Terra procura por ele. Os bytes seguintes dizem ao decodificador qual sabor de JPEG é esse, qual espaço de cor esperar e onde os dados de pixel começam. O formato é mais antigo que o navegador web, mas ainda carrega aproximadamente 57% de todas as imagens servidas na web moderna, segundo o Web Almanac de 2025.
A Crise de Armazenamento que Criou o JPEG
Em 1986, uma imagem em escala de cinza raw de 640 × 480 consumia 307 KB de espaço em disco. Uma imagem colorida na mesma resolução precisava de 921 KB. Num época em que um disco rígido de 20 MB custava centenas de dólares e disquetes de 1,44 MB eram o meio de troca padrão, uma única foto descomprimida podia encher dois terços de um disco.
A necessidade era óbvia: um formato de compressão padrão para imagens de tom contínuo — fotografias, não arte em linha. Vários grupos trabalhavam no problema. O Joint Photographic Experts Group, formado em 1986 pela ISO/IEC e ITU-T, fundiu as melhores ideias em um único rascunho. Após seis anos de refinamento, o padrão foi publicado em 1992 como ISO/IEC 10918-1.
O JPEG nunca foi destinado a ser o único formato de imagem. Foi projetado para um único trabalho: tornar as fotografias pequenas o suficiente para armazenar e transmitir. Ele faz esse trabalho descartando informação numa ordem muito específica.
Por que o JPEG Comprime Tão Bem
A compressão JPEG é um pipeline, não um único algoritmo. Cada estágio remove dados que o sistema visual humano tem menos probabilidade de sentir falta.
1. Conversão de Espaço de Cor (RGB → YCbCr)
Sua tela exibe RGB. O JPEG armazena YCbCr. O canal Y carrega a luminância (brilho). Cb e Cr carregam a crominância (diferença de azul e diferença de vermelho). Isso importa porque o olho humano tem cerca de 2,5 milhões de células de cone sintonizadas para o brilho e apenas 100.000 sintonizadas para a cor. Nós vemos detalhes de luminância muito melhor do que detalhes de cor.
2. Subamostragem de Croma (Chroma Subsampling)
A maioria dos JPEGs usa subamostragem 4:2:0. Para cada 4 amostras de luminância, há 1 amostra Cb e 1 amostra Cr. Isso significa que os canais de croma são armazenados em um quarto da resolução do canal de luma. Para uma imagem de 4000 × 3000, o plano Y está em resolução completa. Os planos Cb e Cr estão em 2000 × 1500 cada. Você acaba de cortar os dados raw em aproximadamente 50% antes mesmo de qualquer compressão real começar, e a maioria dos espectadores nunca percebe.
3. A Transformada Discreta de Cosseno (DCT)
A imagem é dividida em blocos de 8 × 8 pixels. Cada bloco passa por uma DCT, que converte dados espaciais (valores de pixel) em dados de frequência (quão rápido os valores mudam no bloco). O resultado é uma matriz de 8 × 8 de coeficientes. O valor no canto superior esquerdo é o coeficiente DC — o brilho médio do bloco. Os outros 63 são coeficientes AC representando detalhes de alta frequência cada vez maiores.
Coeficientes de alta frequência codificam textura fina: cabelo, grama, ruído. Coeficientes de baixa frequência codificam formas amplas: céus, paredes, tons de pele.
4. Quantização
É aqui que acontece a perda. O JPEG aplica uma tabela de quantização a cada bloco DCT. A tabela é uma segunda matriz de 8 × 8 de divisores. Cada coeficiente DCT é dividido pelo seu quantizador correspondente e arredondado para o inteiro mais próximo.
A tabela de quantização padrão atinge os coeficientes de alta frequência com mais força:
16 11 10 16 24 40 51 61
12 12 14 19 26 58 60 55
14 13 16 24 40 57 69 56
14 17 22 29 51 87 80 62
18 22 37 56 68 109 103 77
24 35 55 64 81 104 113 92
49 64 78 87 103 121 120 101
72 92 95 98 112 100 103 99
Um coeficiente de alta frequência de, digamos, 7 é dividido por 121 e arredondado para 0. Ele se foi. Irreversível. O decodificador nunca o vê. Isso é compressão com perda (lossy): os dados são destruídos, não apenas re-codificados.
Na qualidade 90, os quantizadores são divididos por um fator de escala menor. Na qualidade 50, o fator de escala é maior. Mais coeficientes zeram. O arquivo fica menor. A imagem fica mais suave.
5. Codificação Entrópica (Entropy Coding)
Após a quantização, os coeficientes restantes são escaneados em zigue-zague, codificados por comprimento de corrida (run-length encoded) e comprimidos com codificação de Huffman. Este estágio é sem perda (lossless). Ele apenas empacota os dados já destruídos de forma mais eficiente.
O resultado: uma imagem RGB descomprimida de 12 MP tem 36 MB. Salve-a como JPEG qualidade 90 com subamostragem 4:2:0 e ela cai para ~3,5 MB. Isso é uma redução de 10:1 com perda de qualidade visível apenas sob ampliação.
Quanto com Perda Ele É, Realmente?
O dano não é distribuído uniformemente.
| Qualidade | Tamanho típico (12 MP) | Impacto visual |
|---|---|---|
| 95+ | ~8 MB | Quase invisível; preferido para arquivamento |
| 90 | ~3,5 MB | Suavização menor; padrão para câmeras |
| 75 | ~1,8 MB | Desfoque visível em detalhes finos; padrão web |
| 50 | ~1,0 MB | Artefatos de blocagem óbvios em zoom de 100% |
| 30 | ~600 KB | Banding de cor, ruído de mosquito, impraticável |
Três artefatos distintos aparecem à medida que a qualidade cai:
- Blocagem: Bordas de grade 8 × 8 visíveis, especialmente em gradientes suaves como céus.
- Ringing: Halos oscilantes ao redor de bordas de alto contraste (texto ao lado de fundo).
- Sangramento de cor: A subamostragem de croma borra a cor através de limites nítidos.
O verdadeiro assassino é a perda de geração (generation loss). Abra um JPEG, edite-o, salve como JPEG novamente. Cada salvamento re-executa o pipeline inteiro: RGB → YCbCr → subamostragem → DCT → quantização. Os erros de arredondamento se acumulam. Após 10 gerações, uma imagem pode parecer que foi pintada em aquarela. Após 50, é irreconhecível.
O Desvio para o Verde e Outras Quirks de Re-compressão
Re-salve um JPEG vezes suficientes e você pode notar a temperatura de cor derivando. Algumas imagens adquirem uma sutil tonalidade verde. Outras derivam para o magenta. A razão está enterrada nos canais de croma.
O JPEG armazena Cb e Cr em resolução reduzida e os quantiza agressivamente. Cada salvamento introduz erro de arredondamento em ambos os canais. A conversão de volta para RGB usa esta matriz:
R = Y + 1.402 × (Cr - 128)
G = Y - 0.344136 × (Cb - 128) - 0.714136 × (Cr - 128)
B = Y + 1.772 × (Cb - 128)
Note que o verde é computado a partir de Cb e Cr. Quando a quantização repetida empurra Cb para cima e Cr para baixo por mesmo um único passo de quantização, o canal G deriva. Um viés positivo em Cb empurra o verde para baixo. Um viés negativo em Cr empurra o verde para cima. A interação não é simétrica porque os coeficientes -0.344136 e -0.714136 têm magnitudes diferentes. O resultado: uma lenta acumulação de verde em algumas regiões da imagem, especialmente onde os valores de croma originais já estavam próximos dos limites de quantização.
Isso não é um efeito garantido. Depende das tabelas de quantização do codificador, do modo de subamostragem e do conteúdo da imagem. Mas é real, reproduzível, e uma razão pela qual fluxos de trabalho profissionais evitam re-salvar JPEGs.
Se o JPEG É Tão Falho, Por que Tudo o Usa?
O JPEG não é popular porque é perfeito. É popular porque é suficiente e universal.
- Sem bloqueio de patentes: A patente base do JPEG (detida pela Forgent Networks) expirou em 2006. O formato é livre de royalties.
- Decodificação em hardware: Toda câmera, telefone, impressora e navegador tem um decodificador JPEG em silício ou C altamente otimizado. Quase não custa nada renderizar.
- Bom o suficiente: Para mídia social, sites de notícias e anexos de e-mail, um JPEG de qualidade 75 é indistinguível da fonte numa tela de telefone.
- Inércia do ecossistema: Sistemas de Gerenciamento de Conteúdo, CDNs, bibliotecas de imagem e arquivos legados todos falam JPEG. Substituí-los requer mais do que um formato melhor. Requer um formato melhor mais uma razão para migrar petabytes de ativos existentes.
Os Formatos que Deveriam Ter Vencido
Vários formatos tentaram destronar o JPEG. Nenhum conseguiu completamente.
| Formato | Lossy | Lossless | Transparência | Animação | Profundidade máxima | Vantagem principal |
|---|---|---|---|---|---|---|
| JPEG | Sim | Não | Não | Não | 8-bit | Suporte universal |
| PNG | Não | Sim | Sim | Não | 16-bit | Lossless perfeito, alpha |
| WebP | Sim | Sim | Sim | Sim | 8-bit | 25–35% menor que JPEG, nativo no navegador |
| HEIC | Sim | Sim | Sim | Sim | 16-bit | ~50% menor que JPEG, padrão da Apple |
| AVIF | Sim | Sim | Sim | Sim | 12-bit | Melhor compressão hoje, livre de royalties |
| JPEG XL | Sim | Sim | Sim | Sim | 32-bit | Recompressão lossless de JPEG, decodificação progressiva |
PNG resolveu o problema lossless mas produz arquivos 5–10× maiores que o JPEG para fotos. Ele domina screenshots, ativos de UI e gráficos.
WebP (Google, 2010) supera o JPEG em tamanho e adiciona transparência e animação. Agora vem em todos os principais navegadores. O Web Almanac de 2025 coloca o WebP em 11% das imagens LCP, contra 7% em 2024. É o caminho de upgrade seguro hoje.
HEIC (Apple, 2017) usa compressão HEVC dentro de um contêiner ISOBMFF. É ~40–50% menor que o JPEG e armazena múltiplas imagens por arquivo. Domina o ecossistema Apple e estagna em todo o lado por causa dos pools de patentes HEVC.
AVIF (AOM, 2019) deriva do vídeo AV1. Ele alcança as melhores taxas de compressão de qualquer formato amplamente suportado — aproximadamente 30% menor que o WebP em qualidade equivalente. A desvantagem é a velocidade de decodificação. Imagens AVIF podem levar 2–3× mais tempo para renderizar que JPEG em dispositivos móveis, consumindo bateria e atrasando o Largest Contentful Paint.
JPEG XL (ISO/IEC 18181, 2021) é tecnicamente superior a todos eles. Comprime 50–60% menor que o JPEG. Decodifica rápido. Suporta decodificação progressiva: uma imagem utilizável aparece após baixar apenas ~1% do arquivo. Mais importante, pode recomprimir JPEGs existentes de forma lossless para ~20% de economia de tamanho com recuperação bit-a-bit do original. Nenhum outro formato pode fazer isso.
Onde Estamos Agora
O JPEG XL teve uma infância difícil. O Google adicionou suporte experimental ao Chrome em 2021, depois removeu-o em 31 de outubro de 2022 — a "decisão de Halloween". A razão declarada: benefício incremental insuficiente sobre formatos existentes. A reação foi imediata. O issue do Chromium tornou-se o segundo mais estrelado na história do projeto. O Google foi acusado de proteger o AVIF, um formato ligado à Alliance for Open Media que o Google co-fundou.
No final de 2025, o Chromium reverteu a decisão. Um novo decodificador em Rust (jxl-rs) entrou no Chrome Canary. O Chrome 145, lançado em fevereiro de 2026, enviou suporte a JPEG XL atrás de uma flag. O Safari suporta desde 2023. O Firefox Nightly está integrando o mesmo decodificador Rust. O JPEG XL ainda não está habilitado por padrão, mas está de volta na base de código.
O AVIF, entretanto, é a escolha pragmática para 2026. O suporte do navegador é amplo. Os codificadores estão melhorando. A Cloudinary e a Cloudflare servem AVIF automaticamente via negociação de cabeçalho Accept. A página mediana servindo AVIF ou WebP mostra 81% de boas taxas LCP versus 64% para páginas apenas JPEG, segundo dados do CoreDash.
A Conclusão
O JPEG é um compromisso de 33 anos. Ele descarta resolução de cor, textura de alta frequência e precisão numérica em troca de tamanhos de arquivo que tornaram a fotografia digital viável nos anos 1990. Os artefatos são bem compreendidos. A perda de geração é real. O desvio para o verde acontece.
Ainda assim, o JPEG persiste pela mesma razão que o QWERTY persiste: o custo de mudança é maior do que a dor de ficar.
O caminho prático para a frente é em camadas:
- Mantenha masters de alta qualidade. Arquive originais como PNG, TIFF ou JPEG qualidade 95+. Nunca re-edite a partir de um export web de qualidade 75.
- Sirva formatos modernos dinamicamente. Use uma CDN ou serviço de imagem que negocie AVIF, WebP ou JPEG XL com base no cabeçalho
Acceptdo navegador. Armazene um master; deixe a borda converter sob demanda. - Não re-codifique JPEGs em lote. Cada geração destrói dados. Se precisar de arquivos menores, re-codifique a partir do master, não a partir de outro JPEG.
O JPEG não morrerá de repente. Ele desvanecerá da mesma forma que o GIF desvaneceu: ainda suportado em toda parte, ainda abrindo em todo visualizador, mas cada vez mais superado por formatos que fazem o mesmo trabalho com menos bytes e menos artefatos. A diferença é que desta vez, os formatos de substituição estão realmente vencendo.


