Comparador de Texto: Diff de Texto, JSON e Código

Compare dois textos, JSON ou trechos de código no navegador e veja linhas adicionadas, removidas e alteradas. Ignora espaços e maiúsculas. 100% local.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

Processamento 100% local no seu navegador. Nenhum dado, texto, arquivo ou senha é enviado para servidor.

Carregar um exemplo:
Opções da comparação

A comparação é textual, linha a linha, e não diz se dois JSON significam a mesma coisa: as mesmas chaves em ordem diferente são iguais no significado e diferentes no texto. Quando os dois lados forem JSON válido, a conferência de significado aparece junto do resultado.

O que cada opção muda na mesma comparação

Deslize a tabela para o lado: são 5 colunas.

Contagem de linhas iguais, alteradas, adicionadas e removidas no exemplo Cadastro, para cada combinação das opções de tolerância
Opções marcadasIguaisAlteradasAdicionadasRemovidas
Nenhuma opção marcada0310
Ignorar espaços1210
Ignorar maiúsculas e minúsculas1210
As duas opções2110

Exemplo Cadastro, calculado pelo motor desta página. Texto A: nome: João / plano: básico / ativo: true. Texto B: Nome: João / plano: premium / ativo: true / desconto: 10. Carregue o exemplo na ferramenta e marque as opções para conferir.

Em resumo

O comparador mostra, linha a linha, o que mudou entre dois textos: linhas adicionadas, removidas e alteradas, com a contagem de cada tipo. Ele usa o algoritmo de Myers, publicado em 1986 e usado por padrão no git diff, e aceita até 200.000 caracteres por lado, tudo no navegador. No exemplo Cadastro, sem opção nenhuma saem 3 linhas alteradas. Com ignorar espaços e ignorar maiúsculas marcados, sobra 1, a troca de plano de verdade, e a linha nova do desconto continua como adicionada.

Diferença de texto não é diferença de significado. No exemplo Dois JSON, com as mesmas chaves em outra ordem, a comparação de texto acusa 5 linhas diferentes, e continuam 3 depois de formatar os dois lados, porque formatar não reordena chave. A conferência de significado, que aparece quando os dois lados são JSON válido, responde que os dois dizem a mesma coisa. A comparação é por linha: para achar a palavra que mudou numa linha comprida, quebre o texto em linhas menores antes.

Outras ferramentas de código e expressões

  • Formatador de códigoFormate e minifique JavaScript, CSS, HTML, XML, SQL e YAML sem mudar o que o código faz. Cada linguagem diz na tela o que a operação garante. Tudo no seu navegador.
  • Testador de regexTeste expressões regulares contra qualquer texto diretamente no navegador. Veja todos os matches, índices e grupos capturados. Suporta flags g, i, m, s, u, y. Processamento 100% local.
  • Interpretador de cronInterprete expressões cron em linguagem natural e veja as próximas execuções estimadas. Suporta os 5 campos padrão: minuto, hora, dia do mês, mês e dia da semana. Processamento 100% local.
  • Editor de MarkdownEscreva Markdown e veja a prévia no navegador, com contagem de palavras, títulos e links, e download em .md. A prévia é segura, sem HTML bruto. 100% local.
  • Teste de velocidadeMeça download, upload, ping, jitter e a latência com a rede cheia. Veja se a conexão aguenta chamada de vídeo, 4K e jogo online, e quanto do plano contratado chegou.
  • Cronômetro onlineCronômetro online com centésimos e voltas: parcial, total, a volta mais rápida e a mais lenta, cópia para planilha e CSV, tela cheia e atalhos de teclado. Mede pelo relógio interno do navegador e não atrasa com a aba em segundo plano.

Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.

Gostou? Mostre pra todo mundo

Gere um card bonito com a marca do ValorFinal para postar nos Stories ou mandar no WhatsApp. Nada que você digitou aparece no card.

Coloque no seu site

Cole o texto A e o texto B e clique em Comparar. As linhas adicionadas, removidas e alteradas são destacadas, com contagem de cada tipo. Tudo local no navegador.

