Veja exatamente o que mudou entre duas versões.
Compare dois textos ou duas versões de um ficheiro e veja exatamente o que mudou: colunas alinhadas, as palavras reescritas destacadas dentro de cada linha e um patch unificado pronto a aplicar.
Ainda não há comparação
Ponha uma versão de cada lado e carregue em Comparar. Tudo acontece dentro deste separador — nada é enviado.
Como funciona
Traga as duas versões
Cole-as, largue dois ficheiros ou deixe outra ferramenta passar-lhe uma. Nada é enviado e ainda nada é comparado.
Diga o que conta como alteração
Linhas, palavras ou caracteres; ignore a indentação, as maiúsculas ou as linhas vazias. Depois carregue em Comparar — o passo caro só corre quando o pede.
Leia o resultado
Colunas alinhadas com as palavras reescritas destacadas, os blocos intactos dobrados e salto para a alteração seguinte numa só tecla.
Leve consigo
Um patch unificado que o git apply aceita, um relatório HTML autónomo, ou o texto revisto enviado diretamente para outra ferramenta.
Myers, em espaço linear
O algoritmo clássico O(ND) com o refinamento de dividir para conquistar. A memória mantém-se plana por muito distantes que estejam os dois ficheiros: 5.000 linhas comparam-se em cerca de 7 ms, contra os 590 ms e 200 MB que custa uma matriz LCS simples.
Destaque ao nível da palavra
Uma linha reescrita é comparada uma segunda vez, palavra a palavra, por isso o que acende são os três caracteres que realmente se mexeram — não um bloco vermelho maciço em frente a um verde.
A indentação é opcional
Reindente um ficheiro e uma comparação literal declara diferente cada linha. Ignore os espaços finais, todos os espaços, as maiúsculas ou as linhas vazias e ficam só as alterações verdadeiras.
Os blocos intactos dobram-se
Uma alteração num ficheiro de 4.000 linhas não devia obrigar a percorrer 4.000 linhas. Guarde uma, três ou oito linhas de contexto e abra qualquer bloco dobrado com um clique.
Fixe o alinhamento você mesmo
Quando dois blocos movidos emparelham mal, clique num número de linha de cada lado para os fixar juntos. Cada lado de um pino passa a ser resolvido sozinho, por isso uma correção nunca desarruma o resto.
A cor da sintaxe fica intacta
Vinte e duas gramáticas, carregadas só quando o ficheiro precisa de alguma. Uma palavra alterada dentro de uma cadeia mantém a cor de cadeia e ganha o fundo de alteração, em vez de uma apagar a outra.
Um patch que se aplica mesmo
Saída em formato diff unificado com cabeçalhos de bloco corretos, por isso o git apply e o patch aceitam-na. Ou exporte um relatório HTML autónomo, sem tipos de letra, scripts ou recursos para alojar.
Os ficheiros grandes continuam utilizáveis
As comparações grandes vão para um web worker para que os editores continuem a responder, só as filas visíveis são montadas, e a anulação guarda os caracteres que mudaram em vez de uma cópia do documento.
Veja exatamente o que mudou entre duas versões.
Um diff costuma ser a primeira coisa que se corre sobre algo que não se pode partilhar: uma configuração com credenciais, um contrato antes da assinatura, uma exportação clínica, o orçamento de um concorrente. O DiffSnap calcula a comparação dentro deste separador, por isso os dois documentos ficam na máquina onde os abriu.
O algoritmo de Myers, a correr na sua máquina
A comparação é o algoritmo de diferenças O(ND) de Myers com o refinamento de espaço linear, escrito em JavaScript e executado na sua própria máquina. Não há passo de envio, nem servidor, nem pedido que transporte o seu texto: corte a ligação depois de a página carregar e tudo continua a funcionar.
Um comparador feito para os ficheiros que as pessoas comparam mesmo.
Ver o que um colega mexeu numa configuração antes de ir para produção, encontrar a cláusula que se moveu entre dois rascunhos de um contrato, provar que uma tradução corresponde à origem de onde saiu, rever um patch numa máquina sem git instalado e decidir qual de duas exportações é a atual.
Os documentos que vale a pena comparar raramente são públicos: ficheiros de ambiente com chaves lá dentro, acordos sob confidencialidade, exportações com dados de clientes. Colar isso num serviço de comparação alojado entrega as duas versões inteiras ao servidor de outra pessoa. Aqui nunca saem do separador, por isso não há nada para registar, guardar em cache ou deixar escapar.
Perguntas frequentes
QQue tamanho de ficheiro aceita?+
Abrem-se ficheiros até 32 MB, e tudo o que passe de 512 KB espera atrás de um clique em vez de cair no editor sem aviso. Acima de cerca de 120.000 caracteres a comparação vai para um web worker para que a página continue a responder. Dois ficheiros que quase nada partilham atingem um limite de trabalho e são declarados totalmente reescritos — a ferramenta di-lo no ecrã em vez de fingir o contrário.
QOs meus ficheiros são enviados para algum servidor?+
Não. Não há envio nem servidor envolvido: a comparação, o destaque e todas as exportações correm dentro do separador. Pode desligar-se da rede depois de a página carregar e continuar a usá-la.
QPorque diz que mudou tudo se eu só reindentei?+
Porque por omissão cada caráter conta, espaços e tabulações incluídos. Mude a opção de espaços para «Ignorar todos os espaços» e ficam só as alterações reais. Há opções equivalentes para as maiúsculas e para as linhas vazias.
QColore a sintaxe?+
Sim — vinte e duas gramáticas, detetadas pela extensão do ficheiro ou pela forma do texto, e carregadas só quando uma comparação precisa delas. A cor da sintaxe e o destaque das palavras alteradas são desenhados em conjunto, por isso nenhum tapa o outro.
QPosso exportar o resultado?+
Sim. Um .patch unificado com cabeçalhos de bloco corretos que o git apply e o patch aceitam, um relatório HTML autónomo sem nada externo para carregar, um resumo em texto simples para uma mensagem de commit ou um bilhete, e o texto revisto à parte.
QAs duas versões alinharam mal. Posso corrigir?+
Sim. Clique num número de linha de um lado e depois na linha correspondente do outro, e esse par fica fixado. Tudo o que está antes e depois de cada pino é comparado de forma independente, por isso uma correção nunca desloca o resto do ficheiro.