Oh MyUtils

GZIP圧縮&解凍 - Base64 GZIPエンコーダー オンライン

GZIPでテキストやファイルを圧縮・解凍。Base64出力、圧縮統計、.gzファイルダウンロード — 100%クライアントサイド処理。

入力
出力
100%クライアントサイド — データはブラウザから外に出ません

よくある質問

GZIP圧縮とは何ですか?

GZIPはDEFLATEアルゴリズム(LZ77とハフマン符号化の組み合わせ)に基づくファイル形式および圧縮アルゴリズムです。Web上で最も広く使用されている圧縮形式で、ほぼすべてのHTTPサーバーとブラウザがContent-Encoding: gzipヘッダーを通じてサポートしています。

このツールの使い方は?

圧縮または解凍タブを選択します。圧縮するには、テキストを入力するかファイルをドラッグ&ドロップします。解凍するには、Base64エンコードされたGZIP文字列を貼り付けるか、.gzファイルをドロップします。

データは安全ですか?

データは100%安全で、ブラウザから外に出ることはありません。すべての圧縮と解凍は、ブラウザネイティブのCompressionStreamおよびDecompressionStream APIを使用して完全にクライアントサイドで実行されます。

GZIPとDeflateの違いは?

GZIPとDeflateは同じ基本圧縮アルゴリズム(DEFLATE、RFC 1951)を使用します。違いはラッパーです:GZIPはDeflate圧縮データの周りに10バイトのヘッダーと8バイトのフッターを追加します。

圧縮結果が入力より大きいのはなぜ?

GZIPは18バイトのオーバーヘッド(10バイトヘッダー + 8バイトフッター)とDeflate圧縮メタデータを追加します。非常に短い文字列(通常50〜100バイト未満)の場合、オーバーヘッドが圧縮の節約を上回ります。GZIPはHTML、JSON、XMLなどの反復パターンを持つ大きなテキストに最も効果的です。

Base64エンコードされたGZIPとは?

Base64エンコードされたGZIPは、データをGZIPで圧縮し、バイナリバイトをBase64 ASCII文字列としてエンコードした結果です。JSON/XMLフィールドへの圧縮データの保存やテキストのみのプロトコルを通じたデータ送信に使用されます。

どのブラウザがサポートしていますか?

このツールはCompressionStreamとDecompressionStream Web APIを使用しており、Chrome 80+、Edge 80+、Safari 16.4+、Firefox 113+でサポートされています。

コード例

// Compress text to Base64-encoded GZIP
async function compressToBase64(text) {
  const stream = new Blob([new TextEncoder().encode(text)])
    .stream()
    .pipeThrough(new CompressionStream('gzip'));
  const buf = await new Response(stream).arrayBuffer();
  let binary = '';
  new Uint8Array(buf).forEach(b => binary += String.fromCharCode(b));
  return btoa(binary);
}

// Decompress Base64-encoded GZIP to text
async function decompressFromBase64(base64) {
  const binary = atob(base64);
  const bytes = Uint8Array.from(binary, c => c.charCodeAt(0));
  const stream = new Blob([bytes])
    .stream()
    .pipeThrough(new DecompressionStream('gzip'));
  return await new Response(stream).text();
}

// Usage
const compressed = await compressToBase64('Hello, World!');
console.log(compressed);
const decompressed = await decompressFromBase64(compressed);
console.log(decompressed); // "Hello, World!"

関連ツール