Como funciona a ferramenta

A ferramenta divide os dois textos em linhas e acha o caminho de edição mais curto entre eles pelo algoritmo de Myers com espaço linear, o mesmo que o git diff usa por padrão. Linhas presentes só no B são adicionadas, só no A são removidas, e em cada trecho entre duas linhas iguais as remoções e as adições são pareadas na ordem e viram linhas alteradas.

As duas opções de tolerância ficam à vista antes de comparar: ignorar espaços (espaço repetido, tabulação e espaço nas pontas deixam de contar) e ignorar maiúsculas e minúsculas. A linha aparece sempre como você escreveu; a tolerância vale só para decidir se ela mudou.

Uma diferença importante: comparação de texto não é equivalência de significado. Dois JSON com as mesmas chaves em ordem diferente dizem a mesma coisa e mesmo assim são textos diferentes. Por isso, quando os dois lados são JSON válido, a página responde também se as chaves e os valores batem, ignorando ordem e formatação.

Para padronizar a entrada antes de comparar, use o formatador de código ou o validador de JSON.

Base: algoritmo de Myers (An O(ND) Difference Algorithm and Its Variations, 1986), na variante de espaço linear. Comparação local no navegador.

Limitações

  • A comparação é por linha, não por palavra ou caractere. Numa linha longa com uma palavra trocada, a linha inteira aparece como alterada.
  • O limite é de 200.000 caracteres por lado. O campo para de aceitar texto nesse ponto, e o que passar fica fora da comparação.
  • Diferença de texto não é diferença de significado. Em JSON, a ordem das chaves muda o texto sem mudar o conteúdo, e é por isso que a conferência de significado aparece separada.
  • Não faz merge nem resolve conflitos, apenas mostra as diferenças.

Guia completo

Como comparar textos e JSON: diferenças, linhas alteradas e revisão

Entenda como comparar textos, JSON e trechos de código, o que significam linhas adicionadas, removidas e alteradas, quando ignorar espaços e maiúsculas, e como evitar erros em revisão técnica.

Coloque esta ferramenta no seu site, de graça

Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.

Comparador de texto para sitever todas as ferramentas para site

Calculadoras relacionadas

Guias sobre este tema

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Ferramenta transparente, com o método explicado

Atualizado em . Fontes: Algoritmo LCS / matemática de sequências.

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

O que esta ferramenta compara?

Dois textos quaisquer, linha a linha: texto comum, JSON, log, arquivo de configuração ou trecho de código. A página mostra quais linhas foram adicionadas, removidas e alteradas entre a versão A e a versão B, com o número da linha nos dois lados e a contagem de cada tipo no topo. Quando os dois lados são JSON válido, ela faz também uma segunda conferência, de significado, que ignora a ordem das chaves e a indentação.

Os textos comparados vão para algum servidor?

Não. A comparação roda no seu navegador, e os dois textos não são transmitidos, salvos nem colocados na URL. Dá para comparar contrato, configuração interna ou resposta de API com dado de cliente, desde que você confie no aparelho que está usando. A única requisição que a ferramenta dispara é o registro de uso da estatística do site, uma vez por visita, com o endereço da página e nada do que você colou.

Como funciona a opção de formatar JSON antes de comparar?

Quando marcada, cada lado é interpretado como JSON e reescrito com a mesma indentação antes da comparação. Isso tira da frente as diferenças que são só de espaçamento. Ela não reordena chave nenhuma: a ordem continua aparecendo como diferença de texto. No exemplo Dois JSON da ferramenta, formatar reduz as linhas diferentes de 5 para 3, e as que sobram são as chaves fora de ordem. Se o texto não for JSON válido, ele é comparado como está.

O que significam adicionada, removida e alterada?

Adicionada é uma linha que existe só no texto B. Removida existe só no texto A. Alterada é uma linha do A trocada por uma do B no mesmo trecho: entre duas linhas iguais, as remoções e as adições são pareadas na ordem, e o que sobra de um lado fica como removido ou adicionado. Linhas iguais aparecem sem marcação. Na tabela do resultado, a linha alterada mostra o conteúdo antigo e o novo lado a lado, separados por uma seta.

