Tutti gli articoli

Gzip + Base64: comprimere dati per trasmetterli come testo

Gzip e Deflate sono algoritmi di compressione che riducono la dimensione dei dati, ma il risultato è binario, non testo. Se questi dati compressi devono viaggiare su un canale pensato per il testo (URL, cookie, campo JSON), vengono anche codificati in Base64 — da qui la coppia "Gzip/Deflate ↔ Base64", usata da strumenti che impacchettano l'intero stato di un documento in un link condivisibile.

Perché il "burocratese" italiano si comprime così bene

I testi burocratici e legali italiani sono noti per le formule ripetute da un paragrafo all'altro — "ai sensi dell'articolo", "fermo restando quanto previsto", "si comunica quanto segue" — e questa ridondanza testuale è esattamente ciò che Gzip sfrutta per sostituire i pattern ricorrenti con riferimenti molto più brevi. Un documento amministrativo verboso spesso si comprime meglio di un testo creativo dove ogni frase è formulata in modo diverso.

L'ordine tipico delle operazioni

  1. Il testo originale viene compresso con Gzip o Deflate — la dimensione si riduce.
  2. Il risultato binario compresso viene codificato in Base64 — la dimensione cresce un po', ma i dati diventano testo.
  3. La stringa risultante viene trasmessa in sicurezza tramite un canale di testo.

La decodifica avviene in ordine inverso: prima Base64 → dati binari, poi decompressione Gzip/Deflate → testo originale.

Casi d'uso comuni

  • Impacchettare l'intero stato di un'applicazione in un URL, così un link condiviso riapre esattamente la stessa vista.
  • Salvare dati compressi in un cookie o in un campo di testo di un database.
  • Debug: decomprimere e leggere contenuti codificati così da un sistema esterno o da un'API.

Gzip contro Deflate «grezzo»

Gzip è di fatto un formato-involucro attorno all'algoritmo Deflate: aggiunge un proprio header e un checksum (CRC-32) sopra i dati compressi. Il Deflate «grezzo» non ha questi byte di servizio, quindi il risultato è leggermente più compatto, ma non può essere decompresso da un'utilità gzip senza indicare esplicitamente che si tratta proprio del formato raw. La confusione tra queste due varianti è una causa comune dell'errore «invalid header» quando si prova a decomprimere i dati.

Prova lo strumento