Comparador de textos

Roda no seu navegador; nada é enviado

Compare duas versões de um texto linha a linha, com as palavras alteradas destacadas.

Original

Modified

Differences

Nothing to compare yet

Paste or open the original text on the left and the modified text on the right. Lines are matched as in diff and git; changed lines show which words changed.
Ready

O que é um diff de texto?

Um diff mostra como duas versões de um texto diferem: quais linhas foram removidas, quais foram adicionadas e quais continuaram iguais. É a ideia por trás do git diff, das ferramentas de code review e da função de comparar da maioria dos editores.

Esta ferramenta pareia as linhas do mesmo jeito que o diff e o git, com o algoritmo de Myers, que encontra o menor conjunto de linhas adicionadas e removidas. Uma linha editada aparece como uma linha removida ao lado da linha adicionada que a substituiu, e as palavras que mudaram dentro dela ficam destacadas.

No trabalho com APIs, um diff responde perguntas como o que mudou numa resposta desde ontem, por que o staging devolve algo diferente da produção, ou quais campos uma nova versão da API adicionou ou removeu. Antes, formate as duas respostas JSON do mesmo jeito, por exemplo com o formatador de JSON, para que só as mudanças reais apareçam.

Como usar esta ferramenta

  1. 1Cole ou abra a versão mais antiga em Original e a mais nova em Modified. Dá para arrastar um arquivo para qualquer um dos editores. Em Examples há três pares para testar.
  2. 2Veja o painel Differences: linhas removidas ficam em vermelho com −, linhas adicionadas em verde com +, e as palavras alteradas dentro de uma linha ficam destacadas. Alterne entre Side by side e Unified no cabeçalho do painel.
  3. 3Only changes recolhe trechos longos de linhas sem mudança, deixando três linhas em volta de cada mudança; clique numa linha recolhida para abri-la. Use F7 e Shift+F7, ou as setas, para pular entre as mudanças.
  4. 4Use Ignore para desconsiderar diferenças de espaços, maiúsculas e minúsculas ou fim de linha (CRLF contra LF). A barra de status avisa quando os textos diferem só no fim de linha.
  5. 5Copy patch ou Download patch entrega as mudanças como um diff unificado que o git apply e o patch aceitam. Swap troca os dois lados; Ctrl+Z desfaz um lado por vez, e desfaz o Clear também.

Solução de problemas

Todas as linhas aparecem como alteradas
Provavelmente os textos usam fins de linha diferentes (CRLF do Windows contra LF) ou indentação diferente. A barra de status informa os fins de linha; ative Ignore line endings ou Ignore whitespace.
Duas respostas JSON parecem totalmente diferentes
Provavelmente uma está minificada ou com outra indentação. Formate as duas com a mesma indentação no formatador de JSON e depois compare. A aba Compare dele também compara JSON por chave, ignorando a ordem das chaves.
A última linha aparece como alterada, mas parece igual
Um texto termina com quebra de linha e o outro não. As ferramentas de diff contam isso como mudança (o patch diz \ No newline at end of file). Ignore line endings deixa isso de fora.
Texto colado nunca mostra fim de linha CRLF
Os navegadores transformam em LF toda quebra de linha digitada ou colada num campo de texto, então o CRLF não sobrevive à colagem. Abra os arquivos com Open ou arrastando-os: a ferramenta compara os fins de linha como estão no disco.
Grande demais para comparar
Cada lado comporta até 50.000 linhas ou 5 milhões de caracteres. Para arquivos maiores, use git diff --no-index a.txt b.txt ou diff -u na linha de comando.

Perguntas frequentes

Por que uma linha alterada aparece como uma remoção e uma adição?

Diffs comparam linhas inteiras. Quando qualquer coisa muda numa linha, a linha antiga deixa de bater, então ela é listada como removida e a nova como adicionada, uma ao lado da outra. As palavras destacadas mostram o que mudou dentro da linha.

O patch segue as opções de Ignore?

Não. O patch sempre descreve as diferenças exatas, incluindo espaços, maiúsculas e minúsculas e fins de linha, para que o git apply e o patch consigam aplicá-lo. As opções de Ignore só mudam o que o painel Differences mostra.

O que significa "shown as replaced"?

Quando dois textos grandes quase não têm nada em comum, encontrar o menor diff pode demorar demais. Depois de uma quantidade fixa de trabalho, a ferramenta mostra o trecho restante como removido e adicionado por inteiro. O resultado continua sendo um diff correto, só que menos detalhado.

Meu texto é enviado para algum lugar?

Não. A comparação roda no seu navegador. Para sobreviver a um reload, o que você cola fica no session storage desta aba até você limpar ou fechar a aba. Copy link coloca a entrada no link depois do #, parte que os navegadores nunca enviam a um servidor, mas qualquer pessoa que receber o link consegue ler. Suas configurações, como o layout e as opções de Ignore, ficam salvas neste navegador.