JSON Minify

Supprimez les espaces du JSON et voyez exactement combien d'octets vous avez gagnés

JSON

Minifié

JSON Minify

Supprimez les espaces du JSON et voyez exactement combien d'octets vous avez gagnés

Fonctionnalités

  • Minification en un appel via JSON.parse + JSON.stringify — passe par un vrai parseur, donc une entrée syntaxiquement invalide échoue vite avec le message d'erreur exact du moteur JavaScript
  • Statistiques de taille en octets précises : TextEncoder.encode().length mesure les octets UTF-8 (pas le nombre de caractères), donc les caractères multi-octets et emoji sont pesés correctement
  • Ligne d'économie affiche le delta absolu en octets et le pourcentage de la taille d'entrée — correspond à ce qu'une charge utile minifiée puis gzippée donnera sur le réseau
  • Le bouton Copier bascule sur Copié ! pendant 1,5 s après le clic, confirmant clairement que l'écriture dans le presse-papiers a réussi — pas d'échec silencieux
  • Le bouton Télécharger émet un Blob `minified.json` avec MIME application/json, prêt à déposer dans un corps de requête HTTP ou à commiter dans un dossier fixtures
  • Les erreurs de parsing remontent avec le message complet du moteur JS (ligne/colonne si le parseur en fournit) pour cibler le caractère fautif plutôt que deviner
  • Purement côté client : l'entrée ne quitte jamais le navigateur, pas de télémétrie, pas d'upload. L'appel minify est synchrone et instantané pour des configurations typiques (JSON sous-mégaoctet)
  • La sortie préserve l'ordre des clés et la représentation numérique exacte — JSON.stringify ne réencode pas les entiers en flottants ni ne change les échappements Unicode, donc la sortie minifiée est byte-équivalente à ce qu'un consommateur strict reparserait

Mode d'emploi

  1. Collez votre JSON dans le volet d'entrée à gauche.
  2. Cliquez Minifier. L'outil exécute JSON.parse pour valider, puis JSON.stringify sans argument d'indentation pour supprimer tous les espaces insignifiants.
  3. Lisez la ligne de stats : octets d'entrée, octets de sortie, et octets/pourcent économisés — utile pour décider si la minification vaut le compromis de lisibilité.
  4. Cliquez Copier pour mettre la chaîne minifiée dans le presse-papiers, ou Télécharger pour la sauvegarder en `minified.json`.
  5. Si l'entrée était invalide, une ligne d'erreur rouge montrera le message de parsing du moteur JS — corrigez le JSON et recliquez Minifier.

Conseils et bonnes pratiques

  • Si vous minifiez surtout pour tenir un budget bundle, activez aussi gzip dans le pipeline d'actifs statiques CI — du pretty JSON gzippé est souvent plus petit que du minifié non compressé.
  • Gardez le JSON pretty-print original sous contrôle de source ; minifiez dans une étape de build plutôt que de commiter la version minifiée.
  • Pour un très gros JSON (10 Mo+) le passage TextEncoder reste rapide, mais le couple JSON.parse + JSON.stringify pique brièvement la mémoire — ok dans un onglet navigateur, problématique dans un service worker hot path.
  • Si votre JSON contient des nombres près de la limite safe-integer JS (2^53), sachez que JSON.parse les convertit en doubles — minify ne change pas ça, mais bon à savoir avant de déboguer un mismatch de précision.
  • Utilisez Télécharger pour poser le fichier minifié dans un dossier fixtures ; couplez plus tard avec JSON Diff si vous devez confirmer que l'aller-retour a tout préservé.

FAQ

De combien mon JSON va-t-il rétrécir ?

Dépend entièrement de la quantité d'espaces au départ. Une config bien pretty-printée (indentation 2 espaces, alignement de clés, retours à la ligne en fin) rétrécit souvent de 30–50 %. Un JSON déjà sur une ligne rétrécit de 0 %. La ligne de stats rapporte le chiffre exact — essayez sur vos données avant de vous engager sur la version minifiée.

Faut-il minifier le JSON en production ?

Souvent non, car gzip/brotli compresse déjà les espaces répétés en quelques octets. La minification aide quand (1) vous ne pouvez pas activer la compression sur le transport (certaines cibles embarquées), (2) vous embarquez le JSON dans un bundle JS où chaque octet compte contre le budget bundle, ou (3) vous optimisez IndexedDB/localStorage où il n'y a pas de compression transport.

Cela modifie-t-il mes données ?

Non. JSON.parse + JSON.stringify est un aller-retour à travers la spec JSON JavaScript, qui est un sous-ensemble strict d'ECMAScript. Nombres, chaînes, booléens, null, tableaux et objets sortent tous byte-équivalents à un reparse valide. La seule différence : espaces et ordre des clés (JSON.stringify conserve l'ordre d'insertion d'un littéral d'objet).

Comment les octets sont-ils comptés ?

Via TextEncoder().encode().length, qui donne la longueur en octets UTF-8. ASCII pur est un octet par caractère ; é est deux octets ; la plupart des caractères CJK trois ; la plupart des emoji quatre. Compter la longueur de chaîne JavaScript (unités de code) surestimerait l'ASCII et sous-estimerait les caractères du plan supplémentaire ; TextEncoder donne le chiffre qui correspond à ce qui passe sur le fil.

Pourquoi Minify échoue sur mon entrée ?

JSON.parse est strict : pas de virgules finales, pas de commentaires, pas de guillemets simples autour des chaînes, pas de clés non quotées. Pour du JSON relâché (JSON5, JSONC), le parseur va échouer — prétraitez avec un parseur relâché ou utilisez le mode JSONC du JSON Formatter pour nettoyer. La ligne d'erreur montre le message du moteur, souvent avec la ligne/colonne fautive.

Quelque chose est-il envoyé à un serveur ?

Non. Les deux volets restent dans votre navigateur ; la minification tourne en synchrone dans le même contexte JavaScript qui a rendu la page. L'onglet Réseau de DevTools ne montre aucune requête au clic Minifier. La page fonctionne hors-ligne après le premier chargement.

Le JSON minifié reste-t-il diff-friendly ?

Moins. Un fichier JSON pretty-print diffuse ligne par ligne et les reviewers voient exactement quelle clé a changé. Un fichier JSON minifié est une énorme ligne — une seule édition de caractère apparaît comme un remplacement de toute la ligne dans `git diff`. Gardez les sources pretty-printées ; minifiez seulement pour transport ou stockage.

Quelle différence avec JSON Formatter ?

JSON Formatter a un bouton Minify à côté de Pretty-Print plus vue arborescente, JSONPath, JSONC, validation schéma et diff. Cet outil est la version légère monofonction : coller, minifier, copier, télécharger — pas de panneaux, pas de modes, juste les octets gagnés.