홈 › 개발·웹 도구

Gzip·Zlib·Deflate 풀기·압축

H4sI로 시작하면 gzip, eJ로 시작하면 zlib를 Base64로 바꾼 거예요. 붙여 넣으면 형식을 알아서 판별해요.

파일은 서버로 전송되지 않고 내 기기에서만 처리돼요
.gz·.zz·.deflate 파일을 놓거나 눌러서 고르기파일은 기기 밖으로 나가지 않아요

문자열 속 압축 데이터 풀기

웹 서비스와 프로그램은 데이터를 줄이려고 deflate 압축을 자주 써요. 같은 deflate 데이터라도 앞뒤에 붙는 머리가 달라서 세 가지 형식이 있어요. gzip(RFC 1952)은 1F 8B로 시작하고 파일 이름·CRC32 같은 정보가 붙어 .gz 파일과 HTTP 압축에 쓰여요. zlib(RFC 1950)은 보통 78 9C·78 01·78 DA로 시작하고 끝에 Adler-32 검사값이 붙어 PNG 내부, PDF 스트림, 게임 저장 파일에 많아요. raw deflate(RFC 1951)는 머리 없이 압축 데이터만 있어 ZIP 안의 파일이나 일부 웹 API에서 써요.

자동 판별 방법

입력이 16진수 글자로만 되어 있으면 16진수로, 아니면 Base64(URL-safe Base64 포함)로 읽어요. 그다음 첫 두 바이트가 1F 8B면 gzip, 첫 바이트의 아래 4비트가 8(deflate)이고 첫 두 바이트를 16비트 수로 봤을 때 31로 나누어떨어지면 zlib, 둘 다 아니면 raw deflate로 풀어요. Base64로 바꾼 gzip은 거의 항상 ‘H4sI’로, zlib는 ‘eJ’나 ‘eN’으로 시작해서 눈으로도 구별할 수 있어요. 판별이 틀리면 ‘압축 형식’을 직접 고르세요.

풀기와 압축하기

풀기는 브라우저에 내장된 DecompressionStream으로 하고, 데이터 끝에 군더더기 바이트가 붙었거나 조금 잘린 경우에는 pako(MIT)로 한 번 더 시도해요. 풀린 내용이 UTF-8 글자면 글자로, 아니면 16진수로 보여 주고 파일로 저장할 수 있어요. 압축하기 탭에서는 글자를 UTF-8로 바꿔 세 형식 중 하나로 압축하고 Base64나 16진수로 돌려줘요. 브라우저 내장 압축기를 써서 같은 글이라도 다른 프로그램(예: 파이썬 zlib 기본 수준)과 바이트가 조금 다를 수 있지만, 어느 쪽으로든 풀면 같은 글이 나와요.

참고

여러 파일이 묶인 .tar.gz나 ZIP 파일 전체를 풀려면 ‘7z·RAR·TAR·GZ 압축 풀기’ 도구가 더 편해요. 이 페이지는 붙여 넣은 문자열이나 단일 압축 스트림을 빠르게 확인하는 용도예요. bzip2·xz·zstd 형식은 지원하지 않아요. 데이터는 이 기기 밖으로 나가지 않아요.

참고한 자료

자주 묻는 질문

‘풀 수 없어요’라고 나와요.

압축 데이터가 아니거나, 앞에 다른 바이트가 붙어 있을 수 있어요. 헥스 뷰어로 1F 8B나 78 9C가 어디서 시작하는지 찾아 그 뒤부터 넣어 보세요.

압축하기 결과가 원래보다 커요.

gzip은 머리·꼬리에 18바이트를 붙여서 아주 짧은 글은 오히려 커져요. 글이 길고 반복될수록 많이 줄어요.

풀린 내용이 깨진 글자로 보여요.

원래 데이터가 EUC-KR 같은 다른 인코딩일 수 있어요. 파일로 저장해 ‘문자 인코딩 변환기’에서 열어 보세요.

함께 쓰면 좋은 도구