Aidez-nous à améliorer JSON Workbench : racontez-nous comment vous l'utilisez.

Quand comparer des fichiers ?

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.

Configurations qui dérivent

Comparez .env, nginx.conf, docker-compose.yml ou manifestes Kubernetes entre commits ou serveurs pour trouver la ligne modifiée.

Différences entre environnements

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.

Relecture de code généré

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é.

Logs et données

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.

Obtenir les fichiers

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éthodeQuand l'utiliserCe qui se passe
CollerUn 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échargerLe 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'outilVous 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é.
Les trois chemins alimentent la meme paire de panneaux. L'icone de lien au-dessus de chaque panneau bascule ce cote entre Recherche et importation par URL. L'importation par URL recupere le texte distant et convertit automatiquement les URL de vue de fichier GitHub en leur equivalent brut.

Anatomie du résultat

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 :

FICHIERS · COMPARAISONtexte brut · côte à côte
Gauche — app.env.example
1HOST=localhost
2PORT=3000−
3LOG_LEVEL=info
4TIMEOUT=30~
Droite — app.env.production
1HOST=localhost
2PORT=8080+
3LOG_LEVEL=info
4TIMEOUT=60~
Le panneau gauche est l'original, et le panneau droit est le modifié. La gouttière montre les numéros de ligne, et la colonne des marqueurs internes montre +, − ou ~ pour ajouter, supprimer ou modifier.
1
Ajouté (vert)
Une ligne qui n'existe que sur la droite. Monaco la colore en vert et place un marqueur +. Dans l'exemple, PORT=8080 n'apparaît qu'à droite, car la ligne gauche est absente.
2
Supprimé (rouge)
Une ligne qui n'existe que sur la gauche. Elle est colorée en rouge avec un − et barrée. Ici PORT=3000 a été supprimé en production, pour que vous voyiez exactement où.
3
Modifié (ambre)
Une ligne appariée dont le texte diffère. Les deux côtés sont colorés en ambre avec un marqueur ~ et l'étendue différente est mise en évidence en ligne. TIMEOUT=30 → TIMEOUT=60 est une seule édition.
4
Aligné et consultable
Les lignes inchangées restent neutres et maintiennent les deux panneaux alignés. La Recherche par côté et les flèches de Modification Précédente / Suivante sautent entre les morceaux sans défilement.
Au-dessus de chaque panneau, la barre d'outils propose l'importation de Recherche ou d'URL, Corbeille pour effacer ce côté, un compteur de correspondances, la navigation des correspondances, Copier, Coller, et Couper (Trim). Les commandes à l'extrême droite parcourent les morceaux de diff globaux.

Navigation dans les gros fichiers

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é.

Mode lecture seule optimisé

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.

Reste interactif
  • Défilement, vue côte à côte synchronisée et numéros de ligne
  • Recherche par côté et importation d'URL
  • Navigation globale Modification Précédente / Suivante
  • Copier par côté et bascule du retour à la ligne (Alt+Z)
Temporairement désactivé
  • Édition : readOnly et domReadOnly sont vrais sur les deux panneaux
  • Transformations Couper, Formater et Minifier
  • Coller dans le grand panneau
  • Minimap, pliage, historique d'annulation/rétablissement et diagnostics JSON

Le 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.

Limites et confidentialité

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 :

Local d'abord

Le texte ne quitte jamais l'appareil. Fermez l'onglet et le contenu disparaît ; rechargez et le magasin est vide.

Limité par la mémoire

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.

Pas de téléchargement

Les fichiers sont lus localement depuis votre appareil. Le reseau n'est utilise que si vous importez explicitement du contenu via une URL.

Pièges

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.

Les différences d'espaces seuls illuminent toute la ligne▾
En mode fichier, 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 vs LF montre chaque ligne comme modifiée▾
Les fichiers de Windows terminent les lignes par 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.
Un fichier JSON minifié est une ligne énorme et le diff semble cassé▾
Une ligne unique n'a rien à quoi s'aligner : le moindre changement semble toucher tout le fichier. Passez-la d'abord dans le formateur JSON pour la répartir sur plusieurs lignes indentées, puis comparez à nouveau. De plus, les lignes énormes mettent aussi en échec Supprimer les espaces, qui travaille ligne par ligne.
La sortie ressemble à ou mojibake▾
C'est une incompatibilite d'encodage, pas une corruption. L'outil attend de l'UTF-8. Les fichiers enregistres en Windows-1252 ou Latin-1 avec des caracteres accentues s'afficheront de maniere illisible. Reenregistrez d'abord le fichier en UTF-8 (VS Code : indicateur d'encodage en bas a droite > Enregistrer avec l'encodage > UTF-8), puis comparez a nouveau.
Il n'y a pas de formateur, de minification ou de changement de langue, seulement Couper (Trim)▾
C'est exact : cette page fait une comparaison de texte brut et ne propose que « Supprimer les espaces ». Pour comparer selon la structure JSON, utilisez la comparaison JSON ; pour la mise en forme, le formateur JSON.

Questions fréquentes

Mes fichiers sont-ils envoyés ou stockés quelque part ?

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.

Quels types de fichiers peut-on comparer ?

Tout fichier texte : .txt, .env, .json, .yml, code source… Les binaires, comme les PDF ou les images, sont bloqués avant lecture.

Que fait exactement « Supprimer les espaces » ? Modifie-t-il mon fichier ?

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é.

Quelle taille maximale est acceptée ?

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.

Puis-je comparer ici du contenu décodé depuis Base64 ?

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.

En quoi est-ce différent de la comparaison JSON ou de dossiers ?

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.

Outils connexes

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.