LZW 압축 단계 계산기
GIF·TIFF가 쓰는 LZW로 글을 압축하며 사전에 무엇이 언제 들어가는지 단계별로 보여 줍니다. 부호 폭이 9비트에서 10비트로 넓어지는 시점까지 반영해 압축률을 계산하고, 부호만으로 되돌려 봅니다.
UTF-8 바이트로 바꿔 GIF·TIFF와 같은 방식으로 압축합니다
부호 16개
75%
192비트가 144비트가 되었습니다
셈
부호 목록
84 79 66 69 79 82 78 79 84 256 258 260 265 259 261 263
단계별 — 사전에 무엇이 언제 들어가나
| # | 내보낸 부호 | 폭 | 사전에 추가 |
|---|---|---|---|
| 1 | 84T | 9 | 256TO |
| 2 | 79O | 9 | 257OB |
| 3 | 66B | 9 | 258BE |
| 4 | 69E | 9 | 259EO |
| 5 | 79O | 9 | 260OR |
| 6 | 82R | 9 | 261RN |
| 7 | 78N | 9 | 262NO |
| 8 | 79O | 9 | 263OT |
| 9 | 84T | 9 | 264TT |
| 10 | 256TO | 9 | 265TOB |
| 11 | 258BE | 9 | 266BEO |
| 12 | 260OR | 9 | 267ORT |
| 13 | 265TOB | 9 | 268TOBE |
| 14 | 259EO | 9 | 269EOR |
| 15 | 261RN | 9 | 270RNO |
| 16 | 263OT | 9 | — |
되돌리기
푸는 쪽에는 사전을 보내지 않습니다. 위의 부호 목록만으로 같은 사전을 다시 만들어 원문을 복원합니다.
사용 방법
- 1압축할 글을 넣습니다. UTF-8 바이트로 바꿔 GIF·TIFF와 같은 방식으로 압축합니다.
- 2단계 표에서 어떤 부호가 나가고 사전에 무엇이 새로 들어가는지 따라갑니다.
- 3반복이 없는 짧은 글도 넣어 보세요. 압축률이 100%를 넘어 오히려 커지는 것을 볼 수 있습니다.
자주 묻는 질문
보내지 않습니다. 이것이 LZW의 핵심입니다. 압축하는 쪽과 푸는 쪽이 정확히 같은 규칙으로 사전을 키우기 때문에, 푸는 쪽은 부호 목록만 받아도 같은 사전을 스스로 다시 만들어 냅니다. 사전을 붙여 보내야 한다면 압축한 보람이 크게 줄어들 것입니다.
사전이 커지면 부호 번호도 커져서 더 많은 비트가 필요하기 때문입니다. 사전이 256개일 때는 9비트로 충분하지만 512개가 되는 순간 10비트가 필요합니다. 이 시점을 반영하지 않고 «전부 12비트»처럼 세면 압축률이 실제와 어긋납니다.
«직전에 푼 것 + 그 첫 글자»가 답입니다. 푸는 쪽 사전은 압축하는 쪽보다 한 항목 늦기 때문에 이런 부호가 실제로 날아옵니다. ababababa가 그 예로, 세 번째 부호가 여기에 해당합니다. 이 갈래를 빠뜨린 구현은 대부분의 입력에서 잘 돌다가 이런 입력에서만 깨집니다.
반복이 없으면 사전이 쓸모가 없어 한 바이트(8비트)를 9비트 부호로 바꾸기만 하기 때문입니다. abcdef 여섯 글자는 48비트에서 54비트로 늘어납니다. 무손실 압축은 어떤 방식이든 모든 입력을 줄일 수 없고, 어떤 입력은 반드시 늘어납니다.
됩니다. 다만 UTF-8에서 한글 한 글자가 3바이트라, 사전 항목이 글자 경계에 맞지 않는 경우가 많습니다. 그런 항목은 글자 대신 16진 바이트로 보여 줍니다. GIF·TIFF가 바이트 단위로 다루기 때문이며, 반복이 있으면 압축은 잘 됩니다.
전송되지 않습니다. 압축과 복원은 전부 브라우저 안에서 이뤄지고, 입력값은 이 브라우저의 localStorage에만 남습니다.
알아두면 좋은 점
- 사전은 0~255의 한 바이트짜리 256개로 시작하고 새 부호는 256부터 붙습니다. GIF가 쓰는 초기화·종료 부호(clear·EOI)는 넣지 않은 순수 LZW입니다.
- GIF는 12비트에서 사전을 비우고 다시 시작하지만, 이 도구는 16비트까지 넓히고 멈춥니다. 아주 긴 글에서는 실제 GIF의 압축률과 달라집니다.
- 압축률은 내보낸 부호마다 그 시점의 폭을 더해 계산합니다. 실제 파일에는 헤더 등이 더 붙으므로 이 값이 곧 파일 크기는 아닙니다.
- 단계 표는 앞의 2000단계까지만 그립니다. 집계 숫자는 전체를 셉니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.