GZIP压缩与解压 - Base64 GZIP编码器 在线工具
使用GZIP压缩和解压文本或文件。Base64输出、压缩统计、.gz文件下载 — 100%客户端处理,数据不发送到服务器。
输入
输出
100%客户端处理 — 您的数据永远不会离开浏览器
常见问题
什么是GZIP压缩?
GZIP是基于DEFLATE算法(LZ77和霍夫曼编码的组合)的文件格式和压缩算法。它是Web上使用最广泛的压缩格式,几乎所有HTTP服务器和浏览器都通过Content-Encoding: gzip头支持它。
如何使用此工具?
选择压缩或解压选项卡。要压缩,请输入文本或拖放文件,压缩输出将显示为Base64编码字符串。要解压,请粘贴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!"