ファイルを選択
  1. base64hub
  2. Web・トークンツール
  3. gzip + Base64

gzip 圧縮して Base64 エンコード

入力したテキストやドロップしたファイルを gzip で圧縮し、結果を Base64 にエンコードします。圧縮でプレーン Base64 より短くなったかどうかは、メタ情報の行ですぐにわかります。

無料 登録不要・制限なし ローカル アップロードなし 圧縮率 どの入力でもプレーン Base64 と比較 更新日 2026/10/27
入力 –圧縮後 –出力 –圧縮率 –

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

gzip 圧縮して Base64 エンコードする方法

  1. 入力欄にテキストを入力するか貼り付けるか、ファイルをドロップします。リアルタイム がオンなので、入力に合わせて出力が更新されます。
  2. 形式 は gzip のままにします。同じリストに zlib、raw deflate、ブラウザが対応していれば Brotli もあります。
  3. 文字列を URL やファイル名に入れるなら URLセーフ(- _) に、メールや PEM 風の行の長さにするなら 76 文字で折り返し にチェックを入れます。
  4. 出力をコピー するか、ダウンロード で Base64 を .txt ファイルとして保存するか、圧縮ファイルをダウンロード でバイナリの .gz を保存します。

メタ情報の行には入力サイズ、圧縮後のサイズ、Base64 のサイズ、圧縮率が表示され、ステータスには同じ入力のプレーン Base64 と比べてどれだけ短いか長いかが表示されます。

先に圧縮する価値があるとき

Base64 は必ずデータを 3 分の 1 増やします。繰り返しのあるデータなら、gzip はその分を取り戻し、さらに縮めることもできます。

入力プレーン Base64gzip + Base64
Hello, world!(13 バイト)20 文字44 文字
商品レコード 100 件の JSON 配列(9,281 バイト)12,376 文字1,096 文字
JPEG 写真ファイルの約 4/3プレーン Base64 よりわずかに長い

数値は gzip -6 で求めたものです。ブラウザの圧縮処理では数バイト違うことがあり、入力ごとの正確な数値はメタ情報の行に表示されます。目安として、約 100 バイト未満の入力と圧縮済みのものは、プレーンな Base64 のほうが向いています。

gzip + Base64 の文字列が使われる場面

  • cloud-init と VM のユーザーデータ:cloud-init は gzip 圧縮されたユーザーデータを検出するので、クラウドのメタデータサービスのサイズ制限に収めやすくなります。
  • AWS CloudWatch Logs のサブスクリプション は、ログのバッチを gzip の Base64 として awslogs.data に入れて Lambda に渡します。
  • Helm 3 は、各リリースを gzip した JSON の Base64 として Kubernetes の Secret に保存します。
  • 環境変数や JSON のフィールド に、設定ファイルや大きなテキストを入れなければならない場合。
  • クエリ文字列やディープリンク で状態オブジェクトを渡す場合。ここでは URLセーフな出力を使ってください。

H4sI という接頭辞を除けば、Base64 にはデータが gzip であることを受信側に伝えるものが何もありません。フィールド名や API ドキュメントで明示するか、HTTP なら Base64 にせずバイナリの本文を Content-Encoding: gzip 付きで送ってください。

コードでの gzip + Base64

import base64, gzip

data = open("products.json", "rb").read()
packed = base64.b64encode(gzip.compress(data, mtime=0)).decode()
// Node.js
const zlib = require("zlib");
const packed = zlib.gzipSync(Buffer.from(text)).toString("base64");

ブラウザでは new CompressionStream("gzip") で圧縮でき、このページもそれを使っています。ほかの例は Python と Node.js のページにあります。

よくある問題

  • 受信側でゴミのようなデータになる:Base64 はデコードしたものの、gunzip していません。H4sI で始まっているか確認し、gzip Base64 デコーダー で展開してください。
  • 相手側で「incorrect header check」が出る:受信側が gzip ではなく zlib を想定しています。形式 を zlib(deflate)に切り替えてください。どのライブラリがどちらを想定するかは zlib のページ で説明しています。
  • Brotli がグレーアウトしている:ブラウザの組み込み圧縮 API が Brotli を提供していません。オプションの下にその旨が表示されます。
  • ほかのツールと出力が違う:gzip のヘッダーにはタイムスタンプと OS のバイトが含まれ、圧縮ツールによって選ぶレベルも違います。バイト列が違っても、展開すれば同じ内容になることがあります。

よくある質問

Base64 の前に gzip すると文字列は短くなりますか?

数百バイトを超えるテキスト、JSON、XML、ログなら、たいていかなり短くなります。短い文字列や圧縮済みのデータ(JPEG、PNG、ZIP、MP4)では、gzip がヘッダーとトレーラーで 18 バイトを加えるため、かえって長くなります。

gzip の Base64 文字列がどれも H4sI で始まるのはなぜですか?

gzip のデータはバイト 1F 8B 08 で始まり、この 3 バイトは Base64 で H4sI になります。続く文字はフラグとタイムスタンプで変わり、H4sIAAAAAAAA はファイル名も更新日時もないことを意味します。

ターミナルで gzip と Base64 エンコードをするには?

Linux では gzip -nc file.json | base64 -w0 です。base64 に -w がない macOS では gzip -nc file.json | base64 | tr -d '\n' を使います。-n はファイル名と時刻を省くので、同じ入力からは同じ出力が得られます。