Aller au contenu
jsonbeautifiers
Français

Minifier du JSON

Retire chaque octet d’espace et montre exactement ce que vous avez gagné.

Filtrer avec JSONPath

Syntaxe RFC 9535. Le résultat remplace le panneau depuis lequel vous avez ouvert cette fenêtre.

 

Rien de ce que vous collez ne quitte votre navigateur. La liste d’autorisation connect-src en fait une garantie du navigateur plutôt qu’une promesse. Vérifiez-le vous-même

Minifier retire chaque octet d’espace qu’un analyseur ignore : les sauts de ligne, l’indentation, l’espace après chaque deux-points. Rien d’autre ne change, et le résultat analysé est identique.

Sur un payload d’API formaté typique, cela retire entre 10 et 20 pour cent des octets. Sur un document profondément imbriqué formaté avec quatre espaces, cela peut dépasser le tiers.

Où cela aide vraiment, et où non

Minifier vaut la peine pour tout ce qui est stocké ou transmis en volume : réponses d’API, configuration intégrée à un bundle, messages dans une file, lignes dans un stockage en colonnes.

Cela vaut bien moins que ce qu’on imagine en HTTP, car gzip et brotli compressent déjà très bien les espaces répétés. Minifier une réponse déjà gzippée fait généralement gagner quelques pour cent, pas vingt. Là où cela compte encore, c’est partout où la compression n’est pas appliquée : stockage local, colonne de base de données, corps de message avec une limite de taille stricte, ou ligne de journal.

Cela ne vaut rien du tout pour un fichier qu’un humain lit. Du JSON minifié est une seule ligne énorme, et chaque diff dessus est une réécriture de tout le fichier.

Ce que la minification ne fait pas

Elle ne raccourcit pas les clés, ne supprime pas les valeurs null, ne réordonne rien et ne modifie pas les nombres. Ce sont des transformations de vos données, pas de leur mise en forme, et un minifieur qui les ferait en silence serait dangereux.

En particulier, les nombres gardent leur texte exact. Un minifieur bâti sur JSON.parse transformerait 1.50 en 1.5 et 1e3 en 1000 : plus court, mais aussi un autre document.

How to do this in code

Minifier en code.

js JavaScript
const min = JSON.stringify(JSON.parse(text));

// Note this also normalises numbers: 1.50 becomes 1.5.
py Python

json.dumps utilise ", " et ": " comme séparateurs par défaut : l’appel naïf n’est donc pas réellement minifié.

import json

# The separators argument is the part people miss: without it
# Python leaves a space after every comma and colon.
min_text = json.dumps(json.loads(text), separators=(',', ':'))
sh jq
jq -c . input.json > output.min.json
go Go
var buf bytes.Buffer
if err := json.Compact(&buf, data); err != nil {
    return err
}
// Compact works on bytes, so numbers are untouched.

Questions fréquentes

Combien vais-je réellement gagner ?
L’outil affiche le décompte d’octets avant et après pour votre document précis. En règle générale, du JSON formaté avec deux espaces contient 10 à 20 pour cent d’espaces, et davantage avec quatre. Sur une connexion gzippée, le gain réel est bien plus faible, parce que la compression gère déjà bien la répétition.
Le JSON minifié reste-t-il valide ?
Oui. Les espaces entre jetons ne sont pas significatifs : un document minifié et un document formaté s’analysent exactement vers la même valeur.
Dois-je minifier le JSON de mon dépôt ?
Non. Le contrôle de version sert à ce que des humains lisent des diffs, et un fichier minifié fait ressembler chaque changement à une réécriture complète. Minifiez au moment de la construction ou de l’envoi.