Posso ignorar diferenças de espaço ou de maiúsculas?

Sim. Ignorar espaços faz espaço repetido, tabulação e espaço nas pontas da linha deixarem de contar; ignorar maiúsculas trata NOME e nome como a mesma linha. A linha continua aparecendo como você escreveu: a tolerância vale só para decidir se ela mudou. No exemplo Cadastro da ferramenta, sem opção nenhuma saem 3 linhas alteradas; com as duas marcadas, sobra 1, a troca de plano de verdade.

Qual algoritmo é usado?

O algoritmo de Myers com espaço linear, o mesmo que o git diff usa por padrão. Ele acha o caminho de edição mais curto entre os dois lados guardando duas fitas de inteiros, em vez da tabela inteira de comparações, e por isso dá conta de dezenas de milhares de linhas sem consumir a memória do navegador. Em seguida, as remoções e as adições de cada trecho entre linhas iguais são pareadas linha a linha e mostradas como alteradas.

Comparar dois JSON aqui prova que eles são iguais?

Prova que o texto é igual, que é outra coisa. Dois JSON com as mesmas chaves em ordem diferente significam exatamente a mesma coisa para qualquer programa que os leia, e mesmo assim aparecem como linhas diferentes aqui, porque a comparação é textual. Por isso, quando os dois lados são JSON válido, a página mostra junto uma conferência de significado: ela diz se as chaves e os valores batem, ignorando ordem, espaço e indentação.

Existe limite de tamanho?

Sim: 200.000 caracteres por lado, o que dá dezenas de milhares de linhas. O campo não aceita mais que isso: ao colar um texto maior, o navegador corta no limite, então confira se o fim do texto entrou antes de comparar. Há também um teto de tempo de 2 segundos para o casamento exato, que só pesa em textos enormes e muito diferentes entre si. Quando ele é atingido, um trecho aparece marcado em bloco e a página avisa.

Como comparar dois textos online?

Cole a versão antiga no campo Texto A e a nova no Texto B, marque as opções se quiser ignorar espaço ou maiúscula e clique em Comparar. O topo mostra quantas linhas ficaram iguais, adicionadas, removidas e alteradas, e a tabela embaixo mostra cada linha com o número dela nos dois lados. Para ver como funciona antes de colar o seu texto, carregue o exemplo Cadastro: ele tem uma troca de verdade e duas diferenças que somem com as opções.

O que são os sinais +, - e ~ e as duas colunas de número?

São a legenda da tabela de resultado. O sinal de mais marca linha adicionada, que só existe no texto B; o de menos marca linha removida, que só existe no A; o til marca linha alterada, com o conteúdo antigo e o novo separados por uma seta. As duas colunas da esquerda são o número da linha no texto A e no texto B, e uma delas fica vazia quando a linha não existe naquele lado. As cores repetem a informação: verde, vermelho e amarelo.

Por que um trecho aparece todo removido e depois todo adicionado?

É o aviso amarelo de comparação aproximada. O casamento exato linha a linha tem um teto de 2 segundos no seu navegador. Quando dois textos são enormes e muito diferentes, o tempo acaba antes, e o trecho que faltou é marcado em bloco: tudo removido de um lado e tudo adicionado do outro. As linhas mostradas continuam certas, só menos detalhadas ali. Para ter o casamento exato, compare o arquivo em partes menores.

Por que o comparador acusa diferença em quase todas as linhas?

Quase sempre é indentação ou espaço no fim da linha: um lado usa tabulação e o outro usa espaços, ou um editor apagou os espaços do fim. Marque Ignorar espaços e compare de novo. Se for JSON, marque também Formatar JSON antes de comparar, que reescreve os dois lados com a mesma indentação. A quebra de linha do Windows contra a do Linux não é o problema aqui: a ferramenta converte as duas para o mesmo formato antes de comparar.