Mã hóa
Gzip/Deflate ↔ Base64
Nén văn bản thành Gzip hoặc Deflate rồi mã hóa kết quả bằng Base64 — và ngược lại. Hoạt động qua Compression Streams API ngay trong trình duyệt.
Base64 by itself doesn't compress anything — quite the opposite, it grows the size by about 33%. To send large text compactly through a text-only channel, it's first compressed with Gzip or Deflate, and only then is the result Base64-encoded.
How to use it
- Compress: paste text and the tool compresses it with Gzip or Deflate (the browser's Compression Streams API) and encodes the result as Base64.
- Decompress: paste a Base64 string of compressed content to get the original text back.
- Pick Gzip or Deflate depending on which format the receiving system expects.
Common uses
- Compactly embedding a large text value (an SVG, a config) in a URL parameter or cookie with a size limit.
- Preparing a compressed payload for an API that accepts Base64-encoded Gzip data.
- Decompressing data received in this format from another system so it can be read manually.
Things to keep in mind
Compression only pays off on sufficiently large, compressible text — on short strings the Gzip header overhead plus the Base64 expansion can actually make the result bigger.
Deflate skips Gzip's headers, so its output is more compact, but the format is less self-describing: the receiving side needs to know in advance that it's Deflate specifically.
Bài viết về công cụ này: Gzip + Base64: nén dữ liệu để truyền dưới dạng văn bản
Câu hỏi thường gặp
Sự khác biệt giữa Gzip và Deflate ở đây là gì?
Gzip bọc dữ liệu nén trong một header và checksum CRC ở cuối, còn Deflate là luồng nén thô không có phần bọc đó. Dữ liệu nén bằng định dạng này không thể giải mã bằng định dạng kia — hãy đảm bảo định dạng đã chọn khớp với cách dữ liệu được tạo ra.
Vì sao tôi cần mã hóa Base64 dữ liệu đã nén?
Đầu ra của Gzip/Deflate là nhị phân thô, vốn không phù hợp với các ngữ cảnh văn bản như URL, JSON hay tệp cấu hình. Mã hóa Base64 biến dữ liệu nhị phân đó thành văn bản ASCII an toàn, dễ sao chép.
Vì sao công cụ báo trình duyệt của tôi không hỗ trợ điều này?
Công cụ này dựa vào Compression Streams API gốc của trình duyệt (CompressionStream/DecompressionStream), vốn không có sẵn trên mọi trình duyệt hoặc phiên bản cũ — không dữ liệu nào được gửi lên máy chủ, nhưng nếu không được hỗ trợ thì công cụ đơn giản là không chạy được.
Vì sao giải nén đôi khi báo lỗi "invalid header"?
Nguyên nhân phổ biến nhất là nhầm định dạng: dữ liệu được nén dưới dạng Deflate "thô" không có header, nhưng lại được giải nén như Gzip (vốn cần header riêng và CRC-32), hoặc ngược lại. Hãy thử đổi định dạng trong cài đặt của công cụ.
Nén dữ liệu có phải lúc nào cũng giảm kích thước cuối cùng không?
Không. Với chuỗi rất ngắn, chi phí phụ trội của header Gzip cùng mức tăng do Base64 có thể vượt quá lợi ích từ nén — cách tiếp cận này chỉ hợp lý với dữ liệu văn bản đủ lớn và có khả năng nén tốt.