UTILS.
100% ブラウザ内で完結
🗜️

Gzip / Zlib / Deflate 圧縮&展開

ネイティブの gzip、zlib(deflate)、または raw DEFLATE 形式でテキストをブラウザ内で圧縮または展開します。base64/16進出力と圧縮率付き。

上にデータを入力して圧縮または展開します。

このツールについて

Gzip / Zlib / Deflate ツールは、ネイティブの CompressionStream および DecompressionStream API を使って、データを完全にブラウザ内で圧縮・展開します。コンテナ形式を選び、gzip(0x1F 0x8B マジックバイトを持つ .gz 形式)、zlib/deflate(zlib ヘッダーで包まれた DEFLATE データ)、または deflate-raw(ヘッダーのない素の DEFLATE)から選び、方向を選びます。圧縮は UTF-8 テキストを取り、圧縮されたバイトを base64 または 16 進でエンコードして返します。展開は base64 または 16 進を取り、元のテキストを返します。

ブラウザ組み込みのストリーミング圧縮を使うため、何もアップロードされず外部ライブラリも読み込まれません。データはデバイス上にとどまります。3 つの形式は互換ではありません。gzip と zlib は同じ DEFLATE ペイロードの周りに異なるヘッダーとチェックサム(gzip は CRC-32、zlib は Adler-32)を追加し、deflate-raw は両方を省くため、圧縮したのと同じ形式で展開する必要があります。圧縮後、ツールは元のサイズ、圧縮後のサイズ、圧縮率をパーセンテージ(1 − compressed / original)で報告します。これは出力がどれだけ小さくなったかを表します。

繰り返しの多いテキストは劇的に圧縮されます。短い、またはすでに圧縮された入力は、ヘッダーとチェックサムのオーバーヘッドのため実際には大きくなることがありますが、これは正常です。ブラウザが CompressionStream を公開していない場合、ツールは誤った出力を生成する代わりにその旨を伝えます。ネイティブ API は固定のデフォルト圧縮レベルを使うため、レベルセレクターはありません。結果をワンクリックでコピーできます。

よくある質問

gzip、zlib、raw deflate の違いは何ですか?
3 つとも DEFLATE アルゴリズムを使います。gzip は 10 バイトのヘッダー、マジックバイト 0x1F 0x8B、CRC-32 で包みます。zlib(deflate)は短いヘッダーと Adler-32 チェックサムで包みます。deflate-raw はヘッダーもチェックサムもありません。圧縮に使ったのと同じ形式で展開してください。
展開はどんな入力を期待しますか?
圧縮データを base64 または 16 進として貼り付けます(出力エンコードのセレクターに合わせます)。ツールはそれをバイトにデコードし、選んだ形式で展開します。バイトが切り詰められているか形式が誤っている場合、データを展開できなかったと報告します。
圧縮後にテキストが大きくなったのはなぜですか?
gzip と zlib はヘッダーとチェックサムのバイトを追加し、DEFLATE は削減を見つけるのに十分な繰り返しが必要です。非常に短い、またはすでにランダム/圧縮された入力では、そのオーバーヘッドが利得を上回るため出力が大きくなることがあります。これは想定内です。
圧縮レベルを選べますか?
いいえ。ネイティブの CompressionStream API はレベルパラメーターを公開していないため、固定のデフォルトレベルが使われます。出力は依然として完全に有効な gzip/zlib/deflate ストリームで、標準的なツール(gunzip、zlib、pako)で展開できます。

その他のツール