Qu'est-ce qu'un diff ?
Un diff est une comparaison structurée entre deux textes qui met en évidence ce qui a été ajouté, ce qui a été supprimé et ce qui est resté identique. Les développeurs l'utilisent au quotidien pour relire les modifications de code, auditer les écarts de configuration et réconcilier deux versions d'un document.
Cet outil exécute la comparaison entièrement dans votre navigateur via la bibliothèque jsdiff. Rien de ce que vous collez ou chargez n'est envoyé à un serveur.
Comment utiliser
Collez ou déposez vos deux entrées dans les champs Texte A et Texte B. Le diff se calcule automatiquement pour les entrées de moins de 512 Ko. Au-delà, un bouton Comparer apparaît pour vous laisser garder le contrôle.
Basculez entre les vues côte à côte et en ligne, ignorez les espaces ou la casse si nécessaire, et utilisez Formater le JSON pour normaliser les entrées JSON avant comparaison.
Algorithme
Basé sur l'algorithme de diff de Myers via jsdiff. L'outil calcule d'abord un diff au niveau des lignes, puis pour chaque paire de lignes supprimées/ajoutées adjacentes, effectue un second passage au niveau des mots pour mettre en évidence les mots réellement modifiés, la même convention utilisée par les pull requests GitHub.
Cas d'utilisation courants
Comparer deux fichiers de configuration (JSON, YAML, .env) pour repérer les écarts entre environnements.
Relire une modification de code avant de la committer, surtout quand on travaille hors éditeur.
Réconcilier deux versions d'un document, d'un journal ou d'un résultat de requête côte à côte.
Limites
L'outil ne compare que du texte. Les fichiers binaires sont détectés et rejetés pour garder un résultat pertinent.
Les entrées sont limitées à 5 Mo par côté. Au-delà de 512 Ko, le diff s'exécute dans un Web Worker en arrière-plan. La page reste réactive mais le diff prend proportionnellement plus de temps pour les très grosses entrées.
Les différences de fins de ligne (CRLF vs LF) et les espaces de fin de ligne sont normalisées. Elles n'apparaîtront jamais comme des changements.