TextDiff est un outil diff en ligne gratuit qui trouve les différences entre deux textes. Placez côte à côte deux textes proches mais pas identiques — un brouillon et sa version révisée, un contrat envoyé et celui qui vous est retourné, l'ancienne et la nouvelle version d'un code — et l'outil colore les lignes ajoutées, supprimées ou modifiées, ainsi que le mot ou le caractère exact qui a changé à l'intérieur de chaque ligne.
Toute la comparaison se fait dans votre navigateur. Le texte saisi et les fichiers chargés ne sont pas envoyés à un serveur : vous pouvez donc comparer des documents internes ou des contrats qu'il serait délicat de transmettre à l'extérieur. Le calcul s'exécute dans un Web Worker, si bien que l'affichage ne se fige pas, même avec des dizaines de milliers de lignes.
Ouvrir le comparateur de texte
Fonctions principales
Surlignage par ligne et dans la ligne
Après avoir repéré les lignes modifiées, l'outil surligne dans chacune d'elles uniquement la partie changée, par mot, par bloc entre espaces ou par caractère.
Vue côte à côte ou unifiée
Passez de la vue côte à côte (side-by-side) à la vue unifiée (unified), qui se lit de haut en bas comme avec git.
Options pour ignorer
Vous pouvez ignorer les espaces en fin de ligne, la quantité d'espaces, tous les espaces, la casse et les lignes vides.
Normalisation des fins de ligne
Les sauts de ligne Windows (CRLF) et macOS/Linux (LF), ainsi que la présence ou l'absence du dernier saut de ligne, sont considérés comme identiques.
Comparaison JSON avec clés triées
Les deux JSON sont analysés, les clés des objets triées et l'indentation uniformisée avant la comparaison. Un simple changement d'ordre des clés n'est pas compté comme une différence.
Statistiques et navigation
Nombre de lignes ajoutées, supprimées et modifiées, pourcentage de similarité, et accès direct à la modification précédente ou suivante.
Modifications seules
Les longues portions inchangées sont repliées et seules 3 lignes de contexte sont conservées autour de chaque modification. Un clic déplie une portion repliée.
Glisser-déposer de fichiers
Déposez un fichier .txt, .md, .json, .csv ou de code dans une zone, ou deux fichiers d'un coup pour les comparer immédiatement.
Export patch et HTML
Copiez ou enregistrez le résultat au format diff unifié (patch), ou copiez-le sous forme de tableau HTML coloré à coller dans un e-mail ou un document.
Mode d'emploi
- Collez le texte de référence dans la zone de gauche (Original) et le texte à comparer dans la zone de droite (Modifié). Vous pouvez aussi déposer un fichier dans une zone ou utiliser le bouton d'ouverture au-dessus.
- Si « Comparer pendant la saisie » est activé, le résultat apparaît dès que vous arrêtez de taper. Sinon, cliquez sur [Comparer] ou appuyez sur Ctrl+Entrée.
- Au besoin, choisissez d'ignorer les espaces, la casse ou les lignes vides, l'unité de détail dans la ligne (mot, bloc, caractère) et le tri des clés JSON. Tout changement d'option relance la comparaison.
- Dans la barre de résultats, choisissez la vue côte à côte ou unifiée, et passez d'une modification à l'autre avec les boutons fléchés (ou Alt+↑/↓).
- Pour partager, copiez ou enregistrez le patch, ou copiez le résultat en HTML.
Les options de comparaison
| Espaces : comparer tels quels | Les espaces et tabulations sont traités comme n'importe quel caractère. Une indentation différente suffit à rendre deux lignes différentes. |
|---|---|
| Espaces : ignorer les espaces en fin de ligne | Seuls les espaces et tabulations restés en fin de ligne sont ignorés. Cela élimine les différences dues aux espaces qu'un éditeur supprime ou laisse automatiquement. (Proche de -Z dans GNU diff) |
| Espaces : ignorer la quantité d'espaces | Un espace ou plusieurs espaces comptent pour la même chose. En revanche, la présence ou l'absence d'espace reste une différence : 'a b' et 'a b' sont identiques, 'a b' et 'ab' ne le sont pas. (diff -b) |
| Espaces : ignorer tous les espaces | Tous les espaces sont supprimés avant la comparaison. 'a b' et 'ab' sont alors considérés comme la même ligne. (diff -w) |
| Détail dans la ligne : mot | Les changements sont signalés par groupes de lettres et de chiffres et par symboles. Adapté au code et à l'anglais. |
| Détail dans la ligne : bloc | Les changements sont signalés par blocs séparés par des espaces. Pratique pour relire un texte rédigé, où l'on raisonne en mots entiers avec leur ponctuation. |
| Détail dans la ligne : caractère | La comparaison se fait caractère par caractère. Utile pour repérer précisément un montant, une date ou un numéro d'article où un ou deux caractères seulement ont changé. |
| Ignorer la casse | Les majuscules et minuscules sont considérées comme la même lettre. |
| Ignorer les lignes vides | Les lignes vides ou ne contenant que des espaces sont exclues de la comparaison. Elles s'affichent en couleur atténuée et ne comptent pas dans les modifications. (Proche de diff -B) |
| Normaliser les fins de ligne | CRLF, CR et LF sont tous traités comme le même saut de ligne, et la présence ou l'absence de saut de ligne en fin de fichier est ignorée. Option désactivée, un CR en fin de ligne s'affiche comme ␍ et une ligne sans saut de ligne final comme ∅. |
| Trier les clés JSON | Les deux côtés sont analysés comme du JSON, les clés des objets triées par ordre lexicographique et le tout réécrit avec une indentation de 2 espaces avant la comparaison. L'ordre des tableaux n'est pas modifié. En cas d'échec de l'analyse, la position de l'erreur est indiquée. |
Les différences de fin de ligne (comme CRLF) ne sont comparées exactement que pour un texte chargé depuis un fichier. Dans un texte collé dans les zones de saisie, le navigateur convertit les sauts de ligne en LF : les différences de CR n’apparaissent donc pas.
Raccourcis clavier
Ctrl+Entrée / ⌘+Entrée | Comparer maintenant |
Alt+↓ / Alt+↑ | Aller à la modification suivante / précédente |
n / p (hors des zones de saisie) | Aller à la modification suivante / précédente |
Tab (dans une zone de saisie) | Insérer une tabulation |
Votre texte n'est envoyé nulle part
Le moteur de comparaison est un script JavaScript (diff-core.js) téléchargé avec cette page ; les textes et fichiers sont traités uniquement dans la mémoire du navigateur. Le contenu saisi n'est pas enregistré : le navigateur ne mémorise que le thème et les options choisies. Quand vous fermez la page, le texte saisi disparaît.
Questions fréquentes
Les textes comparés sont-ils enregistrés sur un serveur ?
Non. La comparaison est effectuée uniquement par du JavaScript dans votre navigateur, et le contenu saisi n'est envoyé à aucun serveur. Une fois la page ouverte, la comparaison fonctionne même sans connexion réseau.
Quelle taille de texte peut-on comparer ?
Chaque fichier peut peser jusqu'à 30 Mo, et même des comparaisons de dizaines de milliers de lignes sont calculées dans un fil séparé (Web Worker) sans figer l'affichage. Si les différences sont très nombreuses, l'outil peut produire, pour gagner du temps, un résultat approché plutôt que minimal. Au-delà de 4 000 lignes de résultat, seules les modifications sont affichées d'abord.
Quel algorithme est utilisé ?
La comparaison par ligne utilise l'algorithme de différence en O(ND) de Myers (1986), dans sa variante à espace linéaire. Lorsque le coût devient trop élevé, l'outil passe, comme GNU diff, à un découpage approché. À l'intérieur des lignes modifiées, le même algorithme compare de nouveau les mots, blocs ou caractères.
Comment distinguer « modifiée » et « ajoutée/supprimée » ?
Dans une portion modifiée, si une ligne supprimée et une ligne ajoutée ont un contenu suffisamment proche, elles sont appariées comme une même ligne corrigée et comptées comme « modifiée ». Les lignes sans correspondance sont comptées comme « ajoutées » ou « supprimées ».
Comment la similarité (%) est-elle calculée ?
C'est la proportion de caractères inchangés parmi l'ensemble des caractères des deux côtés (sauts de ligne compris). Les lignes identiques comptent entièrement ; pour les lignes modifiées, seule la partie restée identique dans la ligne compte.
Quelle différence entre « ignorer la quantité d'espaces » et « ignorer tous les espaces » ?
Ignorer la quantité d'espaces ne tient pas compte du nombre d'espaces : 'a b' et 'ab' restent donc différents. Ignorer tous les espaces supprime tous les espaces avant de comparer : les deux sont alors identiques. Soyez prudent avec cette seconde option pour du code où l'indentation a un sens, comme Python.
Peut-on appliquer un patch créé avec des options d'ignorance activées ?
Le patch est généré à partir des différences affichées, et les lignes de contexte sont prises dans l'original. Les différences ignorées n'y figurent donc pas : pour reproduire exactement un fichier, désactivez toutes les options avant de créer le patch.
Peut-on comparer des documents Word, HWP ou PDF ?
L'outil ne lit pas ces fichiers directement. Copiez le texte du document et collez-le pour le comparer ; les tableaux, notes de bas de page et la mise en forme peuvent alors être perdus. Le guide sur la comparaison de documents donne plus de conseils.
Fonctionne-t-il sur téléphone ?
Oui. Sur un écran étroit, les zones de saisie s'empilent verticalement et le résultat s'ouvre en vue unifiée. Vous pouvez passer à la vue côte à côte.
Guides
- Comment diff trouve-t-il les différences — LCS et algorithme de Myers
- Myers, Patience, Histogram — comparaison des algorithmes diff
- Lire un diff unifié (patch) — guide pour la revue de code
- Différences entre les options d'espaces — diff -b, -w, -B, -Z et leurs équivalents git
- Relire et comparer des contrats — trouver toutes les différences entre deux versions
- Comparer du JSON — tri des clés et normalisation
- Caractères de fin de ligne (CRLF, LF) et différences invisibles — quand toutes les lignes semblent modifiées