Switching
실무 가이드

이미지를 Base64로 넣어야 할 때와 넣으면 안 되는 때

data URI로 이미지를 HTML·CSS에 직접 넣는 것이 이득인 경우와 손해인 경우를 용량·요청 수·캐시 기준으로 정리했습니다.

2026년 9월 14일

Base64는 이미지를 글자로 바꿔 HTML·CSS 안에 직접 넣는 방식입니다. 파일 요청이 사라지는 대신 용량이 약 33% 늘고 브라우저 캐시를 쓸 수 없게 됩니다. 그래서 수 KB 이하의 작은 아이콘이나 외부 파일을 못 쓰는 곳(이메일 서명, 단일 파일 문서)에는 이득이고, 사진처럼 큰 이미지에는 거의 항상 손해입니다.

`<img src="data:image/png;base64,iVBORw0...">` 같은 코드를 보신 적이 있을 겁니다. 이미지 파일을 따로 두지 않고 그 내용을 글자로 바꿔 문서 안에 통째로 넣은 것입니다. 편리해 보이는데, 아무 데나 쓰면 페이지가 오히려 느려집니다.

무엇과 무엇을 맞바꾸는가

Base64는 바이너리 3바이트를 글자 4개로 표현합니다. 그래서 결과가 원본보다 **약 33% 깁니다.** 이 손해를 감수하고 얻는 것은 '파일을 따로 요청하지 않아도 된다'는 것 하나입니다. 이 거래가 이득인지는 이미지 크기와 개수에 달려 있습니다.

따로 파일로 둘 때Base64로 넣을 때
전송량원본 크기약 1.33배
요청 수이미지마다 1회0회 (문서에 포함)
브라우저 캐시이미지 단위로 재사용불가 — 문서와 함께 매번 내려온다
문서 크기그대로이미지만큼 커진다
교체파일만 바꾸면 끝문서를 고쳐야 한다
요청 하나를 줄이는 대가로 용량·캐시·유지보수를 내준다.

캐시를 잃는 것이 가장 큰 손해다

표에서 실제로 가장 아픈 줄은 캐시입니다. 파일로 두면 브라우저가 한 번 받아 두고 다음 페이지에서 다시 쓰지만, 문서 안에 글자로 박혀 있으면 페이지를 열 때마다 그 덩어리가 함께 내려옵니다. 로고를 Base64로 넣고 페이지가 20개라면, 사용자는 같은 로고를 20번 받는 셈입니다.

CSS에 넣으면 더 미묘해집니다. CSS 파일은 보통 캐시가 잘 되므로 이미지도 함께 캐시되지만, 대신 **CSS를 다 받기 전까지는 페이지가 그려지지 않습니다.** 무거운 이미지를 CSS에 박으면 첫 화면이 늦어집니다.

이득인 경우

  • **수 KB 이하의 작은 아이콘** — 요청 하나를 아끼는 이득이 33% 손해보다 큽니다.
  • **외부 파일을 쓸 수 없는 곳** — 이메일 서명, 한 파일로 배포하는 HTML 문서, 오프라인 리포트.
  • **깜빡임을 없애야 하는 자리** — 배경 패턴처럼 늦게 나타나면 눈에 띄는 아주 작은 이미지.
  • **빌드 결과에 파일을 추가하기 곤란할 때** — 설정 한 줄로 끝나는 임시 자산.

손해인 경우

  • **사진** — 수백 KB가 1.33배로 늘고 캐시도 못 씁니다. 거의 항상 파일이 낫습니다.
  • **여러 페이지에서 반복되는 이미지** — 로고·헤더 배경은 캐시의 이득이 가장 큰 대상입니다.
  • **자주 바뀌는 이미지** — 바꿀 때마다 문서를 고치고 배포해야 합니다.
  • **아이콘이 여러 개** — 그럴 때는 SVG를 직접 넣거나 스프라이트가 더 낫습니다.

작은 아이콘이라면 SVG를 먼저 보라

단순한 아이콘이라면 PNG를 Base64로 넣는 것보다 SVG 코드를 그대로 넣는 편이 대개 짧습니다. SVG는 이미 글자로 된 형식이라 33% 손해가 없고, 색을 CSS로 바꿀 수 있으며, 어떤 해상도에서도 또렷합니다. Base64가 필요한 것은 보통 SVG로 표현할 수 없는 그림일 때입니다.

변환은 브라우저 안에서 끝나므로 이미지가 서버로 올라가지 않습니다. 반대 방향, 즉 받은 data URI 문자열을 다시 이미지 파일로 되돌리는 것도 같은 자리에서 됩니다 — 로그나 API 응답에 박힌 문자열이 무슨 그림인지 확인할 때 쓸 만합니다.

자주 묻는 질문

정확히 얼마나 커지나요?
약 33%입니다. 3바이트를 4글자로 바꾸기 때문에 4/3배가 되고, 여기에 `data:image/png;base64,` 같은 머리말이 조금 더 붙습니다. 100KB 이미지는 대략 133KB 남짓의 문자열이 됩니다.
Base64로 넣으면 검색엔진이 이미지를 인식하나요?
이미지 검색에는 잡히지 않는다고 보는 편이 안전합니다. 주소가 없어 색인할 대상이 없기 때문입니다. 상품 사진처럼 이미지 검색 유입이 의미 있는 이미지는 파일로 두고 alt 를 붙이는 편이 낫습니다.
용량 제한이 있나요?
규격상의 상한은 없지만 현실적인 상한은 있습니다. 문서가 그만큼 커지고, 아주 긴 문자열은 편집기와 빌드 도구를 느리게 만듭니다. 수십 KB를 넘어가면 파일로 두는 쪽을 먼저 검토하세요.
받은 Base64 문자열이 어떤 이미지인지 확인하려면요?
문자열을 붙여 넣어 이미지로 되돌리면 됩니다. `data:image/...` 머리말이 붙어 있어도, 순수한 Base64 본문만 있어도 됩니다. 이 과정도 브라우저 안에서만 처리됩니다.

관련 도구