# Diff de texto online (comparar dois textos)

> O diff de texto compara dois textos e mostra o que foi adicionado, o que foi removido e o que ficou igual. Você pode comparar por linha, por palavra ou por caractere, e ignorar diferenças de maiúsculas e de espaços. A comparação é feita no seu navegador, sem enviar os textos a nenhum servidor.

- Endereço oficial: https://pradev.com.br/diff-de-texto
- Categoria: JSON, dados e formatadores
- Tipo: Utilitário
- Atualizado em: 2026-09-30
- Autor: Leonardo Gaertner (https://pradev.com.br/sobre)
- Preço: grátis, sem cadastro. O processamento acontece no navegador de quem usa.

## Como usar

1. Cole o texto original à esquerda e o texto modificado à direita.
2. Escolha comparar por linha (código e arquivos), palavra (textos) ou caractere (mudanças pequenas).
3. Use Ignorar maiúsculas e Ignorar espaços para descartar diferenças que não importam.
4. Em modo de linha, marque Só as diferenças para recolher os trechos iguais. Clique em Copiar diferenças para levar o resultado.

## Como funciona

A ferramenta acha a menor sequência de acréscimos e remoções que transforma o primeiro texto no segundo, com o algoritmo de Myers, o mesmo que o git diff usa por padrão. Tudo que não é acréscimo nem remoção é mostrado como igual.

No modo de linha, cada linha é uma unidade, com os números de linha dos dois textos. Nos modos de palavra e de caractere, o resultado sai em um texto só, com o que foi adicionado sublinhado e o que foi removido riscado. Quando o texto é muito longo e quase todo diferente (milhares de linhas), o cálculo é simplificado e o trecho aparece como trocado por inteiro.

O resultado copiado usa + e - no início de cada linha, no modo de linha, ou marca os trechos com [-removido-] e {+adicionado+}, nos demais. Não é o formato completo do git diff, que também traz cabeçalhos e blocos com @@.

### Exemplo por linha

```text
Original: a, b, c
Modificado: a, x, c, d
  a
- b
+ x
  c
+ d
```

## Em código

Para comparar textos em código: em JavaScript, pela maior subsequência comum de linhas; em Python, com o difflib, que já gera o formato do git diff.

```javascript
// Diferença linha a linha pela maior subsequência comum (LCS).
// Exata e curta; para arquivos com milhares de linhas, use o pacote diff ou o git.
function diffLinhas(antes, depois) {
  // \r\n (Windows) e \n (Linux) viram a mesma coisa, senão toda linha parece alterada
  const a = antes.replace(/\r\n?/g, '\n').split('\n');
  const b = depois.replace(/\r\n?/g, '\n').split('\n');
  // lcs[i][j]: quantas linhas em comum há entre a[i..] e b[j..]
  const lcs = Array.from({ length: a.length + 1 }, () => new Array(b.length + 1).fill(0));
  for (let i = a.length - 1; i >= 0; i--) {
    for (let j = b.length - 1; j >= 0; j--) {
      lcs[i][j] = a[i] === b[j]
        ? lcs[i + 1][j + 1] + 1
        : Math.max(lcs[i + 1][j], lcs[i][j + 1]);
    }
  }
  const saida = [];
  let i = 0;
  let j = 0;
  while (i < a.length || j < b.length) {
    if (i < a.length && j < b.length && a[i] === b[j]) {
      saida.push(`  ${a[i++]}`);
      j++;
    } else if (i < a.length && (j === b.length || lcs[i + 1][j] >= lcs[i][j + 1])) {
      saida.push(`- ${a[i++]}`);
    } else {
      saida.push(`+ ${b[j++]}`);
    }
  }
  return saida;
}
```

_JavaScript_

```python
import difflib


def diff_unificado(antes: str, depois: str, nome: str = "arquivo") -> str:
    """O mesmo formato do git diff e do comando patch."""
    linhas = difflib.unified_diff(
        antes.splitlines(),
        depois.splitlines(),
        fromfile=f"a/{nome}",
        tofile=f"b/{nome}",
        lineterm="",
    )
    return "\n".join(linhas)


def semelhanca(antes: str, depois: str) -> float:
    # De 0 a 1 (1 = iguais). Serve para achar textos parecidos, não para gerar patch
    return difflib.SequenceMatcher(None, antes, depois).ratio()
```

_Python_

## Perguntas frequentes

### Qual a diferença entre comparar por linha, palavra e caractere?

Por linha, a unidade é a linha inteira, o que serve para código e arquivos de configuração. Por palavra, o diff aponta as palavras que mudaram dentro de um texto. Por caractere, mostra até uma letra trocada, útil para achar erros de digitação.

### Por que uma linha aparece como diferente se parece igual?

Provavelmente por um espaço a mais no fim ou no meio da linha, ou por letras maiúsculas e minúsculas. Marque Ignorar espaços ou Ignorar maiúsculas para descartar essas diferenças.

### Como comparar dois JSONs?

Formate os dois com o formatador de JSON do PraDev, com a mesma indentação e, se preferir, com as chaves ordenadas, e cole o resultado aqui no modo de linha. Assim só aparecem as diferenças de conteúdo.

### Os textos que eu colo são enviados a algum servidor?

Não. A comparação acontece no seu navegador e o conteúdo não é enviado nem armazenado pelo PraDev.

## Fontes

- [Documentação do git diff](https://git-scm.com/docs/git-diff)

## Guias

- [Como comparar dois textos (diff) no terminal e em código](https://pradev.com.br/guias/como-comparar-textos-diff): Como comparar textos e arquivos com diff e git diff, ler o formato unificado e gerar diferenças em JavaScript e Python, com os erros de quebra de linha.

## Ferramentas relacionadas

- [Formatador JSON](https://pradev.com.br/formatador-json): Formate, indente, minifique e valide JSON online. Mostra a linha e a coluna do erro. Grátis, e o que você cola não sai do navegador.
- [Validador JSON](https://pradev.com.br/validador-json): Valide JSON online e veja a linha e a coluna do erro, o tipo e a profundidade. Grátis, e o que você cola não sai do navegador.
- [Testador de Regex](https://pradev.com.br/regex-tester): Teste expressões regulares online: destaque dos casamentos, grupos e flags. Usa o motor do JavaScript. Grátis, direto no navegador.
- [Conversor de Timestamp Unix](https://pradev.com.br/timestamp-converter): Converta timestamp Unix (segundos ou milissegundos) em data e hora, e data em timestamp. Grátis, com o seu fuso horário e em UTC.
- [Comparador JSON](https://pradev.com.br/comparador-json): Compare dois JSON online e veja o caminho de cada chave adicionada, removida ou alterada. A ordem das chaves não conta. Grátis.
- [Conversor CSV para JSON](https://pradev.com.br/conversor-csv-para-json): Converta CSV em JSON online: detecta o separador (vírgula ou ponto e vírgula) e usa o cabeçalho como chaves. Grátis, no navegador.
