100 % local — seus dados nunca saem do seu navegador

Diff de texto — um patch para colar num ticket

Compare dois textos linha a linha e receba um diff unificado, a mesma forma que o git imprime, pronto para colar num ticket ou numa revisão.

Instantâneo Privado Zero cookies

Original

Modificado

Diferenças

O que esta ferramenta faz

Entram dois textos, sai um diff unificado.

version: 1          version: 2
name: demo          name: demo
port: 8080          port: 8080
                    debug: true
@@ -1,3 +1,4 @@
-version: 1
+version: 2
 name: demo
 port: 8080
+debug: true

A comparação usa o algoritmo de Myers — o mesmo que está por trás do git diff — então o resultado é o menor conjunto de mudanças, não o primeiro encontrado. Textos idênticos dão um resultado vazio, que é a resposta que você queria.

Ler a saída

  • @@ -1,3 +1,4 @@ — onde a mudança está: três linhas a partir da 1 à esquerda, quatro a partir da 1 à direita.
  • - — a linha está no primeiro texto e não no segundo.
  • + — a linha está no segundo e não no primeiro.
  • Um espaço no começo — a linha não mudou e aparece como contexto. Três delas de cada lado, como o Git faz por padrão.

Quando duas linhas de aparência igual diferem

-a
+a

Nada a ver e, ainda assim, não é a mesma linha. Os suspeitos de sempre: um espaço no fim, uma tabulação contra espaços e um fim de linha do Windows \r\n contra um \n do Unix — um arquivo editado em duas máquinas coleciona os três. A comparação lê os caracteres exatos, então aponta uma diferença que não consegue lhe mostrar.

O cat -A no Unix imprime um $ no fim de cada linha e um ^M para um retorno de carro; quase todo editor tem um botão de “mostrar espaços”. Qualquer um dos dois torna a diferença visível num segundo.

O que ele não faz

  • Destaque por palavra. Um caractere mudado marca a linha inteira.
  • Detecção de renomeação ou de movimento. Um bloco movido se lê como uma remoção e uma adição, não como um movimento.
  • Uma fusão de três vias. Ele compara dois textos; não os reconcilia.
  • A marca \ No newline at end of file. Um texto que termina com quebra de linha contra outro que não termina aparece como uma linha vazia acrescentada, que é a mesma informação de forma mais simples.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

Duas linhas parecem iguais mas aparecem como `-` e `+`. Por quê?
Porque a diferença é invisível. Um espaço no fim da linha, uma tabulação onde o outro lado tem espaços, ou um fim de linha do Windows (`\r\n` contra `\n`) mudam a linha sem mudar o que você vê. A comparação é sobre os caracteres exatos, como a do Git. Para enxergá-los, passe o texto pelo `cat -A` no Unix, ou ligue “mostrar espaços” no seu editor.
O que querem dizer as linhas `@@`?
Elas situam a mudança: `@@ -1,3 +1,4 @@` quer dizer “a partir da linha 1, três linhas à esquerda; a partir da linha 1, quatro à direita”. Abaixo, uma linha que começa com `-` foi removida, `+` foi acrescentada, e um espaço quer dizer inalterada — três linhas de contexto ficam em volta de cada mudança, o mesmo padrão do Git.
Ele destaca a palavra que mudou?
Não: a comparação é linha a linha. Mude um caractere e a linha inteira aparece removida e acrescentada de novo. É isso que é um diff unificado, e é por isso que a saída cola limpa numa ferramenta de revisão; uma visão por palavras é outra coisa, e outra ferramenta.

Conversores relacionados