about.md

Sobre o comparador de textos TextDiff

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

  1. 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.
  2. Com 'Comparar ao digitar' ativado, o resultado aparece assim que você para de digitar. Se estiver desativado, clique em [Comparar] ou pressione Ctrl+Enter.
  3. 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.
  4. 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+↑/↓).
  5. 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 linhaIgnora 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çosUm 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çosRemove todos os espaços antes de comparar. Até 'a b' e 'ab' são considerados a mesma linha. (diff -w)
Dentro da linha: palavraMarca 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: blocoUsa 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: caractereCompara 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úsculasTrata letras maiúsculas e minúsculas como iguais.
Ignorar linhas em brancoExclui 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 linhaTrata 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 JSONAnalisa 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 / ⌘+EnterComparar 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