ZIP으로 압축해도 용량이 줄지 않는 이유: 파일4개 비교

반복 문장, PNG, JPG, 작은 텍스트를 각각 ZIP으로 묶었습니다. 압축이 잘되는 경우와 오히려 용량이 늘어나는 경우를 실측값으로 설명합니다.

뒤로가기

ZIP은 용량을 줄이는 일과 파일을 묶는 일을 함께 합니다

메일 첨부 제한을 넘는 이미지를 ZIP으로 압축했는데 크기가 거의 그대로일 수 있습니다. 압축이 실패한 것일까요? 이미 압축된 데이터에는 더 줄일 수 있는 부분이 적을 수 있습니다. 아주 작은 파일은 ZIP에 필요한 부가 정보 때문에 오히려 커질 수도 있습니다.

또 ZIP 파일이라고 해서 반드시 내용이 압축된 것은 아닙니다. ZIP은 여러 파일을 하나로 묶으면서, 내용을 압축하거나 그대로 저장할 수 있는 형식입니다. Python의 ZIP 저장 방식 설명

차이를 확인하려고 같은 압축 방식과 설정으로 파일4개를 각각 묶었습니다. 확장자만으로 압축률을 예상하기보다 실제 결과를 비교해 보세요.

파일4개를 같은 조건으로 압축했습니다

텍스트는 같은 연습 문장을 1000번 반복해 만들었습니다. PNG는 한글 안내 카드입니다. JPG는 사진이 아니라 글자와 색 무늬를 넣은 합성 시험 이미지입니다. 작은 텍스트에는 hello와 줄바꿈만 넣었습니다.

원본 압축 전 ZIP 파일 변화
반복 문장 텍스트 81,000바이트 511바이트 99.4% 감소
안내 카드 PNG 40,662바이트 35,887바이트 11.7% 감소
합성 패턴 JPG 611,150바이트 605,947바이트 0.9% 감소
작은 텍스트 6바이트 132바이트 126바이트 증가

압축 방식은 DEFLATE, 압축 단계는9로 통일했습니다. DEFLATE는 ZIP에서 사용할 수 있는 압축 방식 중 하나입니다. 표의 ZIP 크기는 내부의 압축 데이터만이 아니라 파일 이름과 관리 정보를 포함한 ZIP 파일 전체 크기입니다.

반복 문장이 크게 줄어든 결과를 일반적인 문서의 압축률로 받아들이면 안 됩니다. 같은 문장만 반복하도록 만든 특수한 예제입니다. 반대로 이 JPG가 거의 줄지 않았다고 해서 모든 JPG가 똑같은 비율로 줄어드는 것도 아닙니다.

이미 압축된 이미지가 덜 줄어드는 이유

반복되는 내용이 많으면 이를 더 짧게 표현할 여지가 큽니다. 이 예제의 반복 문장은 그런 조건을 일부러 만들었습니다. PNG와 JPG는 이미 각각의 방식으로 압축된 이미지이므로, 다시 ZIP으로 묶었을 때 얻는 이득이 다를 수 있습니다.

그렇다고 이미 압축된 파일이 절대로 줄어들지 않는 것은 아닙니다. 이 실험에서도 PNG는 11.7% 줄었습니다. 이미지 내용과 기존 저장 설정에 따라 ZIP이 추가로 줄일 부분이 남아 있을 수 있습니다. 확장자만 보고 정답을 정하기보다 실제 파일 크기를 비교하는 이유입니다.

이미지 용량을 크게 줄여야 한다면 ZIP을 반복해서 만드는 것보다 가로·세로 크기와 화질을 조절하는 방법을 검토하세요. 다만 그 작업은 세부 정보를 줄일 수 있으므로 원본을 남겨야 합니다.

작은 파일은 왜 더 커졌을까요?

ZIP에는 파일 이름, 압축 방식, 내용 확인에 필요한 값 같은 관리 정보도 들어갑니다. 원본이 6바이트뿐이면 이 부가 정보가 상대적으로 큽니다. 이번 결과에서는 전체 ZIP이 132바이트가 됐습니다.

파일이 커졌다고 원본 내용이 늘어난 것은 아닙니다. 압축을 풀면 다시 6바이트가 됩니다. 여러 파일을 한 번에 보내기 위해 ZIP을 쓴다면 약간의 용량 증가가 있어도 목적을 달성한 것일 수 있습니다.

반면 업로드 용량 제한을 통과하는 것이 목적이라면 결과 ZIP의 크기를 다시 확인해야 합니다. ‘압축 완료’ 표시만으로 제한을 만족한다고 판단하지 마세요.

상황에 맞게 다음 작업을 고르세요

필요한 결과 먼저 확인할 작업
여러 파일을 하나로 전달 ZIP으로 묶고 파일 목록을 확인
사진·이미지의 용량을 크게 줄임 이미지 크기·품질 조절 후 가독성 확인
아주 작은 파일1개 전달 ZIP이 필요한 제출 규칙인지 확인
압축 전과 같은 내용을 전달 압축 해제 후 파일 수와 내용을 대조

같은 파일을 ZIP 안에 넣고 그 ZIP을 다시 압축하는 일을 반복해도 큰 감소가 보장되지 않습니다. 내용 보존이 중요하면 원본을 임의로 변환하기 전에 전달 방식이나 제출 한도를 확인하세요.

예제로 결과를 확인하세요

각 ZIP에는 연결된 원본 파일1개만 들어 있습니다. 모두 실제로 압축을 풀어 처음 파일과 바이트 단위로 일치하는지 검사했습니다. 이 ZIP 압축은 원본을 그대로 되돌리는 방식이며 이미지의 화질 조절과는 다릅니다.

2026년10월4일에 Python의 zipfile로 생성했습니다. 감소율은 (원본 크기 - ZIP 크기) ÷ 원본 크기 × 100으로 계산했습니다. 운영체제나 압축 도구가 다르면 부가 정보와 저장 설정 때문에 결과 크기도 달라질 수 있습니다.

전체 측정값과 실행 환경을 함께 제공합니다. 생성 코드는 저장소의 scripts/generate_blog_data_examples.py에 있습니다.