Compare dois textos e veja o que mudou
Cole a versão anterior em cima e a nova embaixo. A comparação roda enquanto você digita e marca o que foi removido, o que foi adicionado e quais palavras dentro de uma linha alterada realmente mudaram.
Resultado
Alinhar os dois textos é a parte difícil
A maneira óbvia de comparar dois textos é percorrer os dois ao mesmo tempo e marcar cada linha em que eles discordam. Insira uma única linha no topo de um arquivo e essa abordagem aponta todas as linhas restantes como alteradas. É correto e é inútil.
As ferramentas de diff de verdade resolvem outro problema antes: encontrar a sequência mais longa de linhas que aparece, na mesma ordem, nos dois textos. É a subsequência comum mais longa. Tudo o que fica de fora é uma remoção do lado esquerdo ou uma inserção do lado direito, e o alinhamento sai daí.
A implementação de manual preenche uma tabela com uma célula por par de linhas, então tanto o tempo quanto a memória crescem com o produto das duas contagens de linhas. O Git e a maioria dos editores usam no lugar o algoritmo de Myers, cujo custo depende do número de diferenças e não do tamanho dos arquivos — muito mais rápido no caso normal, em que duas versões são quase iguais. Esta ferramenta usa a tabela, com um atalho que faz quase todo o trabalho: as linhas idênticas do começo e do fim são pareadas antes de a tabela ser construída.
Onde a ferramenta desiste
Se mais de cerca de 1.500 linhas de cada lado ainda diferem depois de removidos o começo e o fim comuns, a tabela fica grande demais e a ferramenta para de tentar alinhá-las. Ela passa a marcar todo o miolo como removido e depois readicionado, e a nota abaixo dos botões diz isso. Nesse volume, o caminho é git diff ou uma ferramenta de merge de desktop, não uma caixa de texto.
Os espaços são invisíveis e decisivos
Duas linhas que parecem idênticas muitas vezes não são. O Windows termina as linhas com um retorno de carro seguido de uma quebra de linha; todo o resto usa só a quebra de linha. Esta ferramenta normaliza as duas formas para a quebra de linha antes de comparar, então um arquivo colado de um editor do Windows nunca aparece como 100% diferente só por isso.
Os espaços no fim são o outro clássico. Ignorar espaços no início e no fim resolve, mas também esconde as mudanças de indentação — e em Python, YAML ou Makefiles a indentação é a mudança que você estava procurando. Deixe a opção desligada quando a estrutura depender dos espaços.
Aqui, um texto que termina com quebra de linha e outro sem ela são tratados como idênticos, porque a quebra final é lida como um terminador e não como uma última linha vazia. O Git é mais rígido e imprime \ No newline at end of file. Se essa distinção importa para o que você está fazendo, confira em outro lugar.
O destaque de palavras é um palpite fundamentado
Quando uma linha removida fica logo acima de uma inserida, o mesmo algoritmo roda de novo sobre as palavras dentro delas e sombreia só as partes que realmente mudaram. É muito mais fácil de ler do que dois blocos maciços de vermelho e verde.
Ainda assim é um palpite. O pareamento é feito só por posição — a primeira linha removida com a primeira inserida, e assim por diante. Reescreva um parágrafo e reordene as frases e o pareamento vira bobagem. A ferramenta se recusa a destacar quando duas linhas pareadas compartilham menos de um terço dos caracteres, aproximadamente, o que pega os piores casos, mas não todos. Quando o destaque parecer errado, desligue e leia as linhas inteiras.
Três coisas para conferir antes de confiar no resultado
- Linhas únicas muito longas. JavaScript minificado, um JSON em uma linha só ou um documento sem quebras de linha rígidas contam todos como uma única linha. Mude um caractere no meio e o resultado é uma linha removida e uma adicionada, com tudo sombreado. A comparação por linhas não tem nada de útil a dizer sobre um arquivo com três linhas.
- Caracteres parecidos. Um espaço não separável, uma aspa curva colada de um processador de texto ou uma letra cirílica que parece latina são lidos como diferença mesmo parecendo idênticos na tela. Se uma linha aparece como alterada e você não vê por quê, essa costuma ser a causa.
- Estrutura que a ferramenta não enxerga. A comparação é estritamente textual. Ela não sabe que uma função movida é a mesma função, que dois objetos JSON com as chaves em outra ordem são equivalentes, nem que uma variável foi renomeada. A comparação estrutural exige um analisador da linguagem específica.
O que o botão de copiar produz
Copiar diff dá o formato conhecido — um +, um - ou um espaço no começo de cada linha — mas sem os cabeçalhos de bloco @@ e os nomes de arquivo que um diff unificado de verdade carrega. Foi feito para colar em um comentário de revisão ou numa mensagem de chat. patch e git apply vão recusar.
Perguntas frequentes
Meu texto é enviado para algum lugar?
Não. A comparação roda em JavaScript dentro da sua aba. Nada é enviado a um servidor, nada é armazenado e fechar a página descarta os dois textos. Você pode confirmar carregando a página e desconectando da rede: a ferramenta continua funcionando.
Por que ele diz que as linhas são diferentes se parecem iguais?
Quase sempre é um caractere invisível: um espaço no fim, um espaço não separável, uma aspa curva ou uma tabulação onde você esperava espaços. Ative "Ignorar espaços no início e no fim" para descartar o primeiro caso. Se isso não resolver, a diferença está dentro da linha.
Dá para comparar dois arquivos em vez de texto colado?
Não diretamente: não existe seletor de arquivos. Abra os arquivos em qualquer editor e cole o conteúdo. Para arquivos grandes a ponto de colar ficar incômodo, uma ferramenta de diff local vai servir melhor de qualquer forma.
O que significa a porcentagem de similaridade?
É a proporção de linhas que coincidiram, contada sobre os dois textos: as linhas sem alterações vezes dois, divididas pelo total de linhas dos dois lados. Ela mede linhas inteiras, então mudar uma palavra em cada linha dá 0% de similaridade mesmo com os textos quase idênticos.
Posso usar a saída como arquivo de patch?
Não. O diff copiado tem os prefixos de mais e de menos, mas não os cabeçalhos de bloco, então patch e git apply vão recusar. Use para comentários de revisão e chat, e gere um patch de verdade com git diff quando precisar de um que aplique.
Última atualização 19 de setembro de 2026