Comparar dois textos
Cole as duas versões e veja exatamente o que mudou, lado a lado, palavra por palavra. O mesmo algoritmo que o git usa — não uma comparação linha a linha que desmorona quando você acrescenta uma linha.
- Nunca armazenado
- Sem fila, sem espera
- Sem cadastro, sem marca d'água
Como funciona
Cole as duas versões
O original à esquerda, o novo à direita. Ou solte dois arquivos.
Leia as diferenças
Linhas adicionadas, removidas e alteradas ficam marcadas, e dentro de uma linha alterada as palavras exatas são destacadas.
Ignore o que não importa
Maiúsculas e minúsculas, espaçamento e linhas em branco podem ser ignorados um a um — e a página avisa quando esse é o único motivo de dois textos serem iguais.
O que conta como a mesma linha
A comparação é feita sobre uma chave, e não sobre a linha em si. Cada linha é reduzida a uma chave de acordo com as opções de ignorar que estiverem ativadas, o diff roda sobre as chaves, e o que você vê é sempre o seu texto original — então ativar “Ignorar maiúsculas e minúsculas” muda quais linhas coincidem sem alterar um único caractere do que é exibido. Há duas opções separadas de espaço em branco, e elas diferem mais do que os rótulos sugerem: uma remove os espaços das pontas da linha, e a outra primeiro reduz sequências de espaços e tabulações a um único espaço e depois remove as pontas. Nenhuma das duas elimina os espaços por completo, e a redução procura apenas espaços e tabulações literais, então um espaço ideográfico ou um espaço não separável no meio de uma linha fica intacto e continua sendo acusado como diferença.
Ignorar linhas em branco é a opção com uma consequência que ninguém menciona: as linhas em branco são removidas antes de a comparação rodar, então os números de linha ao lado do resultado contam só as linhas que sobraram e deixam de coincidir com os números de linha do seu arquivo. Com a opção desativada, eles coincidem exatamente. O destaque por palavra dentro de uma linha alterada segue a opção de ignorar maiúsculas e minúsculas e nada mais — as opções de espaço em branco não chegam até ele, então diferenças de espaçamento dentro de uma linha que mudou por outro motivo continuam pintadas como alterações.
O resultado para copiar é um diff unificado em tudo o que importa para lê-lo — os dois cabeçalhos de arquivo, linhas com sinal de menos, linhas com sinal de mais, três linhas de contexto em volta de cada mudança —, com uma exceção que vale conhecer antes de depender dele. Os marcadores de bloco não trazem intervalos de linhas, então ele serve para um relato de bug, um comentário em revisão de código ou um e-mail, e os comandos patch e git apply vão recusá-lo. Se você precisa de algo para aplicar, e não para ler, gere com o git.
Quando você precisa de outra coisa
Formatos estruturados comparam mal como linhas, e a falha é escancarada, não sutil: dois documentos JSON que só diferem na ordem das chaves, ou dois CSVs com uma coluna trocada de lugar, voltam como um paredão de mudanças que não diz nada. Compare-os com algo que entenda a estrutura — ordene as chaves dos dois arquivos JSON antes e compare os resultados, ou use o daff, que compara CSV como linhas e colunas e diz que uma coluna mudou de lugar, em vez de dizer que todas as linhas mudaram.
Duas pastas, ou dois pontos do histórico de um repositório, são assunto para o git, e não para esta página. E para textos em prosa em que os parágrafos foram requebrados, uma visão por linha é a granularidade errada — git diff --word-diff ignora onde as quebras de linha caíram e mostra só as palavras que mudaram, que é a comparação que você realmente queria quando um documento foi reformatado.
Perguntas frequentes
Meus documentos ficam armazenados em algum lugar?
Não. Nada fica armazenado e nenhuma requisição é feita, e tudo continua funcionando com a internet desconectada. Isso importa mais do que parece quando se trata de texto: o que as pessoas colam em uma ferramenta online são textos não publicados, minutas jurídicas, trabalhos de estudantes e documentos internos. Para comparar duas versões de um contrato ou de um rascunho, é justamente isso que importa.
Por que isto é melhor do que comparar linha por linha?
Porque percorrer linha por linha falha no momento em que algo muda de lugar. Acrescente uma linha no topo de um arquivo e todas as linhas abaixo passam a ficar em outra posição, então uma comparação ingênua acusa o documento inteiro como alterado — o que não serve para nada. Aqui usamos o algoritmo de Myers, o mesmo por trás do git diff e do diff(1), que encontra o menor conjunto de inserções e exclusões que transforma um texto no outro. Acrescente uma linha no topo, e ele acusa uma linha adicionada.
Ele mostra quais palavras mudaram, e não só quais linhas?
Sim. Quando uma linha foi editada, e não adicionada ou removida, ela é comparada de novo palavra por palavra, e só as palavras que realmente mudaram são destacadas. Em um parágrafo longo em que alguém trocou três palavras, você vê três palavras, e não um paredão colorido.
O que fazem as opções de “ignorar”?
Elas mudam o que conta como a mesma linha. Ignorar maiúsculas e minúsculas, espaçamento ou linhas em branco é útil para comparar código reformatado ou texto colado de novo. Um detalhe importante: se dois textos só são iguais PORQUE algo está sendo ignorado, a página diz isso explicitamente em vez de declará-los idênticos — “idênticos” e “idênticos se você ignorar maiúsculas e minúsculas” são fatos diferentes, e confundi-los é como alguém entrega um arquivo que achava que não tinha mudado.
Posso obter o resultado como patch?
Sim — a comparação pode ser copiada como um diff unificado, o mesmo formato que o git e os patches por e-mail usam, com algumas linhas de contexto em volta de cada mudança. É o formato para colar em um relato de bug.
Existe limite de tamanho?
A memória disponível, e não um limite fixo de tamanho. Comparar dois documentos longos é rápido, porque o início e o fim idênticos são reconhecidos e pulados antes de o trabalho de verdade começar. Dois textos que diferem em milhares de pontos separados serão recusados com uma explicação, em vez de travar a aba — um diff desse tamanho não daria para ler de qualquer forma.
Ele compara arquivos Word ou PDF?
Não diretamente. Converta-os em texto antes — nossas ferramentas [PDF para texto](pdf-to-text) e [DOCX para TXT](docx-to-txt) fazem exatamente isso — e cole os resultados aqui.
Bom saber: A comparação tem limite de 8.000 diferenças. Acima disso, o custo do algoritmo cresce rápido o bastante para travar a aba, então a página para e avisa, em vez de congelar — dois documentos realmente sem relação atingem esse limite rapidinho. Comparar duas versões do mesmo arquivo quase nunca chega lá.
Coloque esta ferramenta no seu site
Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.
Ferramentas relacionadas
Contador de palavras
Palavras, frases e tempo de leitura
Remover linhas duplicadas
Tire repetições, ordene e organize uma lista
Formatador JSON
Deixe JSON ilegível fácil de ler
Contador de caracteres
Caracteres, bytes e o que o seu limite realmente conta
Converter maiúsculas e minúsculas
MAIÚSCULAS, minúsculas, Iniciais Maiúsculas, camelCase e mais
Minificar HTML
Reduza o HTML sem quebrar a página