Gzip und Deflate sind Komprimierungsalgorithmen, die Daten verkleinern, das Ergebnis ist aber binär, nicht Text. Wenn diese komprimierten Daten über einen für Text gedachten Kanal (URL, Cookie, JSON-Feld) übertragen werden müssen, werden sie zusätzlich Base64-kodiert – daher das Paar „Gzip/Deflate ↔ Base64", das Diagramm- und Whiteboard-Tools nutzen, um den gesamten Zustand eines Dokuments in einem teilbaren Link unterzubringen.
Warum lange deutsche Komposita sich besonders gut komprimieren lassen
Deutsche Bandwurmwörter wie „Donaudampfschifffahrtsgesellschaftskapitän" bestehen aus mehreren kürzeren Wörtern, die aneinandergereiht werden – und genau diese Wiederholung von Teilstrings ist es, worauf Gzips LZ77-Algorithmus reagiert. Da Bestandteile wie „schaft", "gesellschaft" oder "fahrt" in juristischen und technischen deutschen Texten ständig wiederkehren, komprimiert langer, zusammengesetzter deutscher Text häufig überraschend effizient.
Die typische Reihenfolge der Operationen
- Der Originaltext wird mit Gzip oder Deflate komprimiert – die Größe schrumpft.
- Das komprimierte Binärergebnis wird Base64-kodiert – die Größe wächst wieder etwas, aber die Daten sind jetzt Text.
- Der resultierende String wird sicher über einen Textkanal übertragen.
Das Dekodieren läuft in umgekehrter Reihenfolge ab: zuerst Base64 → Binärdaten, dann Gzip/Deflate-Dekompression → Originaltext.
Typische Anwendungsfälle
- Den kompletten Zustand einer Anwendung in einer URL unterbringen, damit ein geteilter Link genau die gleiche Ansicht wieder öffnet.
- Komprimierte Daten in einem Cookie oder einem Textfeld einer Datenbank speichern.
- Debugging: von einem Drittsystem oder einer API so kodierte Inhalte entpacken und lesen.
Gzip gegen „rohes" Deflate
Gzip ist im Grunde ein Format, das den Deflate-Algorithmus umschließt: Es fügt einen eigenen Header und eine Prüfsumme (CRC32) über den komprimierten Daten hinzu. „Rohes" Deflate hat diese zusätzlichen Bytes nicht, daher ist das Ergebnis etwas kompakter – lässt sich aber nicht mit einem Gzip-Tool entpacken, ohne explizit anzugeben, dass es sich um das Raw-Format handelt. Die Verwechslung dieser beiden Varianten ist eine häufige Ursache für den Fehler „invalid header" beim Versuch, Daten zu entpacken.