Aller au contenu

Comparer deux textes

Collez les deux versions et voyez exactement ce qui a changé, côte à côte, jusqu'au mot près. Le même algorithme que git — pas une approximation ligne par ligne qui s'effondre dès que vous ajoutez une ligne.

  • Jamais conservé
  • Pas de file d'attente, pas d'attente
  • Sans inscription, sans filigrane
Affichage

Comment ça marche

1

Collez les deux versions

L'original à gauche, la nouvelle version à droite. Ou déposez deux fichiers.

2

Lisez les différences

Les lignes ajoutées, supprimées et modifiées sont signalées, et dans une ligne modifiée, les mots exacts sont surlignés.

3

Ignorez ce qui ne compte pas

Majuscules, espacements et lignes vides peuvent chacun être ignorés — et la page vous prévient quand c'est la seule raison pour laquelle deux textes concordent.

Ce qui compte comme une même ligne

La comparaison porte sur une clé plutôt que sur la ligne elle-même. Chaque ligne est réduite à une clé selon les options « Ignorer » activées, le diff s'exécute sur les clés, et ce qui vous est affiché est toujours votre texte d'origine — activer « Ignorer les majuscules » change donc les lignes qui concordent sans modifier un seul caractère de ce qui est affiché. Il existe deux options d'espacement distinctes, et elles diffèrent plus que leurs libellés ne le laissent penser : l'une supprime les espaces aux extrémités d'une ligne, l'autre réduit d'abord les suites d'espaces et de tabulations à un seul espace, puis supprime les extrémités. Aucune ne retire complètement les espaces, et la réduction ne vise que les espaces et tabulations littéraux : un espace idéographique ou un espace insécable au milieu d'une ligne reste tel quel et compte toujours comme une différence.

Ignorer les lignes vides est l'option dont personne ne mentionne la conséquence : les lignes vides sont retirées avant la comparaison, si bien que les numéros de ligne affichés à côté du résultat ne comptent que les lignes restantes, et ne correspondent plus à ceux de votre fichier. Option désactivée, ils correspondent exactement. Le surlignage des mots à l'intérieur d'une ligne modifiée suit le réglage « Ignorer les majuscules » et rien d'autre — les options d'espacement ne s'y appliquent pas : des différences d'espacement dans une ligne modifiée pour une autre raison sont donc tout de même signalées comme des modifications.

Le résultat copiable est un diff unifié à tous les égards qui comptent pour le lire — les deux en-têtes de fichier, les lignes en moins, les lignes en plus, trois lignes de contexte autour de chaque modification —, à une exception près, à connaître avant de vous y fier. Ses marqueurs de bloc ne portent aucune plage de lignes : il est fait pour un rapport de bug, un commentaire de revue de code ou un e-mail, et les commandes patch et git apply le refuseront. Si vous avez besoin de quelque chose à appliquer plutôt qu'à lire, produisez-le avec git.

Si vous cherchez autre chose

Les formats structurés se comparent mal ligne par ligne, et l'échec est flagrant plutôt que subtil : deux documents JSON qui ne diffèrent que par l'ordre de leurs clés, ou deux CSV dont une colonne a été déplacée, reviennent sous la forme d'un mur de modifications qui ne vous apprend rien. Comparez-les avec un outil qui comprend leur forme — triez d'abord les clés des deux fichiers JSON et comparez les résultats, ou utilisez daff, qui compare les CSV en lignes et en colonnes et vous dira qu'une colonne a été déplacée plutôt que d'annoncer que chaque ligne a changé.

Deux dossiers, ou deux moments de l'historique d'un dépôt, relèvent de git plutôt que de cette page. Et pour de la prose dont les paragraphes ont été remis en forme, une vue par lignes n'est tout simplement pas la bonne granularité — git diff --word-diff ignore l'emplacement des retours à la ligne et ne vous montre que les mots qui ont bougé, ce qui est la comparaison que vous vouliez vraiment quand un document a été remis en page.

Questions fréquentes

Mes documents sont-ils conservés quelque part ?

Non. Rien n'est conservé et aucune requête n'est envoyée, et l'outil continue de fonctionner réseau déconnecté. Pour du texte, c'est plus important qu'il n'y paraît : ce que l'on colle dans un outil en ligne, ce sont des écrits non publiés, des projets d'actes juridiques, des travaux d'étudiants et des documents internes. Quand on compare deux versions d'un contrat ou d'un brouillon, c'est tout l'enjeu.

Pourquoi est-ce mieux qu'une comparaison ligne par ligne ?

Parce qu'un parcours ligne par ligne casse dès que quelque chose se déplace. Ajoutez une ligne en haut d'un fichier et toutes les lignes suivantes se retrouvent décalées d'un rang : une comparaison naïve signale alors le document entier comme modifié — ce qui ne sert à rien. Cet outil utilise l'algorithme de Myers, celui de git diff et de diff(1), qui trouve le plus petit ensemble d'insertions et de suppressions transformant un texte en l'autre. Ajoutez une ligne en haut : il signale une ligne ajoutée.

Peut-il montrer quels mots ont changé, et pas seulement quelles lignes ?

Oui. Quand une ligne a été modifiée plutôt qu'ajoutée ou supprimée, elle est comparée à nouveau mot par mot, et seuls les mots réellement modifiés sont surlignés. Sur un long paragraphe où quelqu'un a changé trois mots, vous voyez trois mots, pas un mur de couleur.

À quoi servent les options « Ignorer » ?

Elles changent ce qui compte comme une même ligne. Ignorer les majuscules, les espacements ou les lignes vides est utile pour comparer du code reformaté ou un texte recollé. Un détail important : si deux textes ne concordent QUE parce que quelque chose est ignoré, la page le dit explicitement au lieu de les déclarer identiques — « identiques » et « identiques si l'on ignore la casse » sont deux faits différents, et c'est en les confondant qu'on livre un fichier qu'on croyait inchangé.

Puis-je obtenir le résultat sous forme de patch ?

Oui — la comparaison peut être copiée sous forme de diff unifié, le format qu'utilisent git et les patchs envoyés par e-mail, avec quelques lignes de contexte autour de chaque modification. C'est le format à coller dans un rapport de bug.

Y a-t-il une limite de taille ?

La mémoire disponible, plutôt qu'une taille maximale fixe. Comparer deux longs documents est rapide, car le début et la fin identiques sont repérés et écartés avant que le vrai travail ne commence. Deux textes qui diffèrent en des milliers d'endroits distincts seront refusés avec une explication plutôt que de figer l'onglet — un diff de cette taille serait de toute façon illisible.

Peut-il comparer des fichiers Word ou PDF ?

Pas directement. Convertissez-les d'abord en texte — nos outils [PDF en texte](pdf-to-text) et [DOCX en TXT](docx-to-txt) font exactement cela — puis collez les résultats ici.

Bon à savoir : La comparaison est plafonnée à 8 000 différences. Au-delà, le coût de l'algorithme augmente assez vite pour figer l'onglet : la page s'arrête donc et le dit plutôt que de bloquer — deux documents réellement sans rapport atteignent vite cette limite. Comparer deux versions d'un même fichier ne l'atteint presque jamais.

Intégrez cet outil à votre site

Gratuit pour tout blog, page de cours ou article d'aide. Collez un seul extrait de code et vos visiteurs pourront l'utiliser directement sur votre page.