Ratgeber · JSON 2026
JSON Pretty-Print und Minify: Trade-offs in der Praxis
Indent 2 ist Standard, Minify spart 20-30 % gegenüber 2-Indent. Warum gzip den Unterschied am Netzwerk fast komplett egalisiert.
Von Mateusz Viola
Betreiber & redaktionelle Verantwortung json-formatieren.de
Veröffentlicht
Aktualisiert:
Was Pretty-Print macht
Pretty-Print fügt Einrückung und Zeilenumbrüche in JSON ein, damit es für Menschen lesbar wird. In JavaScript erzeugt mit:
JSON.stringify(obj, null, 2); // 2 Leerzeichen
JSON.stringify(obj, null, '\t'); // Tab
Was Minify macht
Minify entfernt allen optionalen Whitespace - Output ist eine Zeile, ohne Einrückung. Default-Verhalten von JSON.stringify ohne space-Parameter:
JSON.stringify(obj); // Minified
Größen-Unterschied in der Praxis
| Payload-Typ | Pretty (2) | Minify | Einsparung | +gzip |
|---|---|---|---|---|
| OpenAPI-Spec (mittel) | 284 KB | 198 KB | 30 % | ~3 % |
| REST-API-Response | 4,2 KB | 3,1 KB | 26 % | ~2 % |
| Analytics-Export | 540 MB | 390 MB | 28 % | ~5 % |
| config.json (klein) | 1,8 KB | 1,3 KB | 28 % | ~1 % |
Regelmäßig: ~25-30 % Einsparung durch Minify. Nach gzip schmilzt das auf 1-5 %, weil gzip Whitespace-Redundanz ohnehin packt. Für transparente HTTP-Compression lohnt Minify daher fast nichts mehr.
Wann Pretty-Print
- Code-Reviews: Git-Diffs auf minified JSON sind unleserlich
- Konfigurationsdateien: Menschen müssen sie editieren können
- Debug-Logs: wenn Operations händisch lesen will
- Public-API-Documentation: Beispiel-Responses formatiert zeigen
Wann Minify
- Production-API-Responses (auch wenn der Effekt klein ist)
- Datenbank-Speicherung (jsonb in Postgres, BSON in MongoDB - Whitespace wäre Overhead)
- Embedded-Strings in HTML/JS-Code (schöner kompakt)
- Mobile-Clients mit teurer/langsamer Bandbreite (jedes KB zählt)
Indent-Convention
2 Leerzeichen Einrückung ist Industry-Standard:
- JSON.stringify-Default in den meisten Tools
- npm package.json wird mit 2 spaces serialisiert
- VS Code Prettier-Default
- Schmaler bei tiefer Verschachtelung als 4 spaces
4 Leerzeichen oder Tabs sind unüblich aber technisch valide. 3 Leerzeichen ist exotisch - unser Tool unterstützt es trotzdem für besondere Style-Guides.
JSON.stringify replacer-Parameter
Der zweite Parameter von JSON.stringify kann zur Filterung genutzt werden:
// Sensitive Felder ausblenden
JSON.stringify(user, (key, value) => {
if (key === 'password' || key === 'apiKey') return undefined;
return value;
}, 2);
Kann auch als Array verwendet werden - dann nur diese Keys ausgeben.
Sortierte Keys
JSON.stringify gibt Keys in Insertion-Order aus. Für deterministische Outputs (z.B. Hash-stabile Configs, reproducible builds) hilft eine eigene Sortier-Funktion oder Library wie json-stable-stringify. Unser Tool bietet "Schlüssel sortieren" als One-Click-Option.