UTILS.
100% nel browser
🗜️

Comprimi e decomprimi Gzip / Zlib / Deflate

Comprimi o decomprimi testo con i formati nativi gzip, zlib (deflate) o raw DEFLATE nel browser, con output base64/esadecimale e il rapporto di compressione.

Inserisci dati sopra per comprimere o decomprimere.

Informazioni su questo strumento

Lo strumento Gzip / Zlib / Deflate comprime e decomprime dati interamente nel tuo browser usando le API native CompressionStream e DecompressionStream. Scegli il formato del contenitore — gzip (il formato .gz con i suoi byte magici 0x1F 0x8B), zlib/deflate (i dati DEFLATE avvolti in un header zlib) o deflate-raw (DEFLATE nudo senza header) — e una direzione. La compressione prende il tuo testo UTF-8 e restituisce i byte compressi codificati in base64 o esadecimale; la decompressione prende base64 o esadecimale e restituisce il testo originale.

Poiché usa la compressione a flusso integrata nel browser, nulla viene caricato e nessuna libreria esterna viene caricata — i tuoi dati rimangono sul tuo dispositivo. I tre formati non sono intercambiabili: gzip e zlib aggiungono header e checksum diversi (CRC-32 per gzip, Adler-32 per zlib) attorno allo stesso payload DEFLATE, mentre deflate-raw omette entrambi, quindi devi decomprimere con lo stesso formato con cui hai compresso. Dopo la compressione, lo strumento riporta la dimensione originale, la dimensione compressa e il rapporto di compressione in percentuale (1 − compresso / originale), ovvero quanto è più piccolo l'output.

Il testo altamente ripetitivo si comprime drasticamente; un input breve o già compresso può in realtà crescere a causa dell'overhead di header e checksum, il che è normale. Se il tuo browser non espone CompressionStream, lo strumento lo segnala invece di produrre output errato. Nota che l'API nativa usa un livello di compressione predefinito fisso, quindi non c'è un selettore di livello. Copia il risultato con un clic.

Domande frequenti

Qual è la differenza tra gzip, zlib e raw deflate?
Tutti e tre usano l'algoritmo DEFLATE. gzip lo avvolge con un header di 10 byte, i byte magici 0x1F 0x8B e un CRC-32; zlib (deflate) lo avvolge con un breve header e un checksum Adler-32; deflate-raw non ha header né checksum. Decomprimi con lo stesso formato che hai usato per comprimere.
Quale input si aspetta la decompressione?
Incolla i dati compressi come base64 o esadecimale (fai corrispondere il selettore di codifica dell'output). Lo strumento li decodifica in byte e li espande con il formato scelto. Se i byte sono troncati o del formato sbagliato, segnala che i dati non possono essere decompressi.
Perché il mio testo è diventato più grande dopo la compressione?
gzip e zlib aggiungono byte di header e checksum, e DEFLATE ha bisogno di sufficiente ripetizione per trovare risparmi. Per input molto breve o già casuale/compresso quell'overhead supera qualsiasi guadagno, quindi l'output può essere più grande — è previsto.
Posso scegliere il livello di compressione?
No. L'API nativa CompressionStream non espone un parametro di livello, quindi viene usato un livello predefinito fisso. L'output è comunque un flusso gzip/zlib/deflate pienamente valido che qualsiasi strumento standard (gunzip, zlib, pako) può decomprimere.

Altri strumenti