aller au contenu principal

-- Comparez deux textes ligne à ligne et repérez d'un coup d'œil les ajouts et les suppressions --

Utilisation

Collez deux versions d'un même texte : la comparaison s'affiche ligne à ligne, avec les numéros de ligne de chaque côté. Les lignes ajoutées apparaissent en vert, les supprimées en rouge, les inchangées en neutre.

Pratique pour comparer deux réponses d'API, deux fichiers de configuration, ou deux rédactions d'un même paragraphe — sans passer par un dépôt Git.

Comment la comparaison est calculée

L'outil s'appuie sur la plus longue sous-séquence commune (LCS), le même principe que git diff. L'idée : trouver le plus grand ensemble de lignes présentes dans les deux textes, dans le même ordre. Tout ce qui reste est un ajout ou une suppression.

C'est ce qui explique qu'une ligne simplement déplacée apparaisse comme une suppression puis un ajout : la LCS raisonne sur des séquences, pas sur des déplacements.

Les fins de ligne sont normalisées : un texte en CRLF (Windows) et le même en LF (Unix) ne sont pas signalés comme différents.

Une limite assumée

La table LCS occupe une place proportionnelle au produit des deux longueurs. Pour deux textes de 2 000 lignes, cela fait déjà quatre millions de cellules. Au-delà de cette taille, l'outil refuse la comparaison plutôt que de figer l'onglet.

Comparer deux fichiers en ligne de commande

# comparaison classique, format unifié
diff -u ancien.txt nouveau.txt
 
# en ignorant les espaces
diff -u -w ancien.txt nouveau.txt
 
# avec la coloration de git, hors de tout dépôt
git diff --no-index ancien.txt nouveau.txt

Comparer deux objets en JavaScript

Pour des structures de données plutôt que du texte, comparer les représentations JSON normalisées évite les faux positifs dus à l'ordre des clés :

const normalize = (value) =>
  JSON.stringify(value, Object.keys(value).sort(), 2);
 
const identical = normalize(a) === normalize(b);