아이폰 사진 한 장은 3~6 MB. 데스크톱 스크린샷은 2~4 MB. "화질 아까워서 PNG로 저장한" 파일은 흔히 8 MB예요. 여기에 포트폴리오, 블로그, 이메일 스레드를 곱하면, 500 KB짜리와 구별도 안 되는 사진 때문에 수백 메가바이트를 보내고 있는 셈이죠.

이미지 압축이 그 간극을 메워요. Zebra는 최신 이미지 코덱을 WebAssembly로 브라우저에서 직접 돌려요. 파일은 기기 밖으로 나가지 않아요. 대부분의 사진이 눈에 보이는 화질 손실 없이 60~90% 작아져요.

3단계

  1. 이미지 압축기를 여세요.
  2. JPG, PNG, WebP를 끌어다 놓으세요 (최대 25 MB). 여러 장을 한꺼번에 놓으면 일괄 압축이 돼요 — 로그인하면 최대 5개, 프리미엄은 최대 15개까지.
  3. Light, Medium, Strong 중 하나를 고르고 압축을 누른 뒤 다운로드하세요. 한 장이면 바로 내려받고, 여러 장이면 ZIP 하나로 나와요.

400만 화소 아이폰 사진은 맥에서 약 2초, 1200만 화소는 4~6초 걸려요. 모바일 사파리는 몇 초가 더 붙고요. 15장 배치는 파일당 비슷한 시간으로 순차 처리돼요 — 업로드가 없으니 속도는 인터넷이 아니라 당신의 CPU에 달려 있어요. 문서를 줄여야 한다면 PDF 압축 가이드가 같은 방식을 설명해요.

이미지가 커지는 이유

  • 해상도. 4032×3024 아이폰 JPEG는 1220만 화소예요. 압축 안 한 상태로 픽셀당 4바이트만 잡아도 50 MB짜리 원시 데이터죠. JPEG가 이걸 약 4 MB로 압축하지만, 더 똑똑한 인코더와 살짝 낮은 품질 설정으로 재인코딩하면 여기서 60%를 더 깎을 수 있어요.
  • 포맷 선택. PNG는 모든 픽셀을 무손실로 저장해요. 또렷한 텍스트가 있는 스크린샷이나 투명도가 있는 아이콘엔 맞는 선택이에요. 하지만 사진엔 틀린 선택이죠 — JPEG라면 기꺼이 버릴 노이즈를 인코딩하는 데 4 MB를 쓰고 있는 거예요.
  • 인코더 품질. 브라우저 내장 JPEG 인코더는 보수적이에요. Zebra는 트렐리스 양자화와 프로그레시브 스캔으로 튜닝한 JPEG 인코더를 써서, 같은 품질에서 10~20% 작은 파일을 만들어요. 같은 사진, 더 작은 파일.
  • EXIF 메타데이터. GPS 좌표, 카메라 모델, 렌즈, 전체 편집 이력. 가끔 쓸모 있지만, 필요 없는 수백 KB일 때가 많아요. Zebra는 재인코딩할 때 대부분의 EXIF를 제거해요.

Zebra가 쓰는 코덱 세 가지

Zebra는 파일 형식과 내용에 맞춰 알맞은 코덱을 골라요.

  • mozjpeg — JPEG 입력과, 알파 없는 PNG 자동 변환용. 트렐리스 양자화로 브라우저 내장 인코더와 포토샵의 "웹용으로 저장"을 같은 품질에서 10~20% 꾸준히 앞서요.
  • oxipng — 진짜 투명도가 있는 PNG용. 여러 필터 패스를 쓰는 무손실 DEFLATE 재최적화. 1 MB짜리 PNG 아이콘 세트는 보통 700~800 KB로 떨어져요 — 데이터는 비트 단위로 그대로, 그냥 더 촘촘하게 담겼을 뿐이에요.
  • libwebp — WebP 입력용. WebP는 이미 효율적이지만, 원하는 품질 목표로 재인코딩하면 여기서 20~40%를 더 줄여요.

