Formatage et validation JSON en ligne, gratuits
Collez votre JSON pour le formater, le minifier ou le valider instantanément. Tout le traitement se fait dans votre navigateur.
Ce qu'est JSON et pourquoi il a conquis le web
JSON (JavaScript Object Notation) est un format d'échange de données textuel dérivé de la syntaxe littérale d'objet de JavaScript. Il prend en charge six types de données (objets, tableaux, chaînes, nombres, booléens et null) et rien d'autre. Douglas Crockford a spécifié le format en 2001 comme alternative délibérément minimaliste à XML, en publiant la conception sur json.org avec l'objectif explicite de faire « l'alternative sans graisse à XML ». L'IETF a normalisé JSON sous le nom de RFC 4627 en juillet 2006, l'a affiné en RFC 7159 en mars 2014, puis à nouveau en RFC 8259 en décembre 2017 (STD 90 actuel, le standard actif, également publié en parallèle comme ECMA-404). La conquête par JSON du plan de données du web s'est faite à peu près entre 2008 et 2014 : avec la croissance des single-page apps et des clients mobiles, les charges utiles XML verbeuses utilisées par les API antérieures ont été remplacées par JSON. En 2026, pratiquement chaque API REST publique se documente en JSON ; XML survit dans les formats de documents et l'intégration d'entreprise mais JSON détient l'économie des API. Cet outil lit le JSON, le valide par rapport à la spec, et le ré-émet formaté (indenté, avec sauts de ligne) ou minifié (espaces blancs supprimés).
Ce que « Format JSON » fait vraiment
JSON est insensible aux espaces blancs au niveau de la spec, un parseur lit {"name":"Alice","age":30} de manière identique à la forme indentée multi-lignes. La différence visible est purement pour les lecteurs humains. Le formatage (aussi appelé « pretty-print » ou « beautifying ») insère une indentation entre les niveaux imbriqués, place chaque propriété sur sa propre ligne, et ajoute un espace après le deux-points entre clé et valeur. La minification fait l'inverse : elle supprime chaque octet d'espace blanc sauf à l'intérieur des littéraux de chaîne. Les réponses HTTP de production sont typiquement minifiées pour économiser de la bande passante (gzip et Brotli en bord de CDN s'occupent du reste) ; durant le développement, c'est la version formatée qu'on lit. Les conventions de formatage standard : 2 espaces par niveau d'indentation (le défaut web moderne, défaut de Prettier, norme de l'écosystème JavaScript), 4 espaces pour les bases de code qui suivent les conventions d'inspiration Python, ou 1 tabulation pour les projets qui préfèrent l'indentation par tabulation. JSON.stringify() en JavaScript prend un entier ou une chaîne en deuxième argument contrôlant exactement cela, JSON.stringify(data, null, 2) produit une sortie indentée à 2 espaces. Cet outil expose les trois mêmes options.
JSON est strict, les règles qui font trébucher
La grammaire de JSON est connue pour son intransigeance. Les clés d'objets doivent être entourées de guillemets doubles (les guillemets simples ne sont pas légaux). Les valeurs de chaîne doivent utiliser des guillemets doubles. Pas de virgule traînante après la dernière propriété d'un objet ou le dernier élément d'un tableau, source fréquente de surprise pour les développeurs JavaScript parce que JS lui-même accepte les virgules traînantes. Pas de commentaires: contrairement à YAML ou JavaScript, JSON n'a pas de syntaxe de commentaire. Pas de valeur undefined: JSON n'a que null ; tenter d'encoder en JSON le undefined de JavaScript supprime entièrement la propriété. Les nombres doivent être en forme JSON-décimale: pas de zéros initiaux (007 illégal), pas d'hexa (0x7F illégal), pas d'Infinity ni de NaN. Les chaînes doivent être en UTF-8 valide: la plupart des parseurs tolèrent les problèmes de paire de substitution UTF-16 mais la spec exige du Unicode bien formé. Les clés en double sont techniquement valides selon la spec mais produisent un comportement indéfini dans la plupart des parseurs (la dernière valeur l'emporte généralement). Plusieurs variantes de JSON assouplissent ces règles : JSON5 (Aseem Kishore, 2012) autorise les virgules traînantes, les guillemets simples, les commentaires et d'autres assouplissements ergonomiques ; JSONC (utilisé par le tsconfig.json de VS Code et similaires) est du JSON avec commentaires de ligne C autorisés ; HJSON vise une convivialité humaine avec les clés entre guillemets optionnelles. Aucun n'est du JSON proprement dit, ils ont besoin de leur propre parseur, et la plupart des outils de production attendent du JSON strict selon RFC 8259.
Là où le JSON formaté gagne sa croûte
- Lecture des réponses d'API. Un endpoint REST renvoie du JSON minifié en production. Pour l'inspecter pendant le débogage, collez-le ici, voyez la structure avec une indentation propre et la coloration des clés, trouvez le bug.
- Lecture des lignes de log structurées. Les piles de logging modernes (Datadog, Splunk, Elasticsearch, CloudWatch) émettent un objet JSON par ligne de log, le tout sur une seule ligne. Pour lire rapidement une entrée de log complexe, formatez-la ici.
- Revue de fichiers de configuration.
package.json,tsconfig.json,composer.json, les politiques IAM AWS, les manifestes JSON Kubernetes, tous sont plus faciles à relire formatés de manière cohérente. L'option « Sort Keys » produit un ordre alphabétique canonique utile pour differ deux configs. - Comparer deux documents JSON. Formatez les deux avec une indentation et un tri de clés cohérents, puis diffez les résultats dans votre outil de diff favori. Sans normalisation, deux JSON sémantiquement identiques qui ne diffèrent que par les espaces blancs ou l'ordre des clés produisent des diffs bruyants.
- Validation d'un fichier JSON édité à la main. Collez, cliquez sur Validate, s'il y a une erreur de syntaxe, la position et le message vous disent exactement où regarder. Plus rapide que de faire passer le fichier dans un build qui échoue avec « unexpected token at line 47 ».
- Trouver le chemin vers une valeur profondément imbriquée. Ouvrez la vue Tree, cliquez sur la valeur qui vous intéresse, voyez son expression JSONPath, utile pour écrire des requêtes
jq, des assertions JSONPath dans les tests, ou pour accéder au champ dans le code. - Minification avant déploiement. Une config JSON livrée dans un bundle navigateur, une chaîne JSON-dans-JS embarquée, ou tout contexte où les octets comptent, la minification supprime tous les espaces blancs de formatage.
JSON dans l'écosystème d'outillage plus large
Pour les workflows en ligne de commande, jq (Stephen Dolan, première version en 2012) est le processeur JSON canonique, un petit binaire lié statiquement qui gère le formatage (jq .), le filtrage (jq '.users[] | .email'), la transformation, et les requêtes complexes avec son propre langage d'expression concis. La bibliothèque standard de Python inclut python -m json.tool pour un pretty-print en une commande. Le JSON.stringify(obj, null, 2) intégré à JavaScript est le formateur le plus rapide en navigateur/dans Node. JSON Schema (draft 2020-12 actuel, édité par Henry Andrews, Austin Wright, Greg Dennis et d'autres) fournit un vocabulaire pour déclarer la forme qu'un document JSON doit avoir (contraintes de type, propriétés requises, validateurs de format, logique conditionnelle) et c'est le standard pour la validation de contrat d'API, les spécifications OpenAPI 3.x, la validation de configuration, et la génération de formulaires basés sur JSON. JSONPath (Stefan Goessner, 2007, désormais standardisé sous RFC 9535 en février 2024) est le langage de requête de type XPath pour JSON, utilisé par le sous-ensemble plus simple de jq et par des outils comme Postman, jsonpath-ng (Python), et l'AWS CLI. JSON-LD (Recommandation W3C, version 1.1 actuelle publiée en juillet 2020) étend JSON avec les conventions de données liées du web sémantique et c'est le format que Google recommande pour le balisage de données structurées sur les pages web. JSON Patch (RFC 6902) et JSON Merge Patch (RFC 7396) définissent des formats de diff/patch standardisés pour les documents JSON.
Vue Tree, pourquoi c'est important
Un document JSON pretty-print de taille même modérée (quelques centaines de lignes) est difficile à naviguer en tant que texte plat. La vue tree de cet outil réduit chaque objet et tableau en un nœud développable, vous laisse cliquer pour ne voir que les niveaux qui vous intéressent, et affiche l'expression JSONPath de tout nœud sur lequel vous cliquez. La fonctionnalité de chemin sur clic est le pont pratique entre « je vois la valeur que je veux dans le document » et « je peux écrire du code qui accède à cette valeur », collez le chemin dans jq, dans une requête JSONPath, dans la notation entre crochets de JavaScript, dans une assertion de test Postman. Pour les réponses d'API profondément imbriquées (Stripe, Shopify, Salesforce, n'importe quoi avec des modèles de domaine riches), vue tree + copie de chemin est le workflow qui passe de « je vois le champ » à « j'ai l'expression d'accès » en deux clics.
Confidentialité : validation uniquement dans le navigateur
Le JSON collé dans un formateur est fréquemment de vraies données de production, réponses d'API avec identifiants utilisateur, tokens de session, IDs internes d'entité, valeurs de configuration qui incluent des URLs d'endpoints et des feature flags. Les formateurs JSON côté serveur prennent une copie de chaque entrée dans leurs logs. Cet outil parse votre JSON avec le JSON.parse() intégré au navigateur, parcourt la structure résultante en JavaScript, et la ré-émet sous forme de chaîne, le tout dans votre onglet de navigateur. Vérifiez dans l'onglet Réseau des DevTools en cliquant sur Format (aucune requête ne part), ou mettez la page hors ligne (mode avion) après son chargement et le formateur fonctionne toujours. Sûr pour les réponses d'API de production, la configuration interne, le JSON contenant des tokens ou des clés, ou tout document que vous ne voudriez pas voir copié sur le disque dur d'un inconnu.
Questions fréquentes
Pourquoi mon JSON échoue-t-il à la validation ?
Les erreurs les plus courantes : virgules traînantes après la dernière propriété/élément (légales en JavaScript et JSON5, illégales en JSON standard) ; guillemets simples au lieu de doubles (JSON exige " uniquement) ; clés non quotées (les littéraux d'objet JavaScript autorisent {name: "Alice"} mais JSON exige {"name": "Alice"}) ; commentaires (JSON n'a pas de syntaxe de commentaire, utilisez JSON5 ou JSONC si vous en avez besoin) ; valeurs undefined (JSON n'a que null) ; crochets/accolades manquants ; flottants spéciaux comme NaN ou Infinity (illégaux en JSON). Le message d'erreur du validateur indique la ligne et la colonne ; vérifiez là d'abord.
Quelle est la différence entre formater et minifier ?
Le formatage ajoute indentation, sauts de ligne et espaces pour rendre le JSON lisible ; la minification supprime tout espace blanc inutile pour le rendre aussi petit que possible. Le contenu réel des données est identique, les parseurs JSON ignorent les espaces blancs au niveau syntaxique. Utilisez le formaté pour le développement, le débogage et la revue de code ; utilisez le minifié pour la transmission HTTP, le JSON intégré dans des bundles JavaScript, ou tout contexte où les octets comptent. L'infrastructure moderne (gzip sur les réponses HTTP, Brotli en bord de CDN) compresse JSON agressivement, donc la différence de bande passante est plus petite qu'il n'y paraît, mais le minifié reste légèrement plus petit et plus rapide à parser.
Y a-t-il une limite de taille ?
Pas de plafond strict, mais les limites pratiques dépendent de la mémoire du navigateur. Les fichiers jusqu'à ~10 Mo se formatent et se valident en bien moins d'une seconde sur des appareils modernes ; les fichiers de la plage 50-100 Mo peuvent figer brièvement l'onglet pendant que JSON.parse() parcourt la structure. Pour du JSON très volumineux (gigaoctets, typique des grands exports d'API ou des dumps de logs NDJSON), les outils en ligne de commande (jq, python -m json.tool, node -e) les gèrent mieux parce qu'ils peuvent les traiter en flux plutôt que de tout charger en mémoire.
Que fait « Sort Keys » et quand devrais-je l'utiliser ?
« Sort Keys » classe par ordre alphabétique les clés de chaque objet récursivement. La sémantique des données est inchangée (l'ordre des clés d'un objet JSON est techniquement indéfini selon la spec, bien que la plupart des parseurs préservent l'ordre d'insertion) mais la sortie devient canonique. Utile pour differ deux documents JSON qui devraient être sémantiquement équivalents (sans tri, les différences d'ordre des clés produisent des diffs bruyants), et pour produire des sorties de build reproductibles (les mêmes données devraient toujours se sérialiser en JSON identique octet à octet, peu importe comment elles ont été construites en mémoire).
Mes documents JSON sont-ils téléversés ?
Non. Tout le parsing, la validation, le formatage, le tri et le rendu de l'arbre se passent dans votre navigateur via JSON.parse() et JavaScript. Le JSON collé ne traverse jamais le réseau. Vérifiez dans l'onglet Réseau des DevTools en cliquant sur Format (aucune requête ne part), ou mettez la page hors ligne (mode avion) après son chargement. Sûr pour les réponses d'API propriétaires, la configuration interne, le JSON contenant des tokens ou des données de session, ou tout ce qui est couvert par un NDA.
Outils associés
Encodage et décodage Base64 en ligne, gratuits
Encodez du texte en Base64 ou décodez du Base64 en texte instantanément. Prend en charge la conversion de fichier en Base64. Gratuit, sans inscription, fonctionne dans votre navigateur.
Prévisualisation Markdown en ligne, gratuite
Écrivez du Markdown et visualisez un aperçu rendu en direct, côte à côte. Prend en charge les titres, gras, italique, code, tableaux, listes, et plus encore. Gratuit, sans inscription.
Comptage de mots et de caractères en ligne, gratuit
Comptez les mots, caractères, phrases, paragraphes et temps de lecture estimé instantanément. Gratuit, sans inscription, fonctionne dans votre navigateur.