O código desta página não rodou.

Abrir o index.html direto de uma pasta bloqueia os módulos de JavaScript, então não vai acontecer nada quando você escolher um GIF. Sirva a pasta por http:

powershell -ExecutionPolicy Bypass -File serve.ps1

Depois abra http://localhost:8080/.

Analisador de GIF — o que tem de verdade dentro de um GIF

Quadros, tempos, paletas e para onde foi cada byte.

Idioma: Português
Ver o código-fonte
Seus GIFs são processados no navegador. Sem envio para processamento.

O arquivo é aberto e desmontado pelo seu próprio navegador: a estrutura de blocos, a descompactação LZW e cada quadro desenhado nesta página acontecem neste computador. Do outro lado desta página não existe servidor nenhum para receber um arquivo, mesmo que algo aqui quisesse mandar.

Verificação ao vivo: verificando…

Offline: verificando…

Você não precisa confiar na nossa palavra. Abra as ferramentas do desenvolvedor, deixe a aba “Rede” à vista e analise um GIF. Nenhuma requisição leva uma imagem, uma miniatura ou um nome de arquivo. Ou então desligue a internet e analise um assim mesmo.

Escolha um GIF

Ver como Markdown

Como analisar um GIF

  1. Escolha um GIF. Arraste até o seletor ou procure na mão. O navegador lê direto do seu disco, e nesse meio-tempo nada sai daqui.
  2. Leia primeiro o resumo. O tamanho da tela, a quantidade de quadros, quanto tempo a animação diz que dura e quanto ela toca de verdade. Esses dois últimos divergem mais do que as pessoas esperam, e o motivo está na seção seguinte.
  3. Veja o que chama atenção. Cada linha ali é medida no seu arquivo: tempos que navegador nenhum vai respeitar, um bloco de repetição faltando, tabelas de cor que ninguém referencia, metadados maiores do que alguns quadros. Nada é um chute sobre o que você pretendia fazer.
  4. Veja para onde foram os bytes. Cada byte do arquivo está em exatamente uma linha, e as linhas somam o arquivo. Se a maior parte não estiver em “pixels compactados”, o resto da tabela diz onde ela está.
  5. Passe pelos quadros. Cada um mostra o tempo, o retângulo, o método de descarte e o tamanho dele. Alterne entre “a tela depois de cada quadro” e “só o que cada quadro guarda”: é no segundo que você vê se o arquivo está otimizado, porque um GIF bem feito guarda retângulos minúsculos e um mal feito guarda a imagem inteira toda vez.
  6. Leve o relatório se precisar. A análise inteira em texto puro, para colar numa mensagem ou guardar ao lado do arquivo. Ele é montado na própria página a partir do que já está na sua tela.

A versão longa

O que tem de verdade dentro de um GIF Quadros, atrasos, métodos de descarte e tabelas de cor explicados, por que os navegadores recusam os atrasos mais rápidos, e como descobrir para onde foi mesmo o tamanho de um GIF.

Perguntas

O meu GIF é enviado para algum lugar?

Não. O arquivo é lido, descompactado e desenhado pelo seu próprio navegador, no seu próprio hardware. Esta ferramenta não tem lado servidor, e a Content-Security-Policy da página lista todo endereço que ela pode contatar: nenhum é nosso. Tire da tomada e ela continua analisando GIFs.

Por que meu GIF toca mais devagar do que os tempos dizem?

Porque todo navegador se recusa a respeitar um tempo abaixo de dois centésimos de segundo e segura o quadro por um décimo no lugar. A regra foi escrita dentro do Netscape em 1996, para os globos giratórios e as placas de “em construção” da época, e foi copiada para todo navegador desde então; ninguém nunca tirou.

Então um GIF cujos quadros dizem todos 0,01 s não toca a 100 quadros por segundo. Toca a 10, de cinco a dez vezes mais devagar do que o programa que o fez pretendia. Esta página mostra os dois números, o que o arquivo diz e o que ele vai fazer de verdade, e marca os quadros afetados. O conserto, no programa que escreveu o arquivo, é escrever 0,02 em vez de 0,01.

O que quer dizer “descarte”?

O que deixar na tela quando o tempo de um quadro acaba, e é o campo que decide se uma animação fica certa ou borra.

