Comparação de diferenças de texto (Diff)

Compare dois blocos de texto linha por linha e veja as linhas adicionadas e removidas destacadas em cores. Útil para verificar alterações em arquivos de configuração, revisar documentos ou fazer revisão de código sem usar o Git. Todo o cálculo é feito no navegador; o conteúdo digitado nunca é enviado a um servidor.

Dicas

  • Cole a versão anterior e a posterior de um arquivo de configuração (.env, YAML, JSON etc.) para ver na hora quais linhas foram adicionadas ou removidas.
  • Mesmo sem ter o Git instalado, dá para fazer uma revisão de código simples ou revisar um documento apenas copiando e colando duas versões.
  • Uma linha que apenas mudou de posição é detectada como uma remoção mais uma adição, não como um "movimento" — vale lembrar disso ao interpretar o resultado.
  • Espaços, quebras de linha e maiúsculas/minúsculas são comparados de forma estrita, então uma linha que só mudou a indentação também aparecerá como alterada.
  • Ao comparar textos longos, colocar um parágrafo por linha antes de colar facilita ver as diferenças por parágrafo rapidamente.

Perguntas frequentes

Serve para identificar mudanças linha por linha em arquivos de configuração ou documentos, revisar código sem usar o Git, ou conferir as revisões de um contrato ou termos de uso — qualquer situação em que seja preciso ver o que mudou entre duas versões de texto simples.

A ferramenta de diferenças de CSV compara dados tabulares, casando linhas por uma coluna-chave e comparando célula por célula. Esta ferramenta compara texto livre linha por linha, sem noção de colunas, sendo mais indicada para arquivos de configuração ou textos corridos do que para tabelas.

A ferramenta de diferenças de JSON analisa a estrutura do JSON (objetos e arrays) e compara por chave. Esta ferramenta não analisa nenhuma estrutura: trata cada linha simplesmente como texto, por isso funciona com qualquer texto simples, não só JSON.

Linhas reordenadas não são detectadas como um "movimento". Em vez disso, aparecem como uma remoção na posição antiga e uma adição na nova posição. É o mesmo comportamento produzido pelo comando diff do Git e pela maioria dos algoritmos de diferença por linha.

Não. Todo o cálculo das diferenças é feito em JavaScript dentro do seu navegador, e o texto digitado nunca é transmitido a um servidor, por isso é seguro usar mesmo com conteúdo sensível.
ツールくん

Curiosidade — como o LCS (maior subsequência comum) calcula diferenças de texto

O algoritmo mais conhecido para detectar diferenças entre dois textos é o "algoritmo de diferenças de Myers", publicado na década de 1970 pelo cientista da computação Eugene Myers, da IBM. O comando `diff` dos principais sistemas de controle de versão, como Git e SVN, é baseado nessa família de algoritmos, detectando de forma eficiente linhas adicionadas e removidas. Esta ferramenta segue a mesma ideia, calculando a maior subsequência comum (LCS) para reduzir o resultado a um conjunto mínimo de mudanças.

A maior subsequência comum (LCS) é a sequência mais longa que aparece, na mesma ordem, em ambas as sequências comparadas — neste caso, a sequência de linhas. A diferença entre dois textos é obtida tratando toda linha que não faz parte dessa LCS como "removida" ou "adicionada"; quanto maior a LCS, menos mudanças aparecem na tela. Uma técnica chamada programação dinâmica (PD) torna esse cálculo viável mesmo para textos com muitas linhas.

Algoritmos de diferença têm uma limitação conhecida: quando uma linha apenas se move para outra posição, a maioria das implementações não detecta isso como um "movimento", mostrando-o como uma remoção junto com uma adição. É por isso que comparar textos cuja ordem de linhas foi muito embaralhada pode fazer a diferença parecer maior do que a mudança real. Conhecer essa característica ajuda a interpretar os resultados sem confusão.

→ Ver todas as curiosidades