JSON Minifizieren

Minifizieren Sie JSON auf die kleinste gültige Form oder formatieren Sie es hübsch mit 2 Leerzeichen, 4 Leerzeichen oder Tabs. Optionale Schlüsselsortierung, live Byte-Ersparnis-Anzeige, läuft vollständig in Ihrem Browser.

Entfernen Sie jedes Byte, das die Daten nicht verändert. Fügen Sie JSON ein, um allen optionalen Leerraum zu entfernen, oder wechseln Sie zum Verschönern, um es mit dem gewünschten Einzug wieder auszugeben. Die Schlüsselsortierung macht zwei Dokumente vergleichbar, und der Byte-Zähler zeigt, was die Minifizierung tatsächlich gebracht hat.

Was Minifizierung tut und nicht tut

Nur Leerraum wird entfernt

Die JSON-Grammatik erlaubt Leerzeichen, Tabs und Zeilenumbrüche zwischen beliebigen zwei Token, und keines davon trägt Bedeutung. Minifizieren bedeutet, jedes dieser optionalen Zeichen fallen zu lassen: {"a": 1, "b": 2} wird zu {"a":1,"b":2}. Der geparste Wert ist im Speicher byte-genau identisch, weshalb diese Operation vor dem Senden eines Payloads immer sicher anwendbar ist.

Was Minifizierung nicht tut, ist die Daten komprimieren. Schlüsselnamen, String-Inhalte und numerische Genauigkeit bleiben exakt erhalten. Wenn Ihr Dokument groß ist, weil es dieselben zwanzig Feldnamen über zehntausend Datensätze wiederholt, wird die Minifizierung den Einzug kürzen, aber die Wiederholung unangetastet lassen — das ist Aufgabe von gzip oder einem anderen Schema.

Wann die Ersparnis wirklich zählt

Bei einer typischen hübsch formatierten API-Antwort macht Leerraum irgendwo zwischen 10 % und 30 % der Rohgröße aus. Das klingt lohnend, bis man bedenkt, dass fast jede HTTP-Antwort bereits gzip- oder brotli-komprimiert übertragen wird und Kompressionsalgorithmen mit Folgen von Leerzeichen extrem gut umgehen. Nach gzip ist der Unterschied zwischen minifiziertem und formatiertem JSON oft unter 2 %.

Minifizierung verdient sich ihren Platz dennoch in drei Situationen: Daten, die direkt in eine HTML-Seite oder ein JavaScript-Bundle eingebettet sind, wo sie nicht separat komprimiert werden; Speicherung in einer Datenbank-Spalte oder einem Cache, wo die Rohzeichenkette den Platz einnimmt; und überall dort, wo Sie Zeichen gegen ein hartes Limit zählen, wie ein URL-Parameter oder ein Nachrichtenfeld mit festem Deckel.

Schlüssel zum Vergleich sortieren

JSON-Objekte sind offiziell ungeordnet, aber jeder Serialisierer schreibt Schlüssel in einer konkreten Reihenfolge, und zwei Systeme wählen selten dieselbe. Das macht einen einfachen Text-Diff zweier logisch identischer Dokumente unlesbar.

Das rekursive Sortieren der Schlüssel vor der Ausgabe gibt beiden Dokumenten dieselbe kanonische Form, sodass ein Zeilendiff endlich nur noch die echten Änderungen zeigt. Es ist derselbe Trick hinter reproduzierbaren Builds und content-adressiertem Caching. Beachten Sie jedoch, dass Sortieren die Byte-Ausgabe verändert, sodass ein sortiertes Dokument nicht mehr identisch mit dem ist, was das Quellsystem erzeugt hat — verwenden Sie es zum Vergleich, nicht für Round-Trip-Signaturen.

Open-Source-Hinweis: implementiert in Vanilla-JavaScript ohne Drittbibliotheken.

FAQ

Werden meine Daten irgendwo hochgeladen?
Nein. Parsen und erneutes Serialisieren erfolgen vollständig im Browser mit den eingebauten JSON-Funktionen, sodass das Dokument die Seite niemals verlässt.
Verändert Minifizieren meine Daten?
Nein. Nur bedeutungsloser Leerraum zwischen Token wird entfernt. Jeder Schlüssel, String, jede Zahl und jeder Boolean überlebt unverändert, und der geparste Wert ist identisch.
Warum ist die Ersparnis kleiner als erwartet?
Der Zähler misst rohe UTF-8-Bytes. Wenn Ihr JSON bereits kompakt war oder der Großteil der Größe aus String-Inhalt statt aus Einzug besteht, gibt es wenig Leerraum zu entfernen.
Sollte ich minifizieren, wenn mein Server bereits gzip verwendet?
Üblicherweise nicht für Netzwerk-Payloads — gzip komprimiert Folgen von Leerzeichen sehr effizient, sodass der zusätzliche Gewinn oft unter 2 % liegt. Es hilft dennoch für eingebettetes oder gespeichertes JSON.
Was macht das Sortieren der Schlüssel?
Es ordnet die Schlüssel jedes Objekts alphabetisch, rekursiv. Zwei logisch identische Dokumente erzeugen dann identischen Text, was einen einfachen Zeilendiff nutzbar macht.
Warum bekam ich einen Parse-Fehler bei gültig aussehendem JSON?
Die strenge Grammatik lehnt nachgestellte Kommas, einfach umschlossene Strings, Kommentare und unangführte Schlüssel ab. Das sind JavaScript-Objekt-Literal-Features, kein JSON.