Deixar como está quer dizer que o próximo quadro pinta por cima deste, que é o que você quer quando os quadros são opacos e se cobrem. Voltar ao fundo limpa antes o retângulo do quadro, que é do que a transparência precisa: sem isso, as partes vazadas do próximo quadro mostram o anterior por baixo. Restaurar o que estava embaixo devolve o que havia ali antes deste quadro desenhar, que é como se guarda um objeto pequeno se mexendo sobre um fundo parado. E não especificado quer dizer que o arquivo não falou nada, e todo visualizador trata isso como “deixar como está”.

Por que o meu GIF é tão grande?

A tabela “Para onde foram os bytes” responde isso para o seu arquivo específico em vez de responder em geral, e só existem algumas respostas possíveis.

Se quase tudo estiver em pixels compactados, o arquivo é simplesmente muita imagem: o GIF guarda cada quadro como pixels inteiros, sem compensação de movimento e sem botão de qualidade, então o tamanho é aproximadamente a área vezes a quantidade de quadros. Menos quadros, um tamanho menor ou menos cores são as únicas alavancas.

Se uma fatia grande estiver em tabelas de cor, o arquivo está escrevendo uma paleta por quadro, a 768 bytes cada. Se uma fatia grande estiver em metadados, algum editor deixou um pacote XMP para trás, e ele pode sair sem encostar na imagem. E se todos os quadros cobrem a tela inteira, o codificador nunca descobriu qual parte mudou de verdade, e em qualquer coisa filmada ou gravada isso é quase o arquivo todo.

Qual é a diferença entre as duas visões de quadro?

A tela depois de cada quadro é o que um visualizador mostra naquele momento: este quadro desenhado por cima do que os anteriores deixaram. Só o que cada quadro guarda é o retângulo que o arquivo realmente tem para aquele quadro, sozinho, sem nada embaixo.

A segunda é a interessante. Um GIF pode guardar de um quadro só a parte da imagem que mudou, e é por isso que a gravação de tela de uma janela quase parada pode ser pequena. Se todo quadro do seu arquivo é a tela inteira, ninguém fez esse trabalho, e olhando a animação você não descobre: só olhando o que está guardado.

Diz que o meu arquivo tem um comentário ou XMP. O que é isso?

Texto que viaja junto com a imagem e que visualizador nenhum desenha. Um bloco de comentário costuma ser o nome do programa que escreveu o arquivo. Um pacote XMP é o XML que um editor de imagens escreve para registrar o que fez, e pode levar o histórico de edições, a versão do programa e às vezes o nome do autor.

Esta página imprime os dois por inteiro, porque a pergunta interessante sobre metadados é o que eles dizem, não o fato de existirem. São mostrados a você e a mais ninguém: nada neste repositório lê nada disso para alguém.

Ele abre um GIF quebrado?

Ele tenta, e avisa onde desistiu. Um arquivo que termina no meio de um bloco, que tem um byte onde deveria haver um marcador, ou que carrega um quadro cujos dados compactados acabam cedo demais ainda vai mostrar tudo o que dava para ler até ali, com o problema nomeado no topo. Esse é justamente o caso em que mais se quer um analisador, então jogar o arquivo inteiro fora por causa de um byte ruim seria o comportamento errado.

Ele altera o meu arquivo?

Não. Esta ferramenta só lê. Não existe arquivo de saída, nem recodificação, nem botão aqui que escreva um GIF: a única coisa que dá para baixar é uma cópia da análise em texto puro. O seu original continua intocado no seu disco, que é também a resposta honesta para o que acontece se você fechar a aba.

É grátis, e preciso de conta?

É grátis, sem conta, início de sessão ou período de teste. A leitura do arquivo ainda depende da memória do seu dispositivo. O desenho para ao atingir 300 milhões de pixels decodificados ou uma estimativa de 512 MiB de buffers desta página; não é um limite de memória total do navegador. Após a parada ou o cancelamento, os cabeçalhos, a contagem de bytes e os tempos continuam disponíveis. Os quadros não desenhados são descritos pelos cabeçalhos; os totais completos de uso de pixels e a prévia nativa não ficam disponíveis. A análise inicial e as operações nativas de memória ou canvas não podem ser interrompidas durante uma chamada. O site tem publicidade; os anúncios não recebem informações sobre seu arquivo.

Funciona offline?

Funciona. Carregue a página uma vez, depois desligue a internet e ela continua funcionando. Esse é também o jeito mais simples de provar que nada está sendo enviado: uma ferramenta que mandasse o seu GIF embora para ser analisado pararia no instante em que você tirasse da tomada.