인코딩

Gzip/Deflate ↔ Base64

텍스트를 Gzip 또는 Deflate로 압축한 뒤 결과를 Base64로 인코딩 — 반대 방향도 가능. Compression Streams API를 사용해 브라우저에서 바로 동작.

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

Common uses

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.

이 도구에 대한 아티클: Gzip + Base64: 텍스트로 전송하기 위한 데이터 압축

자주 묻는 질문

Gzip과 Deflate는 어떤 차이가 있나요?

Deflate는 압축 알고리즘 자체의 원시(raw) 결과물이고, Gzip은 그 위에 헤더와 CRC 체크섬 등 추가 정보를 감싼 포맷입니다. 두 형식은 서로 호환되지 않으므로 압축할 때 선택한 형식과 압축 해제 시 선택하는 형식이 반드시 같아야 합니다.

결과로 나온 Base64 문자열을 아무 데서나 압축 해제할 수 있나요?

해당 환경이 같은 압축 형식(Gzip 또는 Deflate)을 지원해야 합니다. 브라우저나 라이브러리마다 지원 범위가 달라서, 예를 들어 Deflate raw 스트림을 기대하지 않는 도구에 넣으면 오류가 날 수 있습니다.

입력한 텍스트가 서버로 전송되나요?

아니요. 압축·압축 해제·Base64 변환 모두 브라우저의 Compression Streams API를 이용해 로컬에서 처리되며 서버로 전송되지 않습니다.

압축 해제 시 왜 가끔 "invalid header" 오류가 나나요?

가장 흔한 원인은 형식 혼동입니다: 헤더 없는 "원시" Deflate로 압축한 데이터를 (자체 헤더와 CRC-32를 기대하는) Gzip으로 압축 해제하려 하거나 그 반대의 경우입니다. 도구 설정에서 형식을 바꿔보세요.

압축은 항상 최종 크기를 줄여주나요?

아니요. 매우 짧은 문자열에서는 Gzip 헤더의 오버헤드와 Base64로 인한 크기 증가가 압축 이득보다 클 수 있습니다 — 이 방식은 충분히 크고 압축이 잘 되는 텍스트 데이터에서만 의미가 있습니다.

아티클: 인코딩

Base64: 인코딩이 필요한 이유와 작동 방식

Base64가 바이너리 데이터를 ASCII 텍스트로 바꾸는 방법과 실제로 언제 필요한지.

Base32: Base64와 다른 점과 더 편리한 경우

대소문자를 구분하지 않는 Base32 알파벳과 Base64보다 편리한 상황.

URL Encode/Decode: 링크에서의 퍼센트 인코딩

주소와 매개변수의 특수 문자가 %XX 시퀀스로 바뀌는 과정.

HTML Entities: 특수 문자를 안전하게 표시하는 방법

< > & 문자를 이스케이프해야 하는 이유와 이것이 마크업 손상을 막는 방법.

JWT: 토큰 구조와 JWT를 "디코딩"한다는 것의 의미

JWT의 header, payload, signature와, 디코딩이 서명 검증과 다른 이유.

Unicode Escape: \uXXXX 시퀀스의 의미

JSON과 JS 문자열에 나타나는 \u0041 같은 시퀀스가 어디서 오는지, 무엇을 의미하는지.

ROT13과 시저 암호: 단순한 문자 치환

13글자 이동이 ROT13을 자기 역함수로 만드는 이유와 오늘날에도 쓰이는 이유.

Punycode: 국제화 도메인이 DNS에서 작동하는 방식

라틴 문자가 아닌 문자를 포함한 도메인이 xn-- 접두사가 붙은 ASCII 형식으로 바뀌는 과정.

모스 부호: 텍스트가 점과 선으로 바뀌는 원리

문자를 점과 선으로 인코딩하는 원리와 모스 부호가 오늘날 어디에 쓰이는지.

Data URI: 이미지를 코드에 직접 삽입해야 할 때

Data URI가 파일 내용을 HTML이나 CSS에 직접 삽입하는 방식과 그럴 만한 가치가 있는 경우.

XML Entities: XML 문서에서 문자 이스케이프하기

이것이 없으면 파싱 중 문서가 깨지는, XML의 다섯 가지 필수 엔티티.