Oh MyUtils

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!"

相关工具