← Voltar ao blog

Como comprimir GIFs para ficar menor: 6 métodos, ordenados por perda de qualidade

Gravei uma demonstração de 5 segundos, exportei como GIF e veja o tamanho: 18 MB. Quer colar no documento, mandar no grupo ou no README? Falha no upload ou carrega meio dia. Como uma animação pode pesar mais que um vídeo? E como diminuir sem ficar com ruído?

Compartilhar

Gravei uma demonstração de 5 segundos, exportei como GIF e veja o tamanho: 18 MB.
Quer colar no documento, mandar no grupo ou no README? Falha no upload ou carrega meio dia.
Por que uma animação pesa mais que um vídeo? E como diminuir sem ficar com ruído na tela?


Primeiro, entenda: por que GIFs são tão grandes

O GIF é um formato de 1987, e algumas de suas características nativas o tornam "gordo":

  • Cada quadro é uma imagem completa. Não há compressão entre quadros como nos vídeos — exceto se você fizer otimização na exportação, 100 quadros são 100 imagens.
  • Algoritmo de compressão antigo. O GIF usa apenas compressão LZW sem perdas, que é boa para "cores idênticas em sequência", mas falha com gradientes, fotos e texturas finas.
  • Máximo de 256 cores por quadro. Se não houver cores suficientes, a ferramenta de exportação usa "dithering" — pontos de cor ruidosa para simular a transição. Para o LZW, esses pontos são dados difíceis de comprimir.

Portanto, o tamanho de um GIF depende basicamente de: tamanho × número de quadros × quão "quebrado" é cada quadro. Abaixo estão os métodos que atuam nessas três variáveis.

Seis métodos, ordenados por perda de qualidade

1. Otimização de quadros: apenas salve a parte que mudou (sem perdas)

Muitas ferramentas de gravação de tela e software de design exportam GIFs salvando a imagem inteira em cada quadro. Mas em uma demonstração, geralmente apenas o mouse e uma pequena área se movem.

A otimização de quadros faz: em cada quadro, mantenha apenas a área retangular que mudou em relação ao anterior, usando pixels transparentes para o que não mudou. Os pixels transparentes formam uma área contínua, facilitando a compressão LZW.

A imagem não muda pixel a pixel, o efeito de animação é exatamente o mesmo, apenas o modo de armazenamento é mais inteligente. Para GIFs com "fundo estático e movimento local" (gravação de tela, demonstrações de UI, memes), essa etapa economiza bastante.

2. LZW com perdas: "faça uma concessão" no algoritmo de compressão (visualmente sem perdas)

Esta é a ideia do parâmetro --lossy do gifsicle: durante a codificação, permite uma pequena variação de cor, fazendo com que mais pixels sejam tratados como "a mesma cor" e a eficiência do LZW aumenta drasticamente.

Sua característica é: não reduz o número de cores, não altera o tamanho, não toca nos quadros; o custo é a aparecimento de leve granulação na imagem. Quanto maior o valor, maior a economia e mais visível a granulação. Em uso leve (como --lossy=30~40), é difícil perceber a distância normal de leitura.

3. Redução de cores: de 256 para 128 ou 64

Reduzir a paleta de cores de 256 para 128 ou 64 faz cada pixel precisar de menos informação, aumentando a eficiência de compressão.

Para ilustrações de estilo flat, ícones animados, gravações de UI, as cores já são poucas, reduzir não causa perda; mas para fotos e imagens com muitos gradientes, ocorrem faixas de cor e manchas visíveis.

4. Redução de quadros: diminuir a taxa de quadros

Muitos GIFs são exportados em 30 fps ou 60 fps, mas o GIF não lida bem com altas taxas. Em muitos cenários, 10~15 fps já é suficiente.

Cortar a taxa de metade geralmente reduz o tamanho quase pela metade. O custo é a animação não ficar tão suave — não afeta muito demonstrações de operação, mas pode ser notável em animações que precisam de fluidez.

5. Reduzir tamanho

O tamanho é basicamente proporcional ao número de pixels: reduzir a largura e altura pela metade reduz os pixels para um quarto.

Gravações feitas em telas Retina com largura original de mais de 2000 pixels geralmente só são exibidas em 600~800 pixels. Exportar no tamanho de exibição real geralmente é o passo com maior benefício. O custo é ficar mais borrado ao ampliar; cuidado com a legibilidade em textos.

6. Mudar de formato: GIF para vídeo ou WebP

Se a plataforma permitir, a maneira mais radical é não usar GIF:

  • MP4 / WebM: O vídeo moderno usa compressão entre quadros, e o mesmo conteúdo geralmente pesa uma fração do GIF. Em páginas, você pode criar o mesmo efeito com <video autoplay loop muted playsinline>.
  • WebP dinâmico / APNG: Suporta mais cores e melhor compressão, e navegadores modernos conseguem reproduzir.

