UTILS.
100% w przeglądarce
🗜️

Kompresja i dekompresja Gzip / Zlib / Deflate

Kompresuj lub dekompresuj tekst natywnymi formatami gzip, zlib (deflate) lub raw DEFLATE w przeglądarce, z wyjściem base64/hex i współczynnikiem kompresji.

Wprowadź powyżej dane, aby je skompresować lub zdekompresować.

O tym narzędziu

Narzędzie Gzip / Zlib / Deflate kompresuje i dekompresuje dane w całości w Twojej przeglądarce, używając natywnych API CompressionStream i DecompressionStream. Wybierz format kontenera — gzip (format .gz z magicznymi bajtami 0x1F 0x8B), zlib/deflate (dane DEFLATE opakowane w nagłówek zlib) lub deflate-raw (goły DEFLATE bez nagłówka) — oraz kierunek. Kompresja bierze Twój tekst UTF-8 i zwraca skompresowane bajty zakodowane jako base64 lub hex; dekompresja bierze base64 lub hex i zwraca oryginalny tekst.

Ponieważ używa wbudowanej w przeglądarkę strumieniowej kompresji, nic nie jest wysyłane i żadna zewnętrzna biblioteka nie jest ładowana — Twoje dane pozostają na Twoim urządzeniu. Te trzy formaty nie są zamienne: gzip i zlib dodają różne nagłówki i sumy kontrolne (CRC-32 dla gzip, Adler-32 dla zlib) wokół tego samego ładunku DEFLATE, podczas gdy deflate-raw pomija oba, więc musisz dekompresować tym samym formatem, którym kompresowałeś. Po kompresji narzędzie raportuje oryginalny rozmiar, skompresowany rozmiar oraz współczynnik kompresji jako procent (1 − skompresowany / oryginalny), czyli o ile mniejsze jest wyjście.

Mocno powtarzalny tekst kompresuje się drastycznie; krótkie lub już skompresowane dane wejściowe mogą faktycznie urosnąć z powodu narzutu nagłówka i sumy kontrolnej, co jest normalne. Jeśli Twoja przeglądarka nie udostępnia CompressionStream, narzędzie o tym powie, zamiast produkować błędne wyjście. Zwróć uwagę, że natywne API używa stałego domyślnego poziomu kompresji, więc nie ma selektora poziomu. Skopiuj wynik jednym kliknięciem.

Najczęściej zadawane pytania

Jaka jest różnica między gzip, zlib a raw deflate?
Wszystkie trzy używają algorytmu DEFLATE. gzip opakowuje go 10-bajtowym nagłówkiem, magicznymi bajtami 0x1F 0x8B i CRC-32; zlib (deflate) opakowuje go krótkim nagłówkiem i sumą kontrolną Adler-32; deflate-raw nie ma nagłówka ani sumy kontrolnej. Dekompresuj tym samym formatem, którym kompresowałeś.
Jakiego wejścia oczekuje dekompresja?
Wklej skompresowane dane jako base64 lub hex (dopasuj do selektora kodowania wyjścia). Narzędzie dekoduje je do bajtów i rozpakowuje wybranym formatem. Jeśli bajty są obcięte lub w złym formacie, zgłasza, że danych nie udało się zdekompresować.
Dlaczego mój tekst urósł po kompresji?
gzip i zlib dodają bajty nagłówka i sumy kontrolnej, a DEFLATE potrzebuje wystarczającej powtarzalności, by znaleźć oszczędności. Dla bardzo krótkiego lub już losowego/skompresowanego wejścia ten narzut przewyższa jakikolwiek zysk, więc wyjście może być większe — to jest oczekiwane.
Czy mogę wybrać poziom kompresji?
Nie. Natywne API CompressionStream nie udostępnia parametru poziomu, więc używany jest stały poziom domyślny. Wyjście jest nadal w pełni poprawnym strumieniem gzip/zlib/deflate, który każde standardowe narzędzie (gunzip, zlib, pako) może zdekompresować.

Więcej narzędzi