세 코덱 모두 jSquash 프로젝트를 통해 WebAssembly로 컴파일돼 있어요. 전부 브라우저 탭 안에서 돌아가요 — 서버도, 업로드도, 텔레메트리도 없어요.

자동 모드: 안전할 때 PNG → JPEG

대부분의 "PNG" 파일은 사실 PNG일 필요가 없어요. 사람들은 "무손실 = 화질 좋음"이라고 생각하며 사진을 PNG로 저장했다가, 400 KB짜리 JPEG로도 똑같아 보일 걸 4 MB짜리 파일로 갖게 되죠.

Zebra는 당신이 놓는 모든 PNG를 검사해요. 알파 채널이 완전히 불투명하면(투명도 없음) 그 파일을 JPEG로 재인코딩해요. 사진 PNG에서는 지각적 차이 없이 5~10배 크기 이득이 나요. PNG에 진짜 투명도가 있으면(UI 목업, 아이콘, 스티커) PNG로 유지돼요 — Zebra가 알파를 건드리지 않고 무손실로 재최적화하고요.

고를 필요 없어요. 파일을 놓으면 저희가 맞는 경로를 골라요.

Light, Medium, Strong

프리셋JPEG qWebP qPNG 최적화 레벨일반적 절감
Light8888230~50%
Medium7878460~80%
Strong6565680~95%

Light(품질 88)는 어떤 일반 화면에서든 원본과 시각적으로 동일해요. 인쇄하거나 확대해서 볼 사진, 또는 메타데이터만 벗기고 인코딩을 조이고 싶을 때 쓰세요.

Medium(품질 78)이 기본값이에요. 결과물은 A4로 인쇄할 만큼 선명하고, 레티나나 모바일에서는 구분이 안 돼요. 특별한 이유가 없다면 이걸 고르세요.

Strong(품질 65)은 200% 이상 확대하면 평평한 영역(하늘, 벽)에 눈에 보이는 아티팩트가 생기지만, 확대해서 픽셀을 뜯어보는 것보다 용량이 중요한 이메일·웹 공유·채팅엔 완벽해요.

아무것도 기기를 떠나지 않는 이유

대부분의 무료 이미지 압축기 — TinyPNG, Compressor.io, ImageOptim Online — 는 당신의 파일을 서버로 업로드해요. 그 방식엔 실제 비용이 따라요.

  • 당신의 이미지가 남의 디스크에 올라가요. "24시간 뒤 삭제" 약속이 있어도 보존 구간은 존재해요. 신분증 사진, 비공개 대화 스크린샷, 대외비 자료라면 그 구간이 문제예요.
  • 대역폭을 두 배로 써요. 서버로 올리고, 서버에서 내려받고. 모바일에서는 이게 느린 부분이에요.
  • EXIF 메타데이터가 파일과 함께 이동해요. 폰의 GPS 좌표가 JPEG 헤더에 박혀 있어요. 업로드하면 서버도 그걸 읽어요.

Zebra는 최신 이미지 코덱을 WebAssembly 모듈로 브라우저 탭 안에서 돌려요. 이미지는 로컬에서 디코딩되고, 재인코딩되고, 다시 묶여요. 네트워크 호출 없음. 보존 구간 없음. 페이지를 불러온 뒤 오프라인이 돼도 압축은 계속 돼요.

JPG vs PNG vs WebP — 무엇으로 저장할까

압축 후에 어떤 포맷으로 저장해야 하는지, 짧은 결정 트리예요.

  • 실제 장면 사진, 투명도 불필요? JPEG. 품질 78~85면 인쇄 빼고는 전부 충분해요.
  • 투명도가 있는 사진(드묾 — 보통 컷아웃)? 상대방이 2022년 이후 브라우저를 쓴다면 WebP. 안전한 대안은 PNG.
  • UI 스크린샷, 아이콘, 로고, 또렷한 텍스트가 있는 것? PNG. 텍스트 주변의 JPEG 링잉 아티팩트는 보기 싫고 고칠 수도 없어요.
  • 애니메이션? WebP(아주 오래된 호환성엔 GIF). 애니메이션 PNG도 되지만 지원이 들쭉날쭉해요.
  • 최신 웹, 브라우저 지원 완전? 전부 WebP. Zebra가 추가하면 AVIF.