O custo é a compatibilidade: muitos aplicativos de chat, fóruns, ferramentas de documentos e clientes de e-mail só aceitam GIF, então mudar de formato pode fazer o arquivo não aparecer ou não reproduzir automaticamente.


Tabela para ver os compromissos

Método Impacto na Qualidade Ideal Para Não Ideal Para
Otimização de quadros Nenhuma, pixels não mudam Todos os GIFs, especialmente gravações e animações locais — (deveria ser feito sempre)
LZW com perdas (leve) Granulação muito leve A maioria dos GIFs Pixel art extremamente sensível a granulação
Redução de cores Faixas de cor em gradientes Ilustrações flat, ícones, UI Fotos, imagens com muitos gradientes
Redução de quadros Animação fica menos suave Demonstrações de operação, animações estáticas Animações que exigem fluidez
Reduzir tamanho Detalhes diminuem Imagens claramente maiores que o tamanho de exibição Conteúdo com texto pequeno para ler
Mudar de formato Geralmente melhora Páginas web, plataformas sob seu controle Plataformas que só aceitam GIF

A lógica da ordem é: faça primeiro sem perdas ou quase sem perdas, depois reduza conforme necessário. Se os dois primeiros passos já deixarem o arquivo pequeno, não há necessidade de sacrificar cores, quadros ou tamanho.


Os dois primeiros passos, ImgZilla pode fazer em lote para você

Se você tem vários GIFs — coleções de memes, animações em documentos, diretórios de materiais de site — ajustar parâmetros um por um em ferramentas online é cansativo.

O ImgZilla é uma ferramenta de compressão de imagem para macOS que usa exatamente as duas primeiras categorias da tabela acima:

  • Baseado no gifsicle: aplica primeiro a otimização máxima de quadros (equivalente a -O3) e depois somar leve LZW com perdas (equivalente a --lossy=40).
  • Não reduz cores, não tira quadros, não altera tamanho nem configurações de loop. A animação continua a mesma, velocidade e duração não mudam, apenas o arquivo fica menor.
  • Compressão no local: nome, caminho e formato não mudam. O demo.gif usado em documentos, páginas ou Markdown continua sendo demo.gif após a compressão, sem alterar nenhum link.
  • Arraste uma pasta inteira: varre subdiretórios recursivamente, processando GIFs junto com JPG, PNG, WebP e outros.
  • Não força compressão se não precisar: arquivos já otimizados ou com taxa de compressão abaixo de 0,4% são marcados como "já mínimo" e preservados, sem consumir o limite gratuito.
  • Original vai para a lixeira por padrão: se não gostar do resultado, clique direito em "Restaurar" para voltar ao original.
  • Execução local: nenhum dado é enviado para servidores, sem limites de tamanho ou quantidade que aparecem em ferramentas online — mesmo GIFs de gravação de tela de dezenas de MB são processados normalmente.

Quanto economizar depende de como o GIF foi originalmente exportado. GIFs de gravação sem otimização de quadros e com muita parte estática economizam mais; GIFs já processados por ferramentas profissionais podem ter pouco espaço restante, ou até serem marcados como "já mínimo" — isso é normal.

O que o ImgZilla não faz

Para "manter a aparência da animação igual", o ImgZilla não fará os passos 3~6 por você. Se, após os dois primeiros passos, o arquivo ainda for muito grande e você precisar respeitar um limite específico, você decide o que sacrificar:

bash

Com gifsicle em linha de comando: para 128 cores, largura 640, compressão mais forte

gifsicle -O3 --lossy=80 --colors 128 --resize-width 640 input.gif -o output.gif

Converter GIF para MP4 com ffmpeg (geralmente bem menor)

ffmpeg -i input.gif -movflags +faststart -pix_fmt yuv420p
-vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4

Operações como cortar quadros ou duração exigem seleção frame a frame; ferramentas online como ezgif são mais intuitivas.


Um hábito melhor: não exporte GIFs grandes na origem

Três dicas finais para evitar comprimir muitas vezes no futuro:

  1. Antes de gravar, reduza a janela e grave apenas a área necessária, não a tela Retina inteira.
  2. Na exportação, escolha 10~15 fps; a maioria das demonstrações já é suficiente.
  3. Depois de exportar, comprima rápido — faça a otimização de quadros e leve LZW com perdas; isso não requer julgamento e é ideal para processamento em lote.

O GIF é um formato antigo, mas ainda é o maior denominador comum para "reproduzir automaticamente em qualquer lugar". Em vez de debater se deve abandoná-lo, faça cada GIF ocupar apenas o espaço que deveria.

O ImgZilla atualmente suporta apenas macOS (12.3 ou superior) e pode ser baixado na Mac App Store. A versão gratuita comprime 10 imagens por dia; apenas a compressão bem-sucedida conta para o limite — arraste uma pasta cheia de GIFs para ver o quanto economiza.

Quer imagens menores e mais rápidas?

Baixe o ImgZilla e comprima localmente — suas imagens nunca saem do seu Mac.