Tout projet finit par dériver : une configuration qui marchait hier, un .env différent d'une machine à l'autre, du code généré qui ne correspond plus, des logs d'avant et d'après un déploiement. Les comparer à l'œil, ligne par ligne, est lent et source d'erreurs. Un outil de diff donne la réponse directe : ce qui est identique, ajouté, supprimé ou modifié.
Ce comparateur ne fait que ça : il aligne deux textes, surligne ce qui diffère et vous laisse relire changement par changement. Il ne fusionne pas et ne devine rien. Pas d'envoi, pas de compte, pas de backend.
Comparez .env, nginx.conf, docker-compose.yml ou manifestes Kubernetes entre commits ou serveurs pour trouver la ligne modifiée.
Comparez les variables ou les feature flags de staging et production et repérez une clé manquante ou un booléen inversé avant l'incident.
Avant de commiter, comparez la sortie de clients OpenAPI, de stubs Protobuf ou de SQL de migration et ne regardez que ce qui a vraiment changé.
Placez deux logs, exports CSV ou extraits NDJSON côte à côte : les lignes ajoutées et supprimées révèlent régressions, événements perdus ou trous dans un pipeline.
L'éditeur accepte du texte au lieu de binaires, et offre trois chemins qui se terminent tous par la même vue synchronisée. Choisissez la méthode qui correspond à l'endroit où se trouve votre contenu.
| Méthode | Quand l'utiliser | Ce qui se passe |
|---|---|---|
| Coller | Un extrait est déjà dans votre presse-papiers, comme un bloc de code d'un PR, un extrait de journal ou une configuration copiée depuis SSH. | Cliquez sur Coller de ce côté ou appuyez sur Ctrl+V / Cmd+V. L'éditeur de ce côté est remplacé par le texte du presse-papiers et le diff est recalculé. |
| Télécharger | Le contenu se trouve sur le disque, comme un fichier .txt, .json, .yml, .xml ou tout fichier source basé sur du texte. | Faites glisser le fichier sur la zone de dépôt ou cliquez dessus pour ouvrir le sélecteur de fichiers. Un seul fichier par côté est accepté. Les binaires comme .pdf, .png, .zip ou .exe sont rejetés. Les fichiers de plus de 10 Mo sont attachés en tant que Référence de fichier et diffusés en continu. |
| Transfert d'outil | Vous venez de décoder deux charges utiles Base64 dans des onglets séparés et vous voulez savoir pourquoi ils diffèrent, ou la sortie d'un formateur est prête à être comparée. | Sur la page Base64, chaque décodage ouvre un onglet numéroté. Survolez un onglet et cliquez sur l'icône ⇄ : les deux textes décodés arrivent ici, à gauche et à droite, avec le nom de chaque onglet comme nom de fichier. Le même transfert fonctionne depuis la comparaison JSON : ouvrez cette page et le contenu est déjà chargé. |
Le résultat est une vue côte à côte synchronisée : les deux panneaux défilent ensemble, de sorte que chaque modification d'un côté reste alignée avec son équivalent de l'autre. La maquette annotée ci-dessous montre la disposition réelle :
+, − ou ~ pour ajouter, supprimer ou modifier.+. Dans l'exemple, PORT=8080 n'apparaît qu'à droite, car la ligne gauche est absente.− et barrée. Ici PORT=3000 a été supprimé en production, pour que vous voyiez exactement où.~ et l'étendue différente est mise en évidence en ligne. TIMEOUT=30 → TIMEOUT=60 est une seule édition.Les fichiers de plus de 10 Mo ne tiennent pas confortablement dans une propriété de chaîne React. L'éditeur passe à un chemin de diffusion au moment où l'un des côtés dépasse le seuil, que le contenu provienne d'un collage ou d'un objet File déposé.
Gros fichier détecté. Mode lecture seule optimisé activé pour les performances. L''historique (Annuler/Rétablir) et le pliage sont désactivés. Affichage des données segmentées au fur et à mesure du chargement.
readOnly et domReadOnly sont vrais sur les deux panneauxLe seuil de 10 Mo s'applique par cote. En dessous, votre contenu est preserve automatiquement si vous rechargez l'onglet. Au-dessus, le fichier est diffuse directement dans le visualiseur sans etre stocke, donc un rechargement repart de zero. Effacer les deux cotes remet l'editeur en mode interactif complet.
Tout sur cette page s'execute dans votre navigateur. Il n'y a pas de telechargement, pas de traitement cote serveur, et pas de stockage au-dela de ce qui est necessaire pour afficher la comparaison actuelle.
Cela signifie également que les limites sont locales et ne sont pas imposées par un quota :
Le texte ne quitte jamais l'appareil. Fermez l'onglet et le contenu disparaît ; rechargez et le magasin est vide.
Des dizaines de mégaoctets sont confortables sur un ordinateur de bureau. Le plafond pratique est la mémoire disponible de l'onglet, et les très gros fichiers sur une seule ligne sont les plus difficiles à rendre.
Les fichiers sont lus localement depuis votre appareil. Le reseau n'est utilise que si vous importez explicitement du contenu via une URL.
Voici les cas qui surprennent les personnes qui comparent des fichiers pour la première fois. Chacun est un comportement réel, pas un bug, et a une solution simple.
ignoreTrimWhitespace est faux, de sorte que le diff traite l'indentation et les espaces de fin comme significatifs. C'est délibéré car pour le texte brut, un espace est une donnée. Dans le mode JSON, le même indicateur est vrai. Si le bruit vous dérange, appuyez sur Couper (Trim) : il coupe chaque ligne, supprime entièrement les lignes vides et réduit les suites de deux espaces ou plus en un seul.CRLF (\r\n), tandis que macOS/Linux et la plupart des extractions git utilisent LF (\n). Trim gère cela aussi : il divise sur \n et trim() enlève le \r, normalisant les fins de ligne en LF. ou mojibake▾Non. Le collage, le glisser-déposer, l'import par URL et le calcul de la comparaison se font dans votre navigateur. Rien n'est envoyé à un serveur, et le contenu disparaît à la fermeture de l'onglet.
Tout fichier texte : .txt, .env, .json, .yml, code source… Les binaires, comme les PDF ou les images, sont bloqués avant lecture.
Il modifie le contenu de l'éditeur : il supprime les espaces en début et fin de ligne, retire les lignes vides et réduit les espaces répétés à un seul. Si vos lignes vides sont voulues, attention. Le fichier d'origine n'est pas touché.
Il n'y a pas de limite stricte, mais au-delà de 10 Mo on passe en lecture seule et la limite pratique est la mémoire de l'onglet.
Oui. Sur la page Base64, chaque décodage ouvre un onglet numéroté : survolez-en un, cliquez sur l'icône ⇄, puis faites de même avec le second. Les deux textes s'affichent ici, côte à côte. La comparaison JSON permet le même transfert.
La comparaison JSON comprend la structure JSON et ignore le bruit des espaces ; la comparaison de dossiers compare des arborescences ; ce comparateur de fichiers sert au texte brut, où les espaces comptent et où il faut une comparaison stricte ligne à ligne.
Une fois les différences passées en revue, si le contenu est du JSON, validez-le avec le formateur JSON et utilisez la comparaison JSON pour ignorer les espaces ; pour des répertoires entiers, la comparaison de dossiers ; et pour les valeurs encodées, le décodeur Base64.
Collez ou glissez deux fichiers texte et comparez-les côte à côte, jusqu'à 30 Mo par fichier. Chaque ligne ajoutée, supprimée ou modifiée est signalée. Tout dans votre navigateur, rien n'est envoyé.