이미지를 코드 안에 — Base64 데이터 URI 쓰는 법
코드를 보다가 data:image/png;base64,iVBORw0KGgo… 같은 끝없는 문자열을 만난 적이 있다면, 그게 바로 이미지를 글자로 바꿔 코드에 심은 것입니다. 파일 없이 그림을 넣는 이 방식의 구조와 쓸 곳·피할 곳을 정리합니다.
데이터 URI의 구조
데이터 URI는 "주소 대신 내용을 담은 주소"입니다.
data:image/png;base64,iVBORw0KGgoAAAANS...
↑스킴 ↑MIME 타입 ↑인코딩 ↑Base64로 글자화된 이미지 데이터
- 이미지의 바이너리를 Base64(64개 문자만 쓰는 표기법)로 글자화한 것이라, 코드·텍스트 어디든 넣을 수 있습니다.
- HTML에서는
<img src="data:...">, CSS에서는background-image: url(data:...)로 그대로 사용합니다.
어울리는 경우
- 작은 아이콘·로고 — 수 KB짜리 이미지를 별도 요청 없이 표시. 요청 수가 줄어 빠릅니다.
- 단일 파일 배포 — HTML 하나로 완결돼야 하는 보고서·오프라인 문서. 이미지가 코드 안에 있으니 파일이 흩어질 일이 없습니다.
- 이메일 서명·템플릿 — 외부 이미지가 차단되는 메일 환경에서 유용합니다(일부 클라이언트는 data URI도 제한하니 테스트 필요).
- CSS만으로 끝내고 싶은 작은 장식 — 패턴·불릿 같은 마이크로 그래픽.
치러야 할 비용 — 33%와 캐시
- 용량 +33% — Base64는 같은 데이터를 더 많은 글자로 표현하므로 원본보다 약 1/3 커집니다.
- 캐시를 잃음 — 일반 이미지 파일은 한 번 받으면 브라우저가 기억하지만, 코드에 박힌 이미지는 페이지를 받을 때마다 함께 내려옵니다.
- 결론: 작고 한 몸이어야 하는 것엔 데이터 URI, 크고 여러 곳에서 재사용되는 것엔 일반 파일.
만들기·되돌리기 단계
- 이미지를 변환 도구에 올리면 Base64 데이터 URI가 생성됩니다.
- 통째로 복사해
img src나 CSSurl()에 붙여 넣습니다. - 반대로,
data:로 시작하는 문자열을 붙여 넣으면 원본 이미지를 미리 보고 파일로 내려받을 수 있습니다.
이미지 ↔ Base64인코딩·디코딩 양방향 — 브라우저 안에서만
변환하기 →
자주 묻는 질문
Q. 데이터 URI가 정확히 뭔가요?
파일 주소 대신 파일 내용 자체를 글자로 담은 주소입니다. 이미지의 바이너리 데이터를 Base64로 글자화해서 data:image/png;base64,iVBORw0… 형태로 만들면, 브라우저는 이 긴 문자열을 주소처럼 읽어 이미지를 그려 냅니다. 외부 파일 요청 없이 HTML·CSS 코드 안에 그림이 통째로 들어가는 셈입니다.
Q. 언제 데이터 URI를 쓰고 언제 일반 파일을 쓰나요?
작고 한 몸이어야 하는 것에는 데이터 URI, 크고 재사용되는 것에는 일반 파일이 맞습니다. 수 KB짜리 아이콘·로고, HTML 파일 하나로 배포해야 하는 보고서·이메일 서명 같은 경우가 전자입니다. 반면 큰 사진은 Base64로 33%쯤 커지는 데다 브라우저 캐시의 이점도 잃으므로, 여러 페이지에서 반복 사용되는 큰 이미지는 일반 파일이 유리합니다.
Q. 받은 Base64 문자열을 다시 이미지로 볼 수도 있나요?
네, 디코딩하면 됩니다. 이미지 ↔ Base64 변환 도구에 data:로 시작하는 문자열을 붙여 넣으면 원래 이미지를 미리보기로 확인하고 파일로 내려받을 수 있습니다. 코드 속에 박혀 있는 이미지가 무엇인지 확인하거나, API 응답으로 받은 Base64 이미지를 꺼내 볼 때 유용합니다.
함께 보면 좋은 가이드