파일 업로드
  1. base64hub
  2. 웹·토큰 도구
  3. gzip + Base64

Gzip 압축 후 Base64 인코딩

입력한 텍스트나 놓은 파일을 gzip으로 압축하고 결과를 Base64로 인코딩합니다. 정보 줄에서 압축 덕분에 일반 Base64보다 문자열이 짧아졌는지 바로 확인할 수 있습니다.

무료 가입 없음, 제한 없음 로컬 업로드 없음 압축률 모든 입력을 일반 Base64와 비교 업데이트 2026. 10. 27.
입력 –압축됨 –출력 –압축률 –

브라우저에서 처리됩니다. 이 페이지는 데이터를 어디로도 보낼 수 없습니다 – 확인 방법

gzip 압축 후 Base64로 인코딩하는 방법

  1. 입력란에 텍스트를 입력하거나 붙여넣거나, 파일을 놓으세요. 실시간이 켜져 있어 입력하는 대로 출력이 바뀝니다.
  2. 형식은 gzip으로 두세요. 같은 목록에 zlib, raw deflate, 그리고 브라우저가 지원하면 Brotli가 있습니다.
  3. 문자열을 URL이나 파일 이름에 넣는다면 URL-safe (- _) 를, 이메일이나 PEM 방식의 줄 길이가 필요하면 76자에서 줄 바꿈을 선택하세요.
  4. 출력 복사를 누르거나, 다운로드로 Base64를 .txt 파일로 받거나, 압축 파일 다운로드로 바이너리 .gz를 저장하세요.

정보 줄에는 입력 크기, 압축 크기, Base64 크기, 압축률이 표시되고, 상태 메시지는 같은 입력의 일반 Base64보다 결과가 얼마나 짧거나 긴지 알려 줍니다.

먼저 압축할 가치가 있는 경우

Base64는 항상 데이터를 3분의 1 늘립니다. 반복이 있는 데이터라면 gzip이 그만큼을 되찾고 그 이상도 줄입니다.

입력일반 Base64Gzip + Base64
Hello, world! (13바이트)20문자44문자
상품 레코드 100개가 든 9,281바이트 JSON 배열12,376문자1,096문자
JPEG 사진파일의 약 4/3일반 Base64보다 약간 김

수치는 gzip -6으로 만든 것입니다. 브라우저의 압축기는 몇 바이트 다를 수 있으며, 입력에 대한 정확한 수치는 정보 줄에 표시됩니다. 대략 100바이트 미만의 입력과 이미 압축된 데이터는 일반 Base64가 낫습니다.

gzip + Base64 문자열이 쓰이는 곳

  • Cloud-init과 VM 사용자 데이터: cloud-init은 gzip으로 압축된 사용자 데이터를 감지하므로, 클라우드 메타데이터 서비스의 크기 제한을 지키는 데 도움이 됩니다.
  • AWS CloudWatch Logs 구독은 로그 묶음을 awslogs.data에 gzip의 Base64로 담아 Lambda에 전달합니다.
  • Helm 3은 각 릴리스를 gzip으로 압축한 JSON의 Base64로 Kubernetes Secret 안에 저장합니다.
  • 설정 파일이나 큰 텍스트 덩어리를 담아야 하는 환경 변수와 JSON 필드.
  • 상태 객체를 담는 쿼리 문자열과 딥 링크. 여기서는 URL-safe 출력을 쓰세요.

H4sI 접두사 말고는 Base64 안에 데이터가 gzip이라고 알려 주는 것이 없습니다. 필드 이름이나 API 문서에 명시하거나, HTTP라면 Base64 대신 Content-Encoding: gzip과 함께 바이너리 본문을 보내세요.

코드에서 gzip + Base64

import base64, gzip

data = open("products.json", "rb").read()
packed = base64.b64encode(gzip.compress(data, mtime=0)).decode()
// Node.js
const zlib = require("zlib");
const packed = zlib.gzipSync(Buffer.from(text)).toString("base64");

브라우저에서는 new CompressionStream("gzip")이 압축을 하며, 이 페이지도 이것을 씁니다. 더 많은 예시는 Python과 Node.js 페이지에 있습니다.

자주 생기는 문제

  • 받는 쪽에 알 수 없는 데이터가 나옵니다: Base64는 디코딩했지만 gzip 압축을 풀지 않았습니다. H4sI가 있는지 확인하고 gzip Base64 디코더로 압축을 해제하세요.
  • 상대편에서 “incorrect header check"가 납니다: 받는 쪽이 gzip이 아니라 zlib을 기대합니다. 형식을 zlib(deflate)으로 바꾸세요. 어느 라이브러리가 무엇을 기대하는지는 zlib 페이지에서 설명합니다.
  • Brotli가 회색으로 비활성화됩니다: 브라우저의 기본 압축 API가 Brotli를 제공하지 않으며, 옵션 아래에 그렇게 표시됩니다.
  • 다른 도구와 출력이 다릅니다: gzip 헤더에는 타임스탬프와 OS 바이트가 들어가고, 압축기마다 압축 수준이 다릅니다. 바이트가 달라도 압축을 풀면 같은 내용일 수 있습니다.

자주 묻는 질문

Base64 전에 gzip으로 압축하면 문자열이 짧아지나요?

수백 바이트가 넘는 텍스트, JSON, XML, 로그라면 대개 크게 짧아집니다. 짧은 문자열과 이미 압축된 데이터(JPEG, PNG, ZIP, MP4)는 오히려 길어집니다. gzip이 헤더와 트레일러로 18바이트를 더하기 때문입니다.

gzip Base64 문자열이 항상 H4sI로 시작하는 이유는 무엇인가요?

gzip 데이터는 바이트 1F 8B 08로 시작하고, 이 3바이트가 Base64로 H4sI입니다. 그다음 문자는 플래그와 타임스탬프에 따라 달라집니다. H4sIAAAAAAAA는 파일 이름과 수정 시각이 없다는 뜻입니다.

터미널에서 gzip 압축과 Base64 인코딩을 하려면 어떻게 하나요?

Linux에서는 gzip -nc file.json | base64 -w0입니다. base64에 -w가 없는 macOS에서는 gzip -nc file.json | base64 | tr -d '\n'을 쓰세요. -n은 파일 이름과 시각을 빼므로 같은 입력이면 같은 출력이 나옵니다.