O TextDiff é uma ferramenta diff on-line e gratuita que encontra as diferenças entre dois textos. Coloque lado a lado dois textos parecidos, mas não iguais — o rascunho e a revisão de um documento, o contrato enviado e o devolvido, a versão antiga e a nova de um código — e ele marca com cores quais linhas foram adicionadas, removidas ou modificadas e exatamente quais palavras ou caracteres mudaram dentro de cada linha.
Toda a comparação acontece dentro do navegador. O texto digitado e os arquivos abertos não são enviados a nenhum servidor, então você pode comparar até conteúdos que não devem sair da empresa, como documentos internos e contratos. O cálculo roda em um Web Worker, por isso a tela não trava mesmo com dezenas de milhares de linhas.
Ir para o comparador de textos
Principais recursos
Destaque por linha e dentro da linha
Primeiro encontra as linhas alteradas e depois destaca, dentro de cada uma, apenas as palavras, blocos ou caracteres que mudaram.
Visualização lado a lado ou unificada
Alterne entre a visualização lado a lado (side-by-side) e a unificada (unified), lida de cima para baixo como no git.
Opções para ignorar
Compare ignorando espaços no fim da linha, a quantidade de espaços, todos os espaços, maiúsculas/minúsculas ou linhas em branco.
Normalização de fim de linha
Trata como iguais as quebras de linha do Windows (CRLF) e do macOS/Linux (LF), além da presença ou ausência da quebra final.
Comparação de JSON com chaves ordenadas
Analisa os dois JSON, ordena as chaves dos objetos e padroniza a indentação antes de comparar. Diferenças apenas na ordem das chaves não contam como alteração.
Estatísticas e navegação
Mostra o número de linhas adicionadas, removidas e modificadas e a semelhança (%), e leva direto à alteração anterior ou seguinte.
Só alterações
Recolhe os trechos longos sem mudança e deixa só 3 linhas de contexto em volta de cada alteração. Clique em um trecho recolhido para expandi-lo.
Arrastar arquivos
Arraste arquivos .txt, .md, .json, .csv e de vários tipos de código para um campo, ou solte dois arquivos de uma vez para comparar na hora.
Exportar patch e HTML
Copie ou salve o resultado como texto unified diff (patch), ou copie-o como tabela HTML colorida para colar em e-mails e documentos.
Como usar
- Cole o texto de referência no campo da esquerda (Original) e o texto a comparar no da direita (Modificado). Você também pode arrastar um arquivo para o campo ou usar o botão Abrir acima dele.
- Com 'Comparar ao digitar' ativado, o resultado aparece assim que você para de digitar. Se estiver desativado, clique em [Comparar] ou pressione Ctrl+Enter.
- Se precisar, escolha ignorar espaços, maiúsculas/minúsculas ou linhas em branco, a unidade de comparação dentro da linha (palavra/bloco/caractere) e a ordenação de chaves JSON. Ao mudar uma opção, a comparação é refeita na hora.
- Na barra de resultados, escolha a visualização lado a lado ou unificada e navegue entre as alterações com os botões de seta (ou Alt+↑/↓).
- Para compartilhar, copie ou salve o patch, ou copie o resultado como HTML.
Opções de comparação
| Espaços: comparar como está | Espaços e tabulações contam como qualquer outro caractere. Basta uma diferença de indentação para a linha ser considerada diferente. |
|---|---|
| Espaços: ignorar espaços no fim da linha | Ignora apenas espaços e tabulações que sobram no fim da linha. Filtra diferenças causadas por editores que apagam ou deixam esses espaços automaticamente. (Semelhante ao -Z do GNU diff) |
| Espaços: ignorar quantidade de espaços | Um espaço ou vários contam como a mesma coisa. Mas ter espaço e não ter continuam sendo diferentes: 'a b' e 'a b' são iguais; 'a b' e 'ab' são diferentes. (diff -b) |
| Espaços: ignorar todos os espaços | Remove todos os espaços antes de comparar. Até 'a b' e 'ab' são considerados a mesma linha. (diff -w) |
| Dentro da linha: palavra | Marca as mudanças usando como unidade grupos de letras e números e cada símbolo. Ideal para código e textos com números. |
| Dentro da linha: bloco | Usa como unidade os trechos separados por espaços, incluindo a pontuação grudada neles. Deixa frases em linguagem natural mais fáceis de ler. |
| Dentro da linha: caractere | Compara caractere por caractere. Use para apontar com precisão mudanças de um ou dois caracteres, como valores, datas ou números de cláusulas. |
| Ignorar maiúsculas/minúsculas | Trata letras maiúsculas e minúsculas como iguais. |
| Ignorar linhas em branco | Exclui da comparação as linhas vazias ou só com espaços. Elas aparecem em cor apagada e não entram na contagem de alterações. (Semelhante ao diff -B) |
| Normalizar fim de linha | Trata CRLF, CR e LF como a mesma quebra de linha e ignora a presença ou ausência da quebra no fim do arquivo. Desativada, o CR no fim da linha aparece como ␍ e a última linha sem quebra aparece com ∅. |
| Ordenar chaves JSON | Analisa os dois lados como JSON, ordena as chaves dos objetos alfabeticamente e reescreve com indentação de 2 espaços antes de comparar. A ordem dos arrays não é alterada. Se a análise falhar, informa onde está o erro. |
As diferenças de fim de linha (como CRLF) só são comparadas com exatidão no texto carregado de um arquivo. No texto colado nas caixas, o navegador converte as quebras de linha em LF, então as diferenças de CR não aparecem.
Atalhos de teclado
Ctrl+Enter / ⌘+Enter | Comparar agora |
Alt+↓ / Alt+↑ | Ir para a próxima / anterior alteração |
n / p (fora dos campos de texto) | Ir para a próxima / anterior alteração |
Tab (dentro de um campo de texto) | Inserir um caractere de tabulação |
Seu texto não é enviado a lugar nenhum
O mecanismo de comparação é o JavaScript (diff-core.js) baixado junto com esta página, e os textos e arquivos são processados apenas na memória do navegador. O conteúdo digitado não é armazenado; o navegador lembra somente o tema e as opções escolhidas. Ao fechar a página, o conteúdo desaparece.
Perguntas frequentes
O texto que comparo fica salvo em algum servidor?
Não. A comparação é feita apenas por JavaScript dentro do navegador e o conteúdo não é enviado a nenhum servidor. Com a página já aberta, a comparação funciona até sem conexão com a internet.
Qual o tamanho máximo de texto que posso comparar?
Cada arquivo pode ter até 30 MB, e comparações de dezenas de milhares de linhas rodam em uma thread separada (Web Worker), sem travar a tela. Quando há muitíssimas diferenças, o resultado pode ser aproximado em vez de mínimo, para ganhar velocidade. Se o resultado passar de 4.000 linhas, mostramos primeiro só as partes alteradas.
Qual algoritmo é usado?
Para a comparação por linha usamos o algoritmo de diferenças O(ND) de Myers (1986), implementado na variante de espaço linear. Se o custo ficar alto demais, passamos a uma divisão aproximada, como faz o GNU diff. Dentro das linhas alteradas, o mesmo algoritmo compara de novo palavras, blocos ou caracteres.
Como se distingue 'modificada' de 'adicionada' e 'removida'?
Dentro de um trecho alterado, quando uma linha removida e uma adicionada têm conteúdo parecido o bastante, elas são pareadas como uma única linha corrigida e contadas como 'modificada'. As linhas sem par contam como 'adicionada' ou 'removida'.
Como a semelhança (%) é calculada?
É a proporção de caracteres que não mudaram em relação ao total de caracteres dos dois lados (incluindo quebras de linha). Linhas iguais contam inteiras; nas linhas modificadas, contam só as partes que continuaram iguais.
Qual a diferença entre ignorar a quantidade de espaços e ignorar todos os espaços?
Ignorar a quantidade de espaços desconsidera só quantos espaços há, então 'a b' e 'ab' continuam diferentes. Ignorar todos os espaços remove todos antes de comparar, então os dois ficam iguais. Em código em que a indentação tem significado, como Python, use a segunda opção com cuidado.
Posso aplicar um patch gerado com opções de ignorar ativadas?
O patch é gerado a partir das diferenças mostradas na tela, e as linhas de contexto vêm do original. Com opções de ignorar ativadas, as diferenças ignoradas ficam de fora do patch; para reproduzir o arquivo exatamente, desative todas as opções antes de gerar o patch.
Dá para comparar documentos do Word, PDF e afins?
Os arquivos em si não podem ser lidos. Copie o texto do documento e cole nos campos para comparar. Tabelas, notas de rodapé e formatação podem se perder no processo. Veja as dicas no guia de comparação de documentos.
Funciona no celular?
Sim. Em telas estreitas os campos ficam empilhados e o resultado começa na visualização unificada. Você também pode mudar para lado a lado.
Guias
- Como o diff encontra diferenças — LCS e o algoritmo de Myers
- Myers, Patience e Histogram — comparação de algoritmos de diff
- Como ler um unified diff (patch) — guia para revisão de código
- Diferenças entre as opções de ignorar espaços — diff -b, -w, -B, -Z e os equivalentes no git
- Revisão de documentos e comparação de contratos — como achar todas as diferenças entre duas versões
- Como comparar JSON — ordenação de chaves e normalização
- Caracteres de fim de linha (CRLF e LF) e diferenças invisíveis — quando todas as linhas aparecem alteradas