ToolActToolAct

Ferramenta de Comparação de Texto

Texto OriginalOLD
1
Texto NovoNEW
1
0 linhas adicionadas0 linhas removidas
UTF-8

O que é Diff de Texto?

Text Diff compara duas versões de texto e destaca quais linhas ou trechos foram adicionados, removidos, alterados ou mantidos. Ele é útil para revisar trechos de código, arquivos de configuração, traduções, rascunhos de contrato, documentos Markdown, versões de prompts, notas de release e partes de logs sem ler manualmente as duas cópias lado a lado. A ferramenta é especialmente valiosa quando uma edição pequena está escondida em um conteúdo longo ou quando formatação, espaços, pontuação ou ordem podem ter mudado sem querer. Um diff não decide se a nova versão está correta; ele mostra onde os textos divergem para orientar a revisão.

Como Usar

Como usar

  1. Cole o texto original na caixa de entrada à esquerda
  2. Cole o texto modificado na caixa de entrada à direita
  3. O sistema calcula e destaca automaticamente as diferenças, e a barra de status mostra a contagem de linhas adicionadas e removidas

Dicas de Revisão

  • Normalize quebras de linha e espaços antes de comparar quando a mudança real está no conteúdo e não na formatação.
  • Em código ou textos legais, revise manualmente as alterações destacadas; o diff automático mostra as diferenças, mas não avalia intenção nem correção.

Casos de uso

Comparar duas versões de texto linha a linhaCole o texto original e o modificado em editores lado a lado e a ferramenta calcula um diff de linha usando uma abordagem de distância de edição por programação dinâmica. Linhas adicionadas são destacadas à direita e linhas removidas à esquerda. A barra de status informa as contagens de linhas adicionadas e removidas para que os revisores vejam a magnitude da mudança rapidamente.
Revisar pequenas edições sem um fluxo completo de GitOs painéis antigo e novo incluem números de linha, ações de limpar e colar e contagens de status para linhas adicionadas e removidas. É útil para comparar traduções, trechos de configuração, texto gerado ou notas copiadas fora de um repositório. Diffs rápidos no navegador mantêm os revisores focados no conteúdo em vez do histórico de commits.
Detectar mudanças estruturais rapidamenteComo a comparação funciona em nível de linha, ela enfatiza linhas inseridas e deletadas em vez de erros de digitação em nível de caractere. Isso a torna ideal para parágrafos, listas, fragmentos JSON, seções de documentação e saídas de múltiplas linhas. Para revisão em nível de caractere, combine o resultado com um diff de caractere separado ou um verificador ortográfico.
Revisar alterações de prompts e configurações antes de mesclarCole o prompt anterior e o novo nos dois painéis para ver exatamente quais linhas foram adicionadas, removidas ou reordenadas. Isso é mais rápido do que reler o texto completo quando apenas uma temperatura, mensagem de sistema ou bloco de instruções mudou entre as versões. A visualização em nível de linha captura movimentos acidentais de seção que uma comparação de contagem de palavras perderia.
Auditar diffs produzidos pelo algoritmo Myers e LCSInternamente, o mecanismo de diff executa o algoritmo Myers O(ND) sobre a Longest Common Subsequence para produzir um script de edição e então aplica limpeza semântica para que deslocamentos em limites de palavra (ex.: uma frase dividida em duas linhas) colapsem em uma única linha alterada em vez de dois blocos vermelho/verde adjacentes. O resultado ainda é lido como um diff de linha normal, mas a base LCS significa que o menor conjunto possível de edições é o que aparece na visualização lado a lado.

Princípio técnico

