UTILS.
100% 浏览器内运行
🗜️

Gzip / Zlib / Deflate 压缩与解压

在浏览器中使用原生 gzip、zlib(deflate)或原始 DEFLATE 格式压缩或解压文本,带 base64/十六进制输出和压缩比。

在上方输入数据以进行压缩或解压。

关于此工具

Gzip / Zlib / Deflate 工具使用原生 CompressionStream 和 DecompressionStream API 完全在你的浏览器中压缩和解压数据。选择容器格式——gzip(带 0x1F 0x8B 魔数字节的 .gz 格式)、zlib/deflate(包裹在 zlib 头中的 DEFLATE 数据),或 deflate-raw(无头的裸 DEFLATE)——以及一个方向。压缩将你的 UTF-8 文本转为编码为 base64 或十六进制的压缩字节;解压将 base64 或十六进制转回原始文本。

由于它使用浏览器内置的流式压缩,不会上传任何内容,也不加载外部库——你的数据留在你的设备上。三种格式不可互换:gzip 和 zlib 在相同的 DEFLATE 载荷周围添加不同的头和校验和(gzip 用 CRC-32,zlib 用 Adler-32),而 deflate-raw 两者都省略,因此你必须用压缩时所用的相同格式解压。压缩后,工具报告原始大小、压缩后大小以及以百分比表示的压缩比(1 − 压缩 / 原始),即输出缩小了多少。

高度重复的文本压缩效果显著;短的或已压缩的输入可能因头和校验和开销而实际变大,这是正常的。如果你的浏览器不提供 CompressionStream,工具会如实告知,而非产生错误输出。请注意,原生 API 使用固定的默认压缩级别,因此没有级别选择器。一键复制结果。

常见问题

gzip、zlib 和原始 deflate 有何区别?
三者都使用 DEFLATE 算法。gzip 用 10 字节的头、魔数字节 0x1F 0x8B 和一个 CRC-32 包裹它;zlib(deflate)用一个短头和一个 Adler-32 校验和包裹它;deflate-raw 没有头或校验和。用压缩时所用的相同格式解压。
解压期望什么输入?
将压缩数据粘贴为 base64 或十六进制(与输出编码选择器匹配)。工具将其解码为字节,并用所选格式解压。如果字节被截断或格式错误,它会报告数据无法解压。
为什么我的文本压缩后变大了?
gzip 和 zlib 增加头和校验和字节,而 DEFLATE 需要足够的重复才能找到节省空间。对于非常短或已随机/已压缩的输入,该开销超过任何收益,因此输出可能更大——这是预期的。
我能选择压缩级别吗?
不能。原生 CompressionStream API 不提供级别参数,因此使用固定的默认级别。输出仍是完全有效的 gzip/zlib/deflate 流,任何标准工具(gunzip、zlib、pako)都能解压。

更多工具