DocumentsImagesMédiasOutils PDF

Comparer Texte en Ligne — Diff de Deux Textes

Compare des versions de code, de contrats ou d'articles et visualise chaque modification avec un code couleur.

Traité dans votre navigateur — aucun texte envoyé à un serveur

Différences visibles en quelques secondes

Diff ligne et caractère

Visualise les modifications au niveau de la ligne et au niveau du caractère à l'intérieur de chaque ligne modifiée.

100 % privé

La comparaison se passe dans ton navigateur. Tes textes ne sont jamais envoyés à un serveur.

Algorithme Myers

Implémentation de l'algorithme Myers diff en O(n+d), le même que git utilise en interne pour ses diffs.

Instantané

Les résultats apparaissent dès que tu colles le texte, sans bouton de conversion.

Trois étapes, sans complications

1

Colle les deux textes

Saisis le texte original dans le panneau gauche et le texte modifié dans le panneau droit. Il peut s'agir de code, de documents ou de tout texte brut.

2

Visualise les différences

Les lignes ajoutées apparaissent en vert, les lignes supprimées en rouge, et les lignes modifiées montrent la modification exacte mise en évidence au niveau du caractère.

3

Analyse les changements

Navigue entre les différences avec les boutons précédent/suivant. Consulte un résumé des lignes ajoutées, supprimées et inchangées.

Des questions ?

Les algorithmes de diff modernes reposent sur le calcul de la LCS (Longest Common Subsequence). À partir de deux textes A et B, l'algorithme trouve la plus longue séquence de lignes présente dans les deux dans le même ordre. Les lignes de A absentes de la LCS sont marquées comme supprimées (rouge), et les lignes de B absentes sont marquées comme ajoutées (vert). L'algorithme Hunt-McIlroy (1975), utilisé dans la commande Unix diff originale, a formalisé cette approche.

Le vert indique les lignes ajoutées dans le nouveau texte qui n'existaient pas dans l'original. Le rouge indique les lignes supprimées qui étaient dans l'original et ne sont plus présentes. Jaune ou sans couleur indique les lignes inchangées (contexte). En mode diff par caractère, dans une ligne modifiée, les nouveaux caractères sont surlignés en vert foncé et les caractères supprimés en rouge foncé, ce qui permet de voir la modification exacte à l'intérieur de la ligne.

Le diff ligne par ligne traite chaque ligne comme une unité atomique : une ligne est soit présente, soit absente, exactement comme git diff le fait. C'est idéal pour le code où les modifications portent sur des lignes complètes. Le diff caractère par caractère (aussi appelé word diff ou char diff) opère à l'intérieur de chaque ligne modifiée et indique exactement quels caractères ou mots ont changé. Il est plus utile pour les textes en prose, les contrats ou les textes où les modifications sont de légères retouches à l'intérieur des paragraphes.

Le diff est fondamental dans les systèmes de contrôle de version (git diff montre les modifications avant un commit), la revue de code (les pull requests sur GitHub affichent un diff), la comparaison de documents juridiques (contrats, conditions générales entre versions), le journalisme et la vérification des faits (comparer des versions de communiqués de presse) et le débogage (comparer la sortie attendue avec la sortie réelle dans les tests). Il est aussi utilisé dans les patchs logiciels : les fichiers .patch sont des diffs unifiés que git apply peut appliquer à un dépôt.

La LCS (Longest Common Subsequence) est le problème consistant à trouver la plus longue sous-séquence commune à deux séquences sans réordonner les éléments. Pour le diff de texte, les séquences sont les lignes du texte. La LCS représente les lignes qui n'ont pas changé ; tout ce qui n'est pas dans la LCS constitue une modification. L'algorithme de programmation dynamique standard pour la LCS a une complexité O(n×m), mais des algorithmes plus efficaces comme Myers diff (1986) atteignent O(n+d) où d est le nombre de différences.

Comment fonctionne le diff de texte : de la commande Unix à git

La commande diff a été introduite dans Unix par Doug McIlroy en 1974 et est devenue un outil fondamental de l'écosystème Unix. Son algorithme original, formalisé par Hunt et McIlroy dans l'article intitulé An Algorithm for Differential File Comparison (1975), calcule la plus longue sous-séquence commune (LCS) entre deux fichiers et exprime les différences comme un ensemble minimal d'opérations d'insertion et de suppression. Ce principe mathématique reste le fondement de tous les outils de diff modernes.

En 1986, Eugene Myers a publié un algorithme amélioré qui réduit la complexité à O(n+d) où d est le nombre de différences, le rendant nettement plus rapide quand les fichiers sont similaires (peu de différences). C'est l'algorithme qu'utilise Git en interne pour git diff, git log -p et les vues de pull requests sur GitHub et GitLab. Le format de diff unifié (avec les lignes préfixées par +, - et un espace) est devenu le standard universel pour échanger des patchs entre projets logiciels.

Au-delà du code, le diff trouve des applications dans le journalisme de données (comparer des versions de documents officiels), le droit (détecter les modifications entre versions de contrats) et la science (comparer des séquences génomiques). Convertir.ai implémente l'algorithme Myers diff entièrement dans le navigateur, avec une visualisation au niveau ligne et au niveau caractère, sans envoyer les textes à un serveur. Cela est particulièrement pertinent pour comparer des documents confidentiels tels que des contrats, du code propriétaire ou des données sensibles.