압축하지 말아야 할 때

  • 편집용 마스터 파일. 원본은 최고 품질로 두세요. 복사본을 압축하세요. SNS 비율에 맞추는 게 유일한 목적이라면, 화질을 낮추기보다 사진 자르기가 더 똑똑한 첫걸음일 때가 많아요.
  • 이미 아주 작은 파일. 200 KB 미만은 보통 할 가치가 없어요 — 재인코딩 오버헤드가 절감분보다 클 수 있어요.
  • 또렷한 텍스트가 있는 스크린샷. JPEG 링잉 아티팩트가 텍스트를 망쳐요. PNG로 두세요 — Zebra가 무손실로 재최적화해요(투명도 있는 스크린샷은 자동으로 이렇게 처리돼요).
  • A3 이상으로 인쇄할 것. Light로 두거나 압축을 건너뛰세요.

Zebra는 재인코딩이 파일을 더 키우는 경우(이미 최적화된 PNG, 낮은 품질의 작은 JPEG)도 감지해서, 줄이는 척하는 대신 원본을 그대로 돌려줘요.

자주 묻는 질문

무료예요?
네. 워터마크 없고, 가벼운 사용엔 가입도 필요 없어요. 익명 방문자는 하루 2회, 로그인한 무료 계정은 3회, 프리미엄은 무제한이에요.
제 사진이 업로드되나요?
아니요. 압축은 WebAssembly 코덱(mozjpeg, oxipng, libwebp)으로 브라우저 안에서 전부 돌아가요. 파일은 절대 기기를 떠나지 않아요.
최대 파일 크기는요?
이미지당 25 MB예요. 거의 모든 폰 사진(1200만 화소 JPEG는 보통 3~6 MB)과 대부분의 미러리스 RAW 내보내기를 커버해요.
화질이 떨어지나요?
Light(q=88)는 화면에서 원본과 시각적으로 동일해요. Medium(q=78)이 기본값이고 — 인쇄할 만큼 선명하며 SNS에서는 구분 안 돼요. Strong(q=65)은 확대보다 용량이 중요한 이메일·웹 공유용이에요.
아이폰 사파리에서도 되나요?
네. iOS 16 이상의 사파리가 WebAssembly 코덱을 돌려요. 1000만 화소 JPEG는 아이폰 13 이상에서 2~4초에 압축돼요.
일괄 압축이 되나요?
로그인하면 한 번에 최대 5개(프리미엄 15개)까지 놓을 수 있고, 결과는 JPG를 담은 ZIP 하나로 나와요. 각 파일이 같은 인코더를 거치니 배치 전체의 품질이 일정해요.
왜 제 PNG가 JPEG로 하면 훨씬 작아지나요?
PNG는 무손실이라 사진 데이터를 잘 압축하지 못해요 — 4 MB PNG가 보이는 손실 없이 400 KB JPEG가 되는 일이 흔해요. Zebra는 진짜 투명도가 없는 PNG를 감지해 자동으로 JPEG로 바꿔요. 알파 채널을 실제로 쓰는 PNG는 PNG로 유지돼요(무손실로 재최적화).
AVIF는 왜 아직 지원 안 하나요?
AVIF가 더 잘 압축하지만 WASM에서 인코딩이 느려요(같은 이미지 기준 현재 인코더보다 5~10배 느림). 파일이 근소하게 작지만 느린 도구보다, 실제로 쓸 빠른 도구를 내는 쪽을 택했어요. AVIF는 로드맵에 있어요.
EXIF 메타데이터를 제거하나요?
대체로 그래요 — 재인코딩하면 EXIF가 기본적으로 빠져요. 용량을 줄이는 과정의 부수 효과지만, 프라이버시 이득이기도 해요.