上传文件
  1. base64hub
  2. Web 与令牌工具
  3. Gzip Base64 解码器

Base64 Gzip 解码(含 Zlib、Deflate)

粘贴以 H4sI 或 eJ 开头的 Base64 字符串,或拖入 .gz 文件。解码器会判断它是 gzip、zlib 还是原始 deflate,并显示解压后的文本或文件。

免费 无需注册,不限次数 本地 不上传任何内容 自动 识别 gzip、zlib 或原始 deflate 更新于 2026年10月27日
输入 –压缩后 –输出 –压缩率 –

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何解码 gzip Base64 字符串

  1. 把 Base64 粘贴到输入框,或拖入 .gz、.zz 或 .deflate 文件。空白字符和换行会被忽略。
  2. 格式 保持 自动检测。状态栏会显示识别结果,例如“检测到 gzip”。
  3. 文本结果显示在输出区,JSON 会自动格式化。二进制结果会识别文件类型,并提供 下载 按钮。
  4. 对于 gzip 输入,如果发送方保存了原始文件名和修改时间,元信息中也会显示出来。

如何区分 gzip、zlib 和 deflate

三者使用相同的 DEFLATE 压缩算法,区别只在外层封装,这从 Base64 的头几个字符就能看出来:

开头格式常见来源
H4sIgzip(1F 8B 08)gzip、GZIPOutputStream、HTTP 响应体、CloudWatch Logs
eJzlib,默认级别(78 9C)zlib.compress()、PHP gzcompress()、PDF 流
eNo–eNrzlib,最高压缩(78 DA)级别 7–9
eAE–eAH、eF4–eF7zlib,最快及低级别(78 01、78 5E)级别 1 到 5
无固定前缀原始 deflateSAML Redirect 绑定、PHP gzdeflate()、ZIP 条目
SDRzSU被 Base64 编码了两次的 gzipHelm release Secret

原始 deflate 没有签名,所以自动检测会在 gzip 和 zlib 都失败之后再尝试它。Brotli 同样没有签名,会在最后尝试,前提是浏览器支持。

实际场景中的载荷

AWS CloudWatch Logs 的订阅事件以 {"awslogs": {"data": "H4sI…"}} 的形式到达 Lambda。粘贴 data 的值,就能读到包含 logGroup、logStream 和 logEvents 的 JSON。

Helm 3 release Secret 里存的是 gzip 压缩后 JSON 的 Base64,Kubernetes 又对它做了一次 Base64 编码。在 shell 中:

kubectl get secret sh.helm.release.v1.myapp.v3 -o jsonpath='{.data.release}' \
  | base64 --decode | base64 --decode | gunzip | jq -r .manifest

在浏览器中,先用 Kubernetes Secret 解码器 或 Base64 解码器 解开外层,再把得到的 H4sI… 粘贴到本页。

SAML Redirect 消息 是原始 deflate。它们在这里也能解码,不过 SAML 解码器 还会做 URL 解码并汇总 XML 内容。

在 Python 和 Node.js 中解码

import base64, zlib

raw = base64.b64decode(s)
text = zlib.decompress(raw, 47).decode()   # 47 = 32 + 15: accept gzip or zlib
const zlib = require("zlib");
const text = zlib.unzipSync(Buffer.from(s, "base64")).toString();   // gzip or zlib

原始 deflate 在 Python 中用 zlib.decompress(raw, -15),在 Node 中用 zlib.inflateRawSync()。见 Python 中的 Base64 和 Node.js 中的 Base64。

错误和限制

  • “这是有效的 Base64,但不是 gzip、zlib 或原始 deflate 数据。” 这个字符串从来没有被压缩过。试试 Base64 解码器,二进制数据请用 Base64 转文件。
  • “这不是有效的 gzip 数据,或者已被截断。” 字符串缺了一部分,通常是被日志单行长度限制截掉了。请从源头重新复制。
  • “已忽略压缩流之后的多余字节。” 数据流结束之后被追加了别的内容。之前的数据会保留。
  • “解压后的数据大于 256.0 MB,已停止(可能是 zip 炸弹)。” 为防范解压炸弹,输出设有上限。这么大的数据请在本地用 gunzip 处理。
  • 不支持多成员 gzip 文件(多个 gzip 流拼接在一起)。

常见问题

Base64 字符串开头的 H4sI 是什么意思?

它是 1F 8B 08 的 Base64 形式,即 gzip 签名加上表示 deflate 方法的字节。以 H4sI 开头的字符串就是 gzip 数据:先做 Base64 解码,再对字节执行 gunzip。

怎么在命令行里解码 Base64 gzip?

Linux 和 macOS 上用 echo 'H4sI…' | base64 --decode | gunzip。对于 zlib 数据(eJ…),gunzip 不认它的文件头;Base64 解码之后改用 python3 -c 'import sys,zlib; sys.stdout.buffer.write(zlib.decompress(sys.stdin.buffer.read()))'。

为什么 Base64 解码后得到的是二进制乱码?

数据在编码前被压缩过,所以普通的 Base64 解码器交给你的是压缩后的字节。把字符串粘贴到这里,一步就能完成解码和解压。

能打开 .zip 或 .tar.gz 文件吗?

.tar.gz 解压后得到 .tar 归档,可以下载。ZIP 压缩包是另一种容器格式;请用 Base64 转 ZIP 列出并保存其中的文件。