PK Systems PK Systems
Outils texte

Comparateur de texte

Comparez deux textes et voyez ce qui a changé. Granularité ligne ou mot, aperçu en direct, fonctionne entièrement dans votre navigateur.

Comparateur de texte

Différences


    

Qu'est-ce qu'un diff ?

Un diff (abréviation de différence) est un rapport côte à côte de ce qui a changé entre deux textes. L'usage classique est dans le contrôle de version — Git, SVN et compagnie utilisent les diffs pour montrer ce que chaque commit a modifié — mais la même idée est utile pour relire des éditions, comparer des contrats, repérer de petits changements dans des fichiers de configuration, ou vérifier qu'un document a survécu intact à un copier-coller. Cet outil calcule le diff avec un algorithme de plus longue sous-séquence commune, la même famille de techniques qui alimente git diff.

Comment utiliser cet outil

Collez la version originale dans A et la version modifiée dans B. Le diff apparaît en direct en dessous : les lignes (ou mots) verts sont des ajouts dans B, les rouges des suppressions de A, les lignes simples sont inchangées. Basculez entre granularité ligne et mot selon ce que vous voulez voir — le diff par ligne est meilleur pour le code ou le texte structuré, le diff par mot se lit mieux pour de la prose où de petits changements de formulation comptent. Les statistiques au-dessus de la sortie indiquent le nombre de tokens ajoutés, supprimés et inchangés.

Quand utiliser un diff par ligne ou par mot

Le diff par ligne est le bon choix par défaut pour le code, le JSON, le CSV, les fichiers de log et tout ce dont la structure se joue à la ligne. Un changement d'un seul caractère apparaît comme une ligne supprimée et une ligne ajoutée — facile à scanner, et conforme à ce que font les outils de contrôle de version. Le diff par mot brille pour la prose : il met en évidence les mots qui ont changé dans un paragraphe, pour voir les éditions sans relire tout le texte. Évitez le diff par mot sur de très longs documents — le calcul de LCS devient quadratique et commence à ralentir au-delà de quelques milliers de mots.

Questions fréquentes

Mon texte est-il envoyé quelque part ?
Non. Tout le diff est calculé dans votre navigateur. Vérifiez en ouvrant DevTools > Réseau et en collant vos textes — aucune requête n'est envoyée. L'outil est donc sûr pour comparer du contenu privé ou sensible comme des contrats, du code ou des fichiers de configuration.
Comment fonctionne l'algorithme de diff ?
Il construit une table de plus longue sous-séquence commune (LCS) entre les entrées tokenisées, puis parcourt la table à l'envers pour produire un script d'édition — la même technique introduite par Hunt-McIlroy et utilisée par le diff classique. Pour de très grandes entrées (au-dessus d'environ 2 000 tokens de chaque côté), l'outil retombe sur une comparaison naïve position par position, plus rapide mais moins optimale.
Pourquoi le résultat semble-t-il faux parfois ?
LCS choisit la plus longue sous-séquence commune, ce qui est mathématiquement optimal mais peut produire des résultats visuellement surprenants quand il y a beaucoup de tokens courts répétés (lignes vides, mots répétés). Si vous voyez des regroupements bizarres, basculez sur l'autre granularité — les diffs par ligne et par mot tranchent parfois différemment, et l'un correspondra généralement mieux à votre intuition.
Et les espaces ?
Les espaces comptent. Espaces en fin de ligne, changements d'indentation et fins de ligne CRLF vs LF apparaissent tous comme des différences. Si seuls les vrais changements vous intéressent, normalisez les deux textes (supprimez les espaces en fin, unifiez tabulations/espaces, unifiez les fins de ligne) avant de coller.
Puis-je exporter le diff ?
Pas encore en tant que patch unified-diff — cet outil se concentre sur la comparaison visuelle côte à côte. Pour exporter un patch au format unifié, lancez diff -u a.txt b.txt en ligne de commande, ou utilisez git diff --no-index a.txt b.txt pour une sortie plus riche, semblable à ce qu'affiche GitHub.
Pourquoi les fins de ligne sont-elles parfois marquées comme changements ?
Différents systèmes d'exploitation utilisent différentes conventions de fin de ligne : Windows utilise traditionnellement \r\n (CRLF), Unix et macOS utilisent \n (LF). Quand le texte est copié entre systèmes, les fins de ligne peuvent se mélanger et le diff traitera line\r et line comme distincts. Faites passer le texte par un outil comme dos2unix ou collez via un éditeur de texte simple qui normalise les fins avant comparaison.