O diff em nível de linha é construído sobre o problema da Subsequência Comum Mais Longa (LCS): dadas duas sequências de linhas A e B, encontrar a maior sequência que aparece em ambas na mesma ordem relativa. Tudo o que não está no LCS é uma inserção (presente em B mas não em A) ou uma exclusão (presente em A mas não em B), que é exatamente o conjunto de linhas vermelhas e verdes exibidas na visualização lado a lado. A tabela de programação dinâmica ingênua do LCS roda em tempo e espaço O(M × N), onde M e N são as contagens de linhas das duas entradas. Na prática, o mecanismo de diff usa o algoritmo de diff de Myers (Eugene Myers, 1986), que resolve o mesmo problema em tempo O((M + N) × D), onde D é a distância de edição entre os dois arquivos. Para dois arquivos que são majoritariamente idênticos, D é pequeno e Myers é dramaticamente mais rápido que a tabela completa de PD; o backend de diff padrão do Git, a visualização de diff web do GitHub e a maioria dos painéis de diff de IDEs usam Myers ou um de seus descendentes (patience diff, histogram diff) exatamente por essa razão. O patience diff adicionalmente alinha primeiro em linhas de ocorrência única, o que produz blocos mais legíveis quando trechos de código foram movidos. A saída é uma sequência de operações igual/inserir/excluir renderizada como diff unificado em ferramentas de CLI (com cabeçalhos de bloco @@ -m,n +p,q @@ e um único prefixo +/- por linha) ou como linhas coloridas lado a lado em uma interface web. Diffs em nível de caractere ou palavra usam o mesmo algoritmo em uma sequência de granularidade mais fina, frequentemente combinado com a distância de Levenshtein (custos de inserção + exclusão + substituição) quando substituições precisam ser contadas como uma única operação. A biblioteca diff-match-patch de Neil Fraser é a implementação de referência comum para diffs em nível de caractere baseados na web.

  • Base LCS: a Subsequência Comum Mais Longa dos dois arrays de linhas define as linhas inalteradas; tudo o mais é uma inserção ou exclusão
  • Myers diff (1986): tempo O((M + N) × D) onde D é a distância de edição; backend padrão no Git, GitHub e na maioria das visualizações de diff de IDEs
  • PD ingênua: tempo e espaço O(M × N) — adequada para entradas pequenas, mas a memória quadrática a torna impraticável para arquivos grandes
  • Patience diff: alinha primeiro em linhas de ocorrência única; produz blocos mais limpos para trechos movidos ou reordenados
  • Formatos de saída: diff unificado com cabeçalhos de bloco @@ -m,n +p,q @@ para CLI; linhas coloridas lado a lado para interface web
  • Granularidade: diffs em nível de linha / palavra / caractere aplicam o mesmo algoritmo a uma segmentação diferente da entrada
  • Distância de Levenshtein: conta inserções + exclusões + substituições; diff-match-patch é a biblioteca web de referência

Exemplos

Identificar uma alteração de uma palavra dentro de um parágrafo

Original:
  The server starts on port 3000 by default.

Modificado:
  The server starts on port 8080 by default.

Resultado: 1 linha alterada (3000 -> 8080)

Comparar duas versões de um bloco de configuração

Original:                       Modificado:
  timeout: 30                     timeout: 60
  retries: 3                      retries: 3
  debug: false                    debug: true
                                  log_level: info

Resultado: 2 linhas adicionadas, 2 linhas removidas

Diff entre notas de versão antes e depois

Removido (vermelho):
  - Fixed login redirect on Safari 16

Adicionado (verde):
  - Fixed login redirect on Safari 16 and 17
  - Added dark mode preference sync

Resultado: 2 linhas adicionadas, 1 linha removida

Detectar chaves JSON reordenadas

Original:                       Modificado:
  { "name": "alice",              { "id": 1,
    "id": 1,                        "name": "alice",
    "role": "admin" }               "role": "admin" }

Resultado: 2 linhas alteradas (ordem das chaves difere, valores idênticos)

Perguntas frequentes

Que tipo de diff ele mostra?

Diff em nível de linha. A página mostra dois painéis lado a lado: linhas removidas destacadas em vermelho à esquerda, linhas adicionadas destacadas em verde à direita. Os números de linha ajudam a localizar as alterações. A barra de status mostra a contagem de linhas adicionadas e removidas.

Qual algoritmo de diff é usado?

A página usa um algoritmo de Maior Subsequência Comum (LCS) para calcular o script de edição em nível de linha. Para tamanhos de documento típicos isso roda em tempo real à medida que você digita. O algoritmo encontra a sequência mais curta de inserções e exclusões para transformar o texto da esquerda no da direita.

Por que o diff parece diferente do git diff?

O Git usa sua própria implementação de diff com algoritmos configuráveis. Esta página usa um diff baseado em LCS em JavaScript que roda inteiramente no navegador. O formato de saída e os limites dos hunks podem diferir ligeiramente do git diff, mas a detecção de edições subjacente é correta para comparação de texto em nível de linha.

Posso fazer diff só dentro de um parágrafo ou frase?

Sim — cole cada versão em um lado. A página também oferece destaque em nível de caractere dentro das linhas alteradas, o que faz 'rename foo to bar' aparecer como substituição inline em vez de duas mudanças não relacionadas.

Ele ignora espaços em branco?

Não. O diff é sensível a espaços em branco por padrão. Diferenças de espaço (espaços ao final, linhas em branco extras, finais de linha diferentes) são exibidas como alterações.

Posso fazer diff de JSON ou XML estruturalmente?

O diff de texto puro é baseado em linhas. Para fazer diff de JSON por chave (chave 'a' movida da posição 1 para 3 com o mesmo valor = sem alteração), use uma ferramenta de diff que entenda JSON (jsondiffpatch, json-diff). Esta página é para comparação textual.

Meu texto é enviado para algum servidor?

Não. O diff roda no seu navegador. Ambas as entradas são processadas localmente e não são transmitidas.