Gzip·Deflate 압축기

fflate 라이브러리로 텍스트나 파일을 gzip·zlib·raw DEFLATE로 압축·해제합니다 — 압축 수준을 고르고 형식을 자동 감지하며, 압축 전후 크기 비율을 실시간으로 보여줍니다.

gzip: .gz 파일과 HTTP "Content-Encoding: gzip"이 쓰는 형식. 잘 모르면 여기서 시작하세요.

또는 아무 종류의 파일이나 놓으세요 — .gz·.zz·.deflate는 압축을 풀고, 그 밖의 파일은 압축합니다

원본: 491 B → 압축: 150 B (69% 절감)
압축 결과 (base64)
H4sIAAAAAAAAA+2MTQrCMBhEr/KdwDN20UWwovUnNoKpCJFSiFBqlYKeKDO9g2nxCu66G+bNvNCcaBOB71neaDth4XHxglYJcjPskljGgDoirfnS06g0kdbIFDK3kFnyJwkag8dzBKjWoy708fahMrhaoUt57LA/Y3mQYXOfdkqxyAU2De1K+Hastj/bF22tIJrrAQAA

원본: 491 B → 압축: 150 B (69% 절감)

gzip·zlib·DEFLATE로 텍스트 압축·해제

텍스트를 붙여넣고 형식을 선택하면 압축된 바이트를 base64로 — "압축 데이터 표기"를 hex로 바꾸면 16진수로 — 돌려주어 복사·저장·공유할 수 있습니다. 압축 해제로 전환하면 그것을 다시 원본 텍스트로 되돌리고, "이 결과 압축 해제"를 누르면 답을 입력 칸에 넣고 방향을 바꿔 바로 풀어 봅니다("이 결과 다시 압축"은 그 반대입니다). 원본 바이트 수, 압축 후 바이트 수, 그리고 얼마나 줄었는지(또는 늘었는지)를 실시간으로 보여주므로 데이터가 얼마나 잘 압축되는지 한눈에 알 수 있습니다. 아무 종류의 파일이나 놓을 수도 있습니다 — 파일의 원래 바이트를 압축하고, .gz·.zz·.deflate라면 압축을 풀며, 결과는 base64가 아니라 실제 파일로 내려받을 수 있습니다. 압축 수준 선택으로 속도와 크기를 맞바꿀 수 있고(저장만부터 가장 작음까지, 처음에는 fflate와 zlib의 기본값), 압축 해제에서 “자동 감지”를 고르면 gzip과 zlib은 맨 앞 바이트로 알아보고 그 밖의 것은 raw deflate로 풀어 본 뒤 어느 형식이었는지 알려 줍니다. 풀었을 때 페이지가 안전하게 다룰 수 없을 만큼 커지는 데이터는 탭이 멈추지 않도록 풀지 않습니다. 입력하거나 붙여넣은 텍스트도 파일을 열 때와 같은 5 MB까지(UTF-8 바이트 기준)만 받으며, 넘으면 작업을 시작하지 않고 두 크기를 알려 주므로 아주 긴 붙여넣기도 탭을 멈추게 하지 않습니다. 모든 처리는 fflate 라이브러리로 브라우저 안에서 이루어지며 입력한 내용은 업로드되지 않습니다.

gzip·zlib·raw DEFLATE의 차이

셋 다 같은 DEFLATE 압축 코어를 쓰고 감싸는 방식만 다릅니다. raw DEFLATE는 헤더나 체크섬이 없는 순수 스트림이고, zlib은 2바이트 헤더와 Adler-32 체크섬을 붙이며, gzip은 더 긴 헤더와 CRC-32 체크섬을 붙여 .gz 파일과 HTTP Content-Encoding: gzip에 쓰입니다. 한 형식으로 압축한 데이터는 다른 형식으로 풀리지 않으므로 데이터가 나온 곳과 같은 형식을 선택하거나 “자동 감지”에 맡기세요.

자주 묻는 질문

gzip, zlib, raw DEFLATE의 차이는 무엇인가요?

셋 다 같은 DEFLATE 알고리즘을 쓰지만 감싸는 방식이 다릅니다. raw DEFLATE는 헤더·체크섬이 없고, zlib은 2바이트 헤더와 Adler-32 체크섬을, gzip은 더 큰 헤더와 CRC-32 체크섬을 붙입니다. 감싸는 방식이 다르므로 압축할 때 쓴 형식과 같은 형식으로 풀어야 합니다. 모르겠다면 자동 감지를 고르세요 — gzip과 zlib은 헤더로 알아보고 원본 deflate는 마지막에 시도합니다.

압축 결과가 왜 base64인가요?

압축 데이터는 이진 데이터라 일반 텍스트로 안전하게 붙여넣거나 저장할 수 없어 base64로 — "압축 데이터 표기"를 hex로 두면 16진수로 — 인코딩합니다. 압축을 풀 때는 같은 표기로 붙여넣으면 도구가 디코딩한 뒤 압축을 해제합니다. 실제 바이트를 그대로 갖고 싶다면 결과 아래의 다운로드 버튼으로 .gz·.zz·.deflate 파일을 저장하세요.

파일도 압축할 수 있고, 얼마나 세게 압축할지 고를 수 있나요?

네. 텍스트 상자 아래에 아무 파일이나 놓으면 파일의 원래 바이트를 압축하고, .gz·.zz·.deflate라면 압축을 풉니다. 다운로드 버튼은 실제 바이트를 저장합니다 — 압축한 스트림은 .gz·.zz·.deflate 파일로, 푼 파일은 압축 확장자를 뗀 원래 이름으로 저장됩니다. 풀어 보니 텍스트가 아니라면 깨진 글자로 찍지 않고 크기만 알려 줍니다. 압축 수준은 저장만부터 가장 빠름을 거쳐 가장 작음까지 고를 수 있고, 처음에는 fflate와 zlib의 기본값이라 다른 것을 고르기 전에는 결과가 바뀌지 않습니다.

압축 데이터를 16진수로 받거나 결과를 바로 되돌릴 수 있나요?

됩니다. "압축 데이터 표기"를 hex로 바꾸면 압축은 16진수로 쓰고 압축 해제는 16진수를 읽으며, 붙여넣는 16진수는 띄어 쓰거나 대문자여도 됩니다. "이 결과 압축 해제"와 "이 결과 다시 압축"은 답을 입력 칸에 넣고 방향을 바꾸므로, 형식은 그대로 두고 한 번씩 누르면 왕복합니다.

아주 긴 텍스트를 붙여넣으면 어떻게 되나요?

입력하거나 붙여넣은 텍스트도 파일을 열 때와 같은 한도까지만 받으며, 글자 수가 아니라 UTF-8 바이트로 잽니다. 그래서 한 글자가 여러 바이트인 한글은 더 빨리 한도에 닿습니다. 한도를 넘으면 압축을 아예 시작하지 않고, 텍스트가 얼마나 크며 한도가 얼마인지 알려 주어 끝낼 수 없는 일을 붙잡고 탭이 멈추는 일이 없습니다.