Comparaison de différences de texte (Diff)

Comparez deux blocs de texte ligne par ligne et affichez les lignes ajoutées et supprimées mises en couleur. Utile pour vérifier les modifications d'un fichier de configuration, relire un document ou faire une revue de code sans Git. Tout le calcul s'effectue dans le navigateur ; le contenu saisi n'est jamais envoyé à un serveur.

Astuces

  • Collez la version avant et après d'un fichier de configuration (.env, YAML, JSON, etc.) pour voir instantanément quelles lignes ont été ajoutées ou supprimées.
  • Même sans Git installé, un simple copier-coller de deux versions permet de faire une revue de code sommaire ou de relire un document.
  • Une ligne qui a simplement changé de position est détectée comme une suppression plus un ajout, et non comme un "déplacement" — gardez cela en tête en lisant le résultat.
  • Les espaces, les sauts de ligne et la casse sont comparés de façon stricte, si bien qu'une ligne dont seule l'indentation a changé apparaîtra aussi comme modifiée.
  • Pour comparer un texte long, mettre un paragraphe par ligne avant de le coller permet de repérer les différences paragraphe par paragraphe d'un coup d'œil.

Questions fréquentes

Il permet de repérer les changements ligne par ligne dans des fichiers de configuration ou des documents, de faire une revue de code sans Git, ou de vérifier les révisions d'un contrat ou de conditions d'utilisation — bref, dès qu'il faut voir ce qui a changé entre deux versions de texte brut.

L'outil de comparaison de CSV associe les lignes de données tabulaires via une colonne clé, puis compare cellule par cellule. Cet outil compare au contraire du texte libre ligne par ligne, sans notion de colonnes, ce qui convient mieux aux fichiers de configuration ou à la prose qu'aux tableaux.

L'outil de comparaison de JSON analyse la structure du JSON (objets et tableaux) et compare par clé. Cet outil n'analyse aucune structure : il traite simplement chaque ligne comme du texte, ce qui le rend utilisable sur n'importe quel texte brut, pas seulement du JSON.

Les lignes réordonnées ne sont pas détectées comme un "déplacement". Elles apparaissent plutôt comme une suppression à l'ancienne position et un ajout à la nouvelle. C'est le même comportement que celui de la commande diff de Git et de la plupart des algorithmes de diff par ligne.

Non. Tout le calcul des différences s'exécute en JavaScript dans votre navigateur, et le texte saisi n'est jamais transmis à un serveur — vous pouvez donc l'utiliser sereinement même avec un contenu sensible.
ツールくん

Anecdote — comment le LCS (plus longue sous-séquence commune) calcule les différences de texte

L'algorithme le plus connu pour détecter les différences entre deux textes est l'"algorithme de diff de Myers", publié dans les années 1970 par l'informaticien Eugene Myers, chez IBM. La commande `diff` des principaux systèmes de gestion de versions, comme Git et SVN, repose sur cette famille d'algorithmes et détecte efficacement les lignes ajoutées et supprimées. Cet outil suit la même logique en calculant la plus longue sous-séquence commune (LCS) pour réduire le résultat à un ensemble minimal de changements.

La plus longue sous-séquence commune (LCS) est la plus longue séquence qui apparaît, dans le même ordre, dans les deux séquences comparées — ici, la séquence des lignes. La différence entre deux textes s'obtient en considérant chaque ligne absente de cette LCS comme "supprimée" ou "ajoutée" ; plus la LCS est longue, moins de changements s'affichent à l'écran. Une technique appelée programmation dynamique (PD) rend ce calcul praticable même pour des textes comportant de nombreuses lignes.

Les algorithmes de diff ont une faiblesse connue : lorsqu'une ligne se déplace simplement à une autre position, la plupart des implémentations ne le détectent pas comme un "déplacement" mais l'affichent comme une suppression associée à un ajout. C'est pourquoi comparer des textes dont l'ordre des lignes a été fortement remanié peut faire paraître la différence plus importante que le changement réel. Connaître cette particularité aide à interpréter les résultats sans se tromper.

→ Voir toutes les anecdotes