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.txtComparer 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);