Artigo
Compare trechos de código sem enviá-los
Toda vez que você cola dois arquivos em uma ferramenta de diff online, esse código sai da sua máquina. Arquivos de configuração, consultas de banco de dados, chaves de API enterradas em um trecho .env: tudo isso viaja para um servidor que você não controla. Este artigo explica como algoritmos de diff funcionam, o que as opções de granularidade significam na prática e por que manter a comparação local importa.
O que um Diff Calcula
Uma ferramenta de diff recebe dois textos e encontra o conjunto mínimo de mudanças que converte um no outro. A ideia central é a subsequência comum mais longa, ou LCS: a sequência mais longa de linhas (ou tokens) que aparece em ambos os textos na mesma ordem, mesmo que não sejam adjacentes. Tudo que não está nessa subsequência comum é uma adição na nova versão ou uma exclusão da antiga. O algoritmo clássico para isso é de Myers (1986), que encontra o script de edição mais curto em tempo O((N+M)D), onde N e M são os comprimentos dos dois textos e D é o número de edições. Na prática, a maioria das ferramentas adiciona uma etapa de pré-processamento para ignorar linhas comuns no início e no fim, reduzindo o problema à região modificada. O resultado é um patch: uma sequência de blocos (hunks), cada um descrevendo um bloco contíguo de linhas de contexto, exclusões e adições. Este é o formato usado pelo Unix diff, Git e pela maioria das ferramentas de revisão de código.

Granularidade por Linha, Palavra e Caractere
A granularidade de um diff determina o que conta como unidade de comparação. O diff baseado em linhas é o padrão na maioria das ferramentas: cada linha é tratada como um único token. Isso é rápido e produz saída fácil de ler em contexto, mas marca uma linha inteira como modificada mesmo que apenas uma palavra nela tenha mudado. O diff em nível de palavra divide cada linha em palavras antes de executar o LCS. Isso dá uma visão mais detalhada do que mudou dentro de uma linha, o que é útil para prosa, valores de configuração ou JSON. O diff em nível de caractere vai mais longe e pode destacar uma única letra alterada dentro de um identificador longo. O tratamento de espaços em branco adiciona ruído. Uma linha terminando em CRLF e a mesma linha terminando em LF aparecerão como diferentes em uma comparação byte a byte estrita. A maioria das ferramentas oferece uma opção para normalizar as terminações de linha antes do diff. Da mesma forma, espaços no final, indentação com tabulação versus espaço e linhas em branco podem produzir saída de diff espúria. Habilitar a normalização de espaços em branco geralmente é o padrão correto ao comparar código de diferentes editores ou sistemas operacionais.
O Risco de Privacidade das Ferramentas de Diff Online
Serviços de diff e pastebin online são convenientes: abra uma URL, cole dois trechos, obtenha uma saída colorida. O problema é que o texto que você cola é transmitido para um servidor de terceiros. Dependendo do serviço, esse texto pode ser registrado, indexado, armazenado indefinidamente ou compartilhado com provedores de análise. Isso importa mais quando o código contém material sensível. Credenciais hardcoded, nomes de host internos, lógica de negócio proprietária ou dados pessoalmente identificáveis podem todos acabar em uma colagem. Mesmo sem segredos explícitos, a estrutura do código interno pode revelar decisões de arquitetura que você preferiria manter privadas. O risco não é hipotético. Pesquisadores de segurança encontraram repetidamente credenciais e tokens internos em pastes públicos. Alguns serviços retêm pastes mesmo após um usuário excluí-los, porque cópias existem em caches ou backups. Não há como verificar o que um serviço remoto faz com o texto depois que ele chega. A única mitigação confiável é manter o diff local, o que significa executá-lo em uma ferramenta que nunca envia o texto pela rede.

Usos Práticos para um Diff Local
Diff não serve apenas para revisão de código. Alguns casos comuns onde um diff local é útil: Revisar edições em um documento ou arquivo de configuração antes de confirmar. Comparar duas versões de um Dockerfile, uma configuração Nginx ou um manifesto Kubernetes para entender exatamente o que mudou entre implantações. Verificar desvios de configuração entre ambientes. Se as configurações de produção e staging devem ser idênticas, exceto por nomes de host e segredos, um diff mostra imediatamente qualquer divergência não intencional. Comparar respostas de API durante a depuração. Colar dois payloads JSON de uma API REST ou GraphQL e executar um diff em nível de palavra identifica campos adicionados, valores alterados ou chaves removidas sem ler centenas de linhas manualmente. Revisar código gerado por modelo contra uma linha de base. Quando um modelo reescreve uma função, um diff em nível de linha mostra qual lógica mudou e qual permaneceu igual, mais rápido do que ler as duas versões de forma independente. Em todos esses casos, o texto envolvido pode ser sensível, e mantê-lo fora de um servidor remoto é a escolha direta.
Fazendo no Navegador, sem Enviar
A ferramenta text-diff neste site executa todo o cálculo de diff no seu navegador usando JavaScript. Você cola dois textos nos dois painéis e o diff é renderizado imediatamente, linha por linha, até 3000 linhas por lado. Nada é enviado para um servidor. O texto nunca sai do seu dispositivo. A implementação usa um algoritmo padrão baseado em LCS operando em linhas: cada linha é um token, e a ferramenta determina se ela está inalterada, adicionada ou removida encontrando a subsequência comum mais longa entre as duas versões. Linhas inalteradas são exibidas sem destaque, linhas adicionadas em verde, linhas removidas em vermelho, junto com uma contagem contínua de adições e remoções. Não há modo por palavra ou por caractere nem alternância de normalização de espaços em branco hoje, então uma linha que difere apenas em espaços à direita ou estilo de quebra de linha ainda aparece como alterada. Como o cálculo é executado no lado do cliente, funciona offline. Não há conta, histórico nem retenção. Você pode comparar um arquivo de configuração local com um modelo, revisar um patch antes de aplicá-lo ou verificar duas respostas de API sem que nenhum desse texto alcance terceiros.
Ferramentas neste artigo
Perguntas frequentes
O diff baseado em linhas ou em palavras é melhor para código?
Para a maioria das tarefas de revisão de código, o diff baseado em linhas é o padrão e o mais fácil de ler, porque o código é estruturado por linhas. O diff baseado em palavras pode ajudar quando as linhas são longas e só uma pequena parte mudou, como em um valor JSON de linha única, mas esta ferramenta compara apenas no nível de linha; nesse caso, use a linha destacada como referência e identifique a olho a diferença menor dentro dela.
Por que ferramentas de diff online representam risco de privacidade mesmo usando HTTPS?
HTTPS protege o texto em trânsito contra interceptação, mas não o protege depois que chega ao servidor. O operador do serviço tem acesso completo ao conteúdo colado e pode registrá-lo, armazená-lo ou compartilhá-lo. TLS é sobre segurança de transporte, não sobre o que o destinatário faz com os dados.
A ferramenta text-diff armazena algum histórico de comparações anteriores?
Não. A ferramenta não tem backend e não faz requisições de rede. Ao fechar ou recarregar a aba, o texto desaparece. Não há conta, histórico salvo nem log no servidor.