moim.bio

SVG 압축 (Minify)

편집기가 남긴 흔적을 걷어내고 좌표를 반올림해 SVG 용량을 줄입니다. 보통 절반 아래로 내려갑니다.

SVG 가 왜 그렇게 큰가

아이콘 하나가 20 KB 를 넘는다면 그림이 복잡해서가 아닙니다. 편집기가 자기 상태를 파일 안에 같이 적어 두기 때문입니다. 레이어 이름, 마지막으로 본 확대율, 저장한 시각, 안내선 위치 — 브라우저는 하나도 읽지 않는 값들입니다.

지우는 것무엇
<metadata>제목·저작자·라이선스를 적는 자리. 그림에는 영향이 없습니다
inkscape: sodipodi:잉크스케이프의 레이어·안내선 정보
i: x: graph:일러스트레이터가 다시 열 때 쓰는 값
sketch: figma:스케치·피그마의 원본 레이어 이름
주석, XML 선언, DOCTYPE웹에 올리는 SVG 에는 필요 없습니다
줄바꿈과 들여쓰기요소 사이의 공백은 렌더에 영향이 없습니다

좌표 소수점이 진짜 범인일 때가 많다

편집기는 좌표를 39.500000 처럼 소수점 여섯 자리로 적습니다. 화면에서 1픽셀은커녕 1000분의 1픽셀도 안 되는 차이인데, 좌표 하나마다 다섯 글자씩 늘어납니다. path 하나에 좌표가 200개면 그것만 1 KB 입니다.

기본값인 소수점 2자리는 아이콘과 로고에 넉넉합니다. 지도처럼 크게 확대해 보는 그림이라면 3자리로 올리세요. 반대로 뷰박스가 0 0 24 24 인 아이콘은 0~1자리로 내려도 눈에 띄지 않습니다.

건드리지 않는 것

공백이 뜻을 갖는 자리가 두 군데 있습니다. 여기는 원문 그대로 흘려보냅니다.

id 도 지우지 않습니다. <use href="#icon"> 나 CSS 선택자, 자바스크립트가 그 이름으로 도형을 찾고 있을 수 있는데, 이 페이지는 SVG 하나만 보고 있어서 쓰이는지 아닌지 알 방법이 없습니다.

<title> 은 왜 기본으로 남기나

스크린리더가 그 값을 읽어 주기 때문입니다. 장식용 아이콘이라면 지워도 되지만, 뜻을 가진 그림(로고, 상태 아이콘, 도표)에서 지우면 화면을 못 보는 사람에게는 그 자리가 통째로 사라집니다. 그래서 이 항목만 기본이 꺼짐입니다.

압축한 SVG 를 다시 편집할 수 있나요?

그림은 그대로 열립니다. 다만 레이어 이름과 안내선은 사라집니다. 편집기에서 계속 작업할 원본은 따로 두고, 웹에 올릴 파일만 압축하세요.

읽기만 하면 되는 거라면 SVG 정렬로 다시 펼칠 수 있습니다. 들여쓰기는 돌아오지만 지워진 값은 돌아오지 않습니다.

CSS 배경으로 쓰려면 어떻게 하나요?

압축한 다음 SVG → CSS 배경에 넣으세요. Base64 로 바꾸는 것보다 URL 인코딩이 더 작고, 색만 바꾸고 싶을 때 손으로 고칠 수도 있습니다.

gzip 을 쓰면 어차피 줄어들지 않나요?

줄어듭니다. 다만 gzip 은 반복되는 글자를 줄일 뿐, 39.50000039.5 로 바꿔 주지는 못합니다. 둘은 겹치지 않고 각각 듣습니다. 압축한 SVG 를 gzip 으로 내보내는 게 가장 작습니다.

다른 도구 33개