FreeToGenerate.com

100% grátis · sem cadastro · nada sai do seu navegador

Cole texto nos dois lados para ver a comparação.

A comparação acontece no seu navegador: nada é enviado a servidor nenhum e nada fica salvo.

Também disponível em: English · Español · Français · العربية

Compare dois textos e veja exatamente o que mudou

Cole o texto original de um lado e a versão modificada do outro; a ferramenta mostra o que foi adicionado, removido e alterado, direto no navegador.

O que é um comparador de textos

Um comparador de textos (às vezes chamado de diff checker, ferramenta de diff, ou simplesmente diff) pega duas versões de um mesmo conteúdo e mostra exatamente onde elas divergem, em vez de te obrigar a ler as duas de cabo a rabo caçando a mudança. É o mesmo princípio por trás do diff do Unix e do que o git mostra num git diff — só que aqui a interface é visual, lado a lado, sem precisar abrir terminal nenhum. Serve para comparar dois textos de qualquer natureza: um contrato antes e depois da revisão do jurídico, duas versões de um artigo, um trecho de código antes e depois de um refactor, ou a resposta de um formulário que alguém editou sem avisar o que mudou.

A diferença entre um comparador de textos de verdade e um simples ctrl+F visual é o alinhamento: quando você insere uma linha no meio de um parágrafo, tudo abaixo dela desce uma posição, e uma comparação ingênua ficaria comparando a linha 5 do original com a linha 5 do modificado — que já não têm mais nada a ver uma com a outra — e diria que o texto inteiro mudou. Um comparador de verdade descobre primeiro que uma linha foi inserida, realinha o resto, e só então aponta o que de fato é diferente. É esse realinhamento que esta ferramenta faz nas três granularidades: linha, palavra e caractere.

Como usar

  1. Cole os dois textos. Na caixa Original entra a versão de referência, na Modificado entra a nova; a comparação já aparece embaixo enquanto você ainda está digitando, sem precisar apertar nenhum botão.
  2. Escolha como comparar. Em Comparar por, escolha Linhas, Palavras ou Caracteres, e marque Ignorar maiúsculas ou Ignorar espaços se esse tipo de diferença não interessa pra sua comparação.
  3. Leia o resultado. Confira a contagem de linhas Adicionadas, Removidas, Alteradas e Sem mudança, use Inverter os lados se colou o texto na ordem trocada, e no modo Linhas clique em Copiar como diff unificado para levar um patch pronto pra outro lugar.

Como a comparação funciona de verdade

O motor por trás da comparação é o algoritmo O(ND) de Myers, publicado por Eugene Myers em 1986 — a mesma família de algoritmo que o git e o diff do Unix usam por baixo dos panos. A abordagem ingênua para esse problema monta uma tabela de maior subsequência comum do tamanho N x M, tanto em tempo quanto em memória: comparar dois arquivos de 2.000 linhas já alocaria quatro milhões de células antes mesmo de começar a procurar a resposta. O Myers ataca o problema por outro ângulo — busca para fora, por distância de edição — então o custo depende de quão diferentes os textos são, não do tamanho deles. Medido nesta implementação: 4.000 linhas com exatamente uma linha alterada são comparadas em 3,3 milissegundos.

A garantia real do algoritmo é que o roteiro de edição que ele devolve é mínimo — nenhuma outra sequência de inserções e remoções transforma o primeiro texto no segundo gastando menos passos. Isso não foi só presumido aqui: foi conferido. 14.641 pares de sequências — todas as strings de até quatro símbolos possíveis sobre um alfabeto de três símbolos — foram comparados contra uma tabela de distância de edição calculada por força bruta, mais 400 pares aleatórios maiores, de até 40 elementos cada. Em todos os casos o roteiro produzido saiu mínimo, reconstruiu o texto de destino exatamente e leu as duas entradas na ordem certa.

Isso resolve o alinhamento linha a linha, mas uma linha alterada ainda pode ter só duas palavras diferentes no meio de uma frase inteira. Por isso as linhas marcadas como alteradas passam por uma segunda rodada de comparação, dessa vez palavra por palavra, e só as palavras que realmente mudaram ficam destacadas — não a linha toda. Em «the quick brown fox» contra «the quick red fox», por exemplo, o destaque cai exatamente em «brown» de um lado e «red» do outro; o resto da frase, que é idêntico, fica sem grifo nenhum.

Os três modos e o que a ferramenta não faz

O modo Caracteres compara grafemas — o que uma pessoa lendo enxerga como um caractere — e não unidades de código, que é como o JavaScript enxerga uma string por padrão. A diferença aparece rápido com emoji: a família 👨‍👩‍👧‍👦 é claramente um símbolo só para quem olha, mas o .length do JavaScript conta 11 ali dentro. Troque esse emoji por um 👍 e esta ferramenta relata 1 removido e 1 adicionado; uma ferramenta que comparasse por unidade de código diria 11 removidos e 2 adicionados, destacando pedaços de emoji que não significam nada sozinhos.

Ignorar maiúsculas e Ignorar espaços mudam só o que conta como diferença na hora de calcular — nunca o que aparece na tela. O texto mostrado no resultado é exatamente o que você digitou, caractere por caractere; isso foi verificado, não é só uma promessa da caixinha. A quebra de linha, por sua vez, reconhece os três finais de linha que existem por aí — CRLF do Windows, LF do Unix e do macOS moderno, e um CR sozinho — então colar o mesmo arquivo salvo em sistemas diferentes não faz a ferramenta gritar que todas as linhas mudaram, que é o falso positivo mais comum nesse tipo de comparação.

Um limite existe e é assumido de propósito: a busca fica presa a uma distância de edição de 3.000. Dois textos sem quase nada em comum estouram esse teto — 2.500 linhas completamente diferentes já somam distância 5.000 — e quando isso acontece, a ferramenta avisa que a comparação era grande demais para alinhar com exatidão, em vez de forçar um alinhamento confiante e errado. Vale notar também que edição, aqui, quer dizer inserção e remoção, não substituição: transformar «kitten» em «sitting» custa 5 passos nessa contagem, enquanto uma distância de Levenshtein, que permite trocar uma letra por outra, diria 3 — então quem espera um número à la Levenshtein pode estranhar a contagem. E fora do que ela mede bem, tem o que ela nem tenta fazer: compara texto, não arquivo — nada de PDF, Word, imagem ou pasta, é preciso colar o conteúdo; mostra diferenças, não faz merge, não existe botão para aplicar a mudança de um lado no outro; e nada do que você cola fica salvo — ao recarregar a página, as duas caixas voltam vazias.

Por que é grátis

Essa ferramenta roda inteira no seu navegador — a comparação acontece em JavaScript, na sua máquina, e não existe uma chamada de rede saindo daqui pra lugar nenhum. Isso importa mais nesse tipo de ferramenta do que na maioria: o que as pessoas mais precisam comparar é justamente o que não pode vazar — um contrato ainda em negociação, um arquivo de configuração com uma credencial esquecida dentro, um texto que ainda não foi publicado. A maioria dos comparadores de diff online resolve isso mandando os dois textos pro servidor deles antes de te mostrar qualquer coisa; aqui não tem servidor nenhum no meio do caminho, então não tem pra onde vazar.

Sem conta, sem marca d'água no resultado, sem plano pago escondido atrás de um «compare textos maiores aqui». O FreeToGenerate.com é uma coleção de ferramentas assim: cada uma resolve um problema específico, roda de graça e sem fricção, porque o objetivo é ser útil, não prender ninguém num funil.