PNG ou JPG? A regra de dez anos que eu uso para decidir
Dov Azencot
@DovAzencotO PNG e o JPG são as duas respostas padrão para "salvar esta imagem" há mais de vinte anos, e a maioria das pessoas escolhe entre eles por acidente — o que a janela de exportação trouxe por padrão. Isso funciona até o dia em que você manda por e-mail um print de 9 MB para alguém, ou publica um logo com um halo cinza feio em volta, e de repente a escolha importa.
Acontece o seguinte: a decisão é genuinamente simples. Ela se resume a uma pergunta que eu faço há cerca de dez anos, e ela nunca me decepcionou uma vez sequer.
A única pergunta
Esta imagem é feita de bordas ou feita de luz?
É isso. Texto, logos, ícones, prints, diagramas, line art, qualquer coisa com limites duros e regiões chapadas de cor — isso são bordas. Fotografias, degradês, qualquer coisa com tom contínuo e suave e milhares de variações sutis de cor — isso é luz.
Bordas querem PNG. Luz quer JPG. Quase tudo decorre daí.
Por que bordas querem PNG
O PNG é sem perdas. Cada pixel que você salva volta exatamente igual, para sempre, não importa quantas vezes você reabra o arquivo. Ele comprime encontrando sequências de cor idêntica, que é exatamente do que as imagens baseadas em borda são cheias — um botão sólido, um fundo branco, uma linha preta. O PNG devora isso e continua afiadíssimo.
Ele também tem um canal alfa, então pode ser genuinamente transparente. É por isso que todo logo que você quer colocar sobre um fundo colorido deveria ser PNG. O JPG não tem transparência nenhuma — ele preenche essas áreas com branco, que é de onde vem o halo feio.
O modo de falha são as fotografias. Salve uma foto como PNG e ele registra obedientemente cada partícula de ruído do sensor e cada microdegradê em fidelidade total, e o arquivo incha. O PNG não é um desperdício por ser ruim. Ele é um desperdício por ser honesto sobre detalhes que seu olho perdoaria com prazer.
Por que luz quer JPG
O JPG é com perdas. Ele joga fora informação que seu olho tem dificuldade de perceber — variação fina de cor, detalhe de alta frequência — e faz isso extraordinariamente bem em fotografias. É exatamente o tipo de coisa que uma foto tem de sobra. O resultado é um arquivo com uma fração do tamanho, e você não consegue ver o que falta.
Aponte o JPG para bordas, porém, e ele desmorona. Ele espalha artefatos borrados em volta de limites duros — em volta de texto, especialmente — porque bordas nítidas são justamente o detalhe de alta frequência que ele foi projetado para descartar. Um print de código em JPG parece levemente sujo em volta de cada letra. Não é o seu monitor. É o formato funcionando como projetado, na entrada errada.
A tabela de tamanho que encerra a discussão
As mesmas duas imagens de origem, salvas dos dois jeitos em ajustes sensatos:
| Imagem | Como PNG | Como JPG |
|---|---|---|
| Uma fotografia — 12 MP | ~14 MB | ~3 MB |
| Um print de interface com texto | ~600 KB | ~900 KB |
| Um logo chapado de duas cores | ~20 KB | ~85 KB |
Leia nas duas direções. A foto é quase 5x menor como JPG, sem perda visível. Mas o print e o logo ficam maiores como JPG — e ficariam piores também, com halo e borrão. O formato que é menor se inverte por completo dependendo do que está na imagem. Está aí a lição inteira em três linhas.
Os casos-limite (só existem dois que valem conhecer)
Transparência obriga PNG. Se qualquer parte da imagem precisa ser transparente, o JPG está fora de questão independentemente do conteúdo, porque ele fisicamente não consegue guardar um canal alfa. Até uma foto recortada sobre um fundo transparente tem que ser PNG (ou WebP).
Texto sobre foto é uma decisão de bom senso. Uma foto com uma legenda embutida é parte luz, parte borda. Eu vou de JPG se for majoritariamente foto e aceito um texto levemente mole, ou de PNG se o texto precisa continuar nítido e eu posso arcar com o tamanho. Não há vencedor limpo; você escolhe qual defeito prefere ter.
Quando você já tem o formato errado
Na maior parte do tempo você não está escolhendo na exportação — você está preso a um arquivo que alguém já salvou errado. Um fotógrafo te entregou PNGs de 14 MB. Um designer mandou um logo como JPG com halo. Isso é só uma conversão.
Ir na direção esperta — PNG para JPG para uma foto salva pesada demais — é um ganho claro, e roda direto no seu navegador aqui, então o arquivo nunca sai do seu dispositivo. Ir no outro sentido — JPG para PNG — é honesto, mas limitado: torna o arquivo sem perdas daqui para a frente, que é o que você quer antes de editar, mas não consegue desfazer os artefatos que o JPG já assou dentro dele. Com perdas é uma porta de mão única. Converter para PNG não te leva de volta por ela; só impede que você perca mais alguma coisa.
Faça a única pergunta — bordas ou luz — e você vai acertar basicamente toda vez. Eu ainda a faço em cada exportação. Leva meio segundo e já me livrou de um bom tanto de halos cinza.
Artigos relacionados
Por que eu converto PNG para WebP (e a única vez em que não converto)
PNG é ótimo para editar e um desperdício para publicar. Aqui está o que o WebP realmente economiza, onde ele não muda nada e a única regra que eu nunca quebro.
Por que suas fotos do iPhone são HEIC (e quando vale mais virar JPG)
HEIC é um formato de verdade melhor que metade da web ainda não consegue abrir. Aqui está por que a Apple escolheu ele, o que você de fato perde ao converter para JPG e quando eu não me incomodo.
Como a conversão de imagens no navegador realmente funciona (e por que eu construí assim)
"Seus arquivos nunca saem do seu dispositivo" é uma arquitetura, não uma frase de marketing. Aqui está como o WASM faz a conversão bem no seu navegador, e o único limite real que ele tem.
Todos os artigos