Base64란 무엇인가요?

Base64는 이미지를 이루는 바이트 같은 이진 데이터를 순수한 텍스트 문자열로 바꾸는 인코딩 방식입니다. 대문자, 소문자, 숫자, +, /까지 서로 다른 64개의 문자만으로 어떤 데이터든 표현한다고 해서 붙은 이름입니다.

실제로는 어떤 이미지 파일이든 아래처럼 긴 텍스트 문자열로 바꿀 수 있다는 뜻입니다.

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA AAAFCAYAAACNbyblAAAAHElEQVQI12P4 BCVMAAAAJRQAAAAElFTkSuQmCC

이 형식을 Data URI (또는 data URL)라고 부릅니다. 외부 파일을 가리키는 대신 URL 자체가 텍스트로 인코딩된 이미지 내용을 담고 있습니다. 브라우저는 이 문자열을 읽어 추가 HTTP 요청 없이 곧바로 이미지를 그립니다.

Data URI의 구조

이미지 Data URI는 모두 같은 형태를 따릅니다.

data:[tipo MIME];base64,[dados codificados]

각 구성 요소는 다음과 같습니다.

여기서 Base64 인코딩은 데이터 크기를 약 33% 늘린다는 점을 기억해야 합니다. 3KB 이미지는 약 4KB 문자열이 됩니다. 같은 바이트를 표현하는 데 더 많은 문자가 필요해서 생기는 비용입니다.

HTML에서 Base64 쓰는 법

HTML에서 Base64 이미지를 바로 표시하려면 <img> 태그의 src 속성에 Data URI를 넣기만 하면 됩니다.

<img src="data:image/png;base64,iVBORw0KGgo..." alt="아이콘">

브라우저는 이 요소를 일반 이미지와 똑같이 다룹니다. CSS를 적용하고 너비와 높이를 지정할 수 있으며, <img> 태그를 쓸 수 있는 곳이라면 어디에나 넣을 수 있습니다.

CSS에서 Base64 쓰는 법

CSS에서는 주로 배경 이미지 속성에 Data URI를 씁니다.

.icone { background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucy..."); width: 24px; height: 24px; background-size: contain; background-repeat: no-repeat; }

이 방법은 특히 CSS로 색을 동적으로 바꿔야 하는 작은 SVG 아이콘 이나, 라이브러리에서 재사용하는 컴포넌트의 배경 이미지에 자주 쓰입니다.

💡 SVG 팁: SVG 파일은 Base64로 넣을 수도 있고, 인코딩 없이 HTML에 인라인 SVG로 바로 넣을 수도 있습니다. 인라인 SVG가 읽기 쉽고 CSS·자바스크립트로 다루기도 편한 반면, SVG가 외부 CSS 파일 안에 있다면 Base64 쪽이 낫습니다.

Base64를 쓸 때와 피할 때

Base64와 외부 파일 중 무엇을 고를지는 대체로 이미지 크기와 쓰임새로 갈립니다. 아래 표에 흔한 상황을 정리했습니다.

상황 권장 이유
작은 아이콘·스프라이트 (2KB 미만) ✅ Base64 적합 체감될 만한 용량 증가 없이 HTTP 요청을 줄임
CSS에 넣는 파비콘 ✅ Base64 적합 간편하고 외부 파일에 기대지 않음
플레이스홀더와 로딩 스켈레톤 ✅ Base64 적합 HTML과 함께 즉시 표시돼 깜빡임이 없음
HTML 이메일 ✅ Base64 적합 많은 메일 클라이언트가 외부 이미지를 차단함
본문 이미지 (사진, 배너) ❌ 피할 것 HTML이 무거워지고 브라우저 캐시를 못 씀
5KB가 넘는 이미지 ❌ 피할 것 33% 늘어나는 용량이 로딩을 갉아먹음
여러 페이지에서 재사용하는 이미지 ❌ 피할 것 외부 파일은 캐시되지만 Base64는 페이지마다 다시 내려받음

이미지에 Base64를 쓸 때의 장점

맞는 자리에 쓰면 Base64에는 분명한 이점이 있습니다.

단점과 한계

Base64에는 신중히 따져 볼 비용도 따라옵니다.

⚠️ 실무 기준: Base64는 2KB 미만 이미지에만 쓰세요. 그 밖의 경우에는 최적화한 외부 파일, 특히 WebP나 AVIF 형식이 사이트 성능에 가장 유리합니다.

Base64와 사이트 성능(PageSpeed)

Base64가 성능에 미치는 영향은 무엇을 인코딩하느냐로 갈립니다. 작은 아이콘이라면 HTTP 요청이 하나 사라지면서 체감 Time to First Byte 가 좋아지고 필요한 병렬 연결 수도 줄어듭니다. 이는 Core Web Vitals 지표, 특히 페이지의 주요 요소가 내장 아이콘일 때 LCP(Largest Contentful Paint)에 긍정적으로 반영될 수 있습니다.

반대로 큰 이미지를 Base64로 넣으면 HTML 문서 자체가 무거워져 렌더링 시작이 늦어집니다. 구글 PageSpeed Insights도 지나치게 무거운 HTML에는 점수를 깎는 편입니다. 사진과 배너는 언제나 최적화한 외부 파일이 정답입니다.

웹용 이미지를 최적화해야 한다면 우선 압축하고 가장 효율적인 형식으로 바꾸는 것이 시작입니다. ImageTools의 압축 도구가 파일을 어떤 서버로도 보내지 않고 브라우저 안에서 바로 처리해 줍니다.

이미지를 Base64로 변환하는 방법

이미지에서 Base64 문자열을 얻는 방법은 여러 가지입니다.

지금 이미지를 Base64로 변환하기

이미지를 올리면 HTML이나 CSS에 바로 넣을 수 있는 완성된 Data URI가 나옵니다. 처리는 전부 브라우저 안에서 이루어집니다.

Base64 도구 열기 →

자주 묻는 질문

이미지의 Base64란 무엇인가요?

Base64는 이미지 같은 이진 데이터를 ASCII 텍스트로 바꾸는 방식입니다. 이미지 파일을 따로 불러오는 대신 내용을 긴 문자열로 변환해 HTML이나 CSS에 직접 넣고, 그렇게 Data URI가 만들어집니다.

이미지를 Base64로 바꾸면 사이트 성능이 나빠지나요?

쓰기 나름입니다. 아이콘, 파비콘, 플레이스홀더처럼 작은 이미지라면 HTTP 요청이 하나 줄어 오히려 빨라집니다. 큰 이미지는 페이지를 무겁게 만들고 브라우저 캐시도 못 쓰게 해서 성능이 떨어집니다.

Base64는 몇 KB까지 쓰는 것이 좋나요?

2KB 미만 이미지에만 쓰는 것이 실무 기준입니다. 그보다 크면 인코딩으로 늘어나는 용량(약 33%)과 캐시를 못 쓰는 손해 때문에 외부 파일이 더 효율적입니다.

Base64는 모든 브라우저에서 동작하나요?

동작합니다. Base64를 쓴 Data URI 형식은 크롬, 파이어폭스, 사파리, 엣지와 각 모바일 버전을 포함해 요즘 브라우저라면 모두 지원합니다. IE6처럼 아주 오래된 브라우저는 지원하지 않지만 지금은 신경 쓸 일이 아닙니다.

온라인으로 이미지를 Base64로 변환하려면 어떻게 하나요?

ImageTools의 이미지를 Base64로 도구를 쓰시면 됩니다. 이미지를 올리기만 하면 Base64 문자열과 HTML·CSS에 바로 붙여 넣을 Data URI 코드가 자동으로 만들어집니다.