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.

Comparar dois textos linha a linha

Esta é a ferramenta a que se recorre quando se quer estabelecer o que mudou num arquivo de configuração, ou onde um escrito foi revisto. Ela confronta dois textos linha a linha e marca em cores distintas as linhas acrescentadas e as suprimidas. Tudo é calculado dentro do navegador, então nada do que você colar sai do seu equipamento.

**Convém saber, ao ler o resultado, que um algoritmo de diferenças procura a sequência de edições mais curta.** Por isso **aquilo que uma pessoa vê como "este parágrafo desceu" a máquina exprime como uma supressão emparelhada com uma inclusão.** Não existe notação alguma para o movimento como tal. O outro ponto é que a comparação corre por linhas, de modo que **uma linha que difere num único caractere é relatada como alterada por inteiro.** O caso mais desconcertante aqui é uma diferença nos finais de linha ou nos espaços finais, que pode marcar como alterada cada linha embora nada pareça diferente. Quando uma diferença sai improvavelmente grande, é disso que se deve suspeitar primeiro.

Como se usa

  1. Cole o original em A Ponha o conteúdo tal como estava antes da mudança.
  2. Cole a revisão em B Ponha o conteúdo tal como ficou depois da mudança.
  3. Leia as diferenças coloridas **As linhas acrescentadas e as suprimidas aparecem em cores distintas.**
  4. Suspeite dos finais de linha se a diferença for enorme **Uma diferença apenas nos finais de linha ou nos espaços finais marca como alterada cada linha.**

Dicas para aproveitar melhor

  • 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.

Quando é útil

Revisar uma mudança num arquivo de configuração

Antes que vá para produção você pode ver que só mudou aquilo que pretendia mudar.

Cotejar o resultado de uma revisão

**Confrontar um rascunho com a sua reescrita deixa seguir de relance por onde passou a mão.**

Revisar sem Git

Os arquivos que nunca estiveram sob controle de versão podem igualmente ser comparados bastando colá-los.

Confirmar que uma saída é reproduzível

Compare os resultados de executar duas vezes o mesmo processo e confirme que nada diverge.

Termos das diferenças

Linha acrescentada
Uma linha presente só em B.
Linha suprimida
Uma linha presente só em A. **Uma linha que apenas se moveu também aflora como uma supressão emparelhada com uma inclusão.**
Comparação por linhas
Uma comparação que trata cada linha como uma unidade. **Uma diferença de um caractere marca a linha inteira como alterada.**
Final de linha
O caractere que marca o fim de uma linha: CRLF no Windows, LF nos sistemas tipo Unix. **Uma diferença aqui pode aparecer como se todas as linhas diferissem.**
Bloco
Um só trecho dentro de uma diferença onde as mudanças se agrupam.
Contexto
As linhas sem mudança mostradas acima e abaixo de uma alterada, incluídas para situar melhor a posição.

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.
Tool-kun

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.