Pular para o conteúdo principal
Tooletto

Comparador de Texto

Cole dois blocos de texto, código ou configuração lado a lado e veja instantaneamente o que foi adicionado, removido ou deixado inalterado. A comparação roda inteiramente no seu navegador, então nada que você cola é enviado.

  • Os arquivos nunca saem do seu dispositivo
  • Grátis, sem cadastro
  • Sem marcas d'água
  • Funciona offline depois de carregado
Loading tool…

Como comparador de texto

  1. 1

    Cole as duas versões

    Cole o texto original na caixa da esquerda e a versão modificada na caixa da direita.

  2. 2

    Escolha um modo de comparação

    Use "Linhas" para comparar linha por linha — o comportamento padrão para código e arquivos de configuração — ou mude para "Palavras" para ver exatamente quais palavras mudaram dentro de linhas parecidas.

  3. 3

    Leia o diff destacado

    Conteúdo adicionado é destacado em verde, conteúdo removido em vermelho, e tudo que não mudou permanece simples. Copie o resultado como um diff em texto simples se precisar compartilhá-lo.

Como um diff de linhas decide o que conta como "o mesmo"

Por trás do destaque, uma ferramenta de diff está resolvendo um problema específico de correspondência: dadas duas listas de linhas, encontrar a sequência mais longa de linhas que aparece, na mesma ordem relativa, nos dois documentos — tudo nessa sequência compartilhada é deixado inalterado, e tudo o mais é o que é marcado como adicionado ou removido. Essa é a intuição por trás da ideia de "maior subsequência comum" na qual todo algoritmo de diff de propósito geral é construído, incluindo o que o próprio Git usa. Isso explica um detalhe que de outra forma pareceria estranho: mover um bloco de texto do final de um documento para o início geralmente é reportado como uma grande remoção mais uma grande adição, em vez de uma única operação de "mover" — o algoritmo só está procurando uma ordem compartilhada, e um bloco realocado quebra essa ordem tanto na posição antiga quanto na nova.

Isso também explica por que uma edição de um único caractere em uma linha longa marca a linha inteira como alterada no modo de linhas: o algoritmo compara linhas inteiras como unidades indivisíveis, então "a mesma linha exceto por uma letra" e "uma linha completamente diferente" são tratadas de forma idêntica — ambas falham no teste de igualdade e ambas contam como uma linha removida, uma linha adicionada. É exatamente essa a situação em que mudar para o modo de palavras ajuda, já que ele reaplica a mesma ideia subjacente um nível abaixo, tratando cada palavra como a unidade sendo comparada em vez de cada linha.

Quando o diff em nível de palavra é mais útil que o de linha

O modo de linhas é o padrão certo para qualquer coisa em que uma linha é uma unidade significativa por si só — código-fonte, objetos JSON, linhas de CSV, entradas de log — porque nesses formatos uma única linha geralmente representa uma ideia completa, e saber que uma linha específica mudou já é uma informação útil por si só, independentemente de qual caractere dentro dela se moveu. O modo de palavras se torna mais útil no momento em que a unidade significativa é menor que uma linha: um parágrafo de prosa, uma cláusula de contrato, ou uma frase em um documento longo, onde a mudança interessante geralmente é uma única palavra ou expressão e a sentença ao redor é idêntica. Comparar esse tipo de texto linha por linha marcaria o parágrafo inteiro como "alterado" por uma edição de uma palavra só, o que é tecnicamente correto mas não diz nada sobre o que realmente mudou até você ler o parágrafo inteiro de novo você mesmo.

Uma regra prática: recorra ao modo de linhas primeiro para qualquer coisa estruturada ou orientada a linhas, e mude para o modo de palavras especificamente quando um resultado no modo de linhas mostrar dois grandes blocos de vermelho e verde que parecem quase idênticos — esse padrão é o sinal de que a diferença real é pequena e está enterrada dentro de um texto que, fora isso, não mudou.

Usos práticos comuns além de comparar prosa

Comparar duas revisões de código-fonte antes de mesclá-las é o caso de uso clássico, mas a mesma técnica se aplica bem além de uma revisão de código: comparar duas exportações de um arquivo de configuração para descobrir exatamente qual ajuste mudou entre uma implantação funcionando e uma quebrada, verificar duas versões de uma exportação de CSV para confirmar que só as linhas esperadas foram alteradas, ou comparar um rascunho de contrato com uma revisão anterior para encontrar cada cláusula que uma contraparte modificou sem ter que ler o documento inteiro lado a lado de novo. Em todos esses casos, o valor de uma ferramenta de diff é o mesmo — ela transforma "essas duas coisas são diferentes, e se sim, onde" de um exercício manual de leitura lado a lado em uma resposta visual imediata.

Perguntas frequentes

Algum dos textos é enviado para um servidor?

Não. Os dois textos são comparados inteiramente dentro do seu navegador usando JavaScript — nada é enviado pela rede em nenhum momento. Você pode se desconectar da internet depois que a página carrega e a comparação continua funcionando, o que você pode verificar você mesmo.

O que exatamente conta como uma "diferença"?

No modo "Linhas", duas linhas são comparadas como unidades inteiras — se um único caractere em uma linha muda, a linha inteira é marcada como removida do original e adicionada na versão modificada. No modo "Palavras", a mesma linha é comparada palavra por palavra, então só a palavra específica que mudou é destacada enquanto o resto da linha permanece simples. Espaços em branco no início e no fim, linhas em branco e quebras de linha são todos tratados como conteúdo real nos dois modos — uma linha que difere só por espaços no final ainda é reportada como alterada.

Isso funciona para código, JSON ou arquivos de configuração, não só prosa?

Sim — a comparação baseada em linhas é exatamente a técnica usada por ferramentas de controle de versão como o Git, e funciona da mesma forma aqui para código-fonte, JSON, YAML, linhas de CSV, arquivos de log ou qualquer outro formato orientado a linhas. O modo de palavras é mais útil para prosa, contratos ou documentação, onde a mudança significativa geralmente é uma frase dentro de uma sentença em vez da linha inteira.

Isso consegue lidar com documentos grandes?

Sim. Comparações de até alguns milhares de linhas terminam praticamente de forma instantânea. O diff é recalculado a cada tecla digitada com prioridade de renderização mais baixa, então digitar continua suave mesmo enquanto um texto colado grande está sendo comparado — para documentos muito grandes ou muito diferentes, a comparação em si pode demorar um momento a mais, mas nunca vai travar a página.

A quais linhas se refere a contagem de "+N adicionadas, −M removidas"?

Ela conta o número total de linhas (ou palavras, no modo Palavras) adicionadas e removidas em toda a comparação — os mesmos números que você obteria contando cada linha verde e vermelha no resultado. Linhas inalteradas não são contadas.

Posso obter o diff como texto simples em vez da visualização colorida?

Sim. O botão "Copiar diff" copia uma versão em texto simples com um marcador "+", "-" ou em branco no início de cada linha (a mesma convenção usada pelo Git e pela maioria das ferramentas de diff de linha de comando), para você poder colar em um e-mail, um chamado ou um comentário de revisão de código.