이미지 Base64 변환 (데이터 URL 생성)

이미지를 data URL(Base64)로 바꾸고 CSS·HTML에 바로 넣을 수 있는 코드를 만듭니다.

PNG·JPEG·GIF·WebP·SVG·ICO·BMP를 지원합니다. 이 상자에 끌어다 놓거나 Ctrl+V로 붙여넣어도 됩니다.

파일이 서버로 올라가지 않습니다. 변환은 이 브라우저 안에서만 이루어지고, 고른 이미지는 어디에도 전송되지 않습니다.

거꾸로: data URL·Base64를 이미지로

데이터 URL이란

데이터 URL(data URL)은 이미지 파일을 따로 두지 않고 주소 자리에 파일 내용을 그대로 적어 넣는 방식입니다.data:image/png;base64,iVBORw0KGgo... 처럼 data: 다음에 형식 표기(MIME), ;base64 표시, 쉼표, 그리고 파일 내용을 Base64로 바꾼 문자열이 차례로 옵니다. 이미지는 0~255 값을 가진 바이트 덩어리라서 주소나 HTML 속성에 그대로 넣을 수 없는데, Base64는 그 바이트를 영문·숫자와+ / = 64가지 글자로만 다시 적는 표기법이라 어디에 붙여 넣어도 깨지지 않습니다. 그래서 이미지 한 장을 HTML·CSS·JSON 안에 문자열로 담아 둘 수 있고, 브라우저는 그 문자열만 보고 이미지를 그려 줍니다. 파일을 따로 요청하지 않으므로 네트워크 요청 수가 줄고, HTML 파일 하나만 있으면 인터넷 없이도 그림이 보이는 문서를 만들 수 있습니다.

왜 약 33% 커지는가

Base64는 3바이트를 4글자로 바꿉니다. 3바이트는 24비트인데 이것을 6비트씩 네 조각으로 잘라 각각을 글자 하나에 대응시키기 때문입니다. 그래서 변환 후 길이는 원본의 4/3배, 즉 약 33.3% 늘어납니다. 3의 배수가 아니면 남는 자리를 = 로 채우므로 아주 작은 파일은 조금 더 늘어납니다. 여기에 data:image/png;base64, 같은 머리말 길이가 더해집니다. 중요한 점은 그림 품질은 전혀 변하지 않는다는 것입니다. Base64는 압축이나 화질 조정이 아니라 같은 데이터를 다르게 적는 표기 방식일 뿐이어서, 되돌리면 원본과 한 바이트도 다르지 않습니다. 반대로 말하면 용량을 줄이려고 data URL로 바꾸는 것은 거꾸로 가는 일입니다. 용량이 문제라면 이미지 용량 줄이기 도구를 먼저 쓰세요.

언제 쓰고 언제 쓰지 말아야 하는가

크기가 얼마나 늘어나는지 미리 보기

예시원본Base64data URL 전체증가율판단
16×16 favicon (PNG)0.5KB0.6KB0.6KB+33.3%권장
작은 버튼 아이콘2KB2.7KB2.7KB+33.4%권장
로고 이미지12KB16KB16KB+33.3%상황에 따라
블로그 본문 사진300KB400KB400KB+33.3%권장하지 않음
휴대폰 사진 한 장3,072KB4,096KB4,096KB+33.3%권장하지 않음

Base64 한 글자는 1바이트이므로 글자 수가 곧 늘어난 용량입니다. 위 표는 PNG 기준이며, 파일을 올리면 실제 값으로 다시 계산해 보여 줍니다.

형식은 확장자가 아니라 내용으로 판별합니다

형식data URL 표기머리 바이트(매직 넘버)
PNGimage/png89 50 4E 47 0D 0A 1A 0A
JPEGimage/jpegFF D8 FF
GIFimage/gif47 49 46 38 37 61 / 39 61 ("GIF87a"·"GIF89a")
WebPimage/webp52 49 46 46 … 57 45 42 50 ("RIFF"…"WEBP")
BMPimage/bmp42 4D ("BM") + DIB 헤더 크기
ICOimage/x-icon00 00 01 00 + 이미지 개수
SVGimage/svg+xml없음 (XML 텍스트에서 <svg 태그를 찾는다)

확장자는 언제든 바꿔 쓸 수 있어 믿을 수 없습니다. 그래서 이 도구는 파일 앞부분의 고정된 바이트를 보고 형식을 정합니다. SVG만은 예외로, XML 텍스트라 고정된 머리 바이트가 없어 앞부분을 글자로 읽어 <svg 여는 태그가 있는지 확인합니다. 지원하지 않는 형식(예: HEIC·TIFF·PDF)이나 10MB를 넘는 파일, 망가진 data URL은 이유를 적어 오류로 알려 줍니다. 되돌리기 칸에 이미지가 아닌 Base64를 넣으면 빈 그림을 보여 주는 대신 이미지가 아니라고 분명히 알려 줍니다.

자주 묻는 질문

data URL로 바꿔 넣었는데 이미지가 화면에 보이지 않습니다.

가장 흔한 원인은 문자열이 잘린 것입니다. 편집기가 아주 긴 한 줄을 줄바꿈하면 Base64 사이에 줄바꿈과 공백이 들어가 깨지는데, HTML의 src 속성과 CSS의 url() 안에서는 줄바꿈이 허용되지 않습니다. 이 도구의 복사 버튼은 줄바꿈 없는 한 줄로 복사하므로 그대로 붙여 넣으면 됩니다. 그다음으로 흔한 원인은 data: 뒤의 형식 표기가 실제 파일과 다른 경우입니다. 아래 되돌리기 칸에 붙여 넣어 보면 실제 형식과 적힌 형식이 다를 때 알려 줍니다.

SVG는 Base64로 바꾸지 않고 그대로 넣는 편이 좋다고 하는데 왜 그런가요?

SVG는 그림이 아니라 텍스트(XML)입니다. Base64로 바꾸면 무조건 33% 커지지만, 따옴표와 괄호 같은 몇 글자만 퍼센트 인코딩해서 data:image/svg+xml,<svg …> 형태로 넣으면 원본과 거의 같은 길이로 끝나고 사람이 읽을 수도 있습니다. 게다가 텍스트는 서버 압축(gzip·brotli)이 잘 듣는데 Base64는 압축률이 떨어집니다. 이 도구는 SVG를 붙여 넣으면 두 형태를 모두 받아 주고, CSS 코드 조각을 만들 때 따옴표를 %22로 바꿔 안전하게 넣어 줍니다.

파일 이름은 .png인데 JPEG로 변환됐다고 나옵니다.

이 도구는 파일 이름의 확장자를 보지 않고 파일 앞부분의 실제 바이트(매직 넘버)로 형식을 판별합니다. 사진을 이름만 바꿔 저장하거나, 편집 프로그램이 다른 형식으로 저장한 경우 확장자와 내용이 어긋납니다. data URL의 형식 표기가 실제 내용과 다르면 브라우저에 따라 그림이 아예 표시되지 않으므로, 실제 내용에 맞는 표기를 쓰는 것이 안전합니다.

HTML 이메일이나 뉴스레터 서명에 data URL 이미지를 써도 되나요?

권하지 않습니다. 지메일·아웃룩을 포함한 상당수 메일 클라이언트는 본문 안에 들어 있는 data URL 이미지를 보안상 차단하거나 빈칸으로 표시합니다. 메일에 넣을 이미지는 첨부(cid: 참조)나 외부 주소를 쓰는 편이 안전합니다. data URL이 잘 맞는 곳은 웹페이지의 CSS 아이콘, 오프라인으로 열어야 하는 단일 HTML 파일, 코드 안에 함께 두어야 하는 작은 이미지입니다.

favicon이나 og:image에도 data URL을 쓸 수 있나요?

favicon은 link 태그의 href에 data URL을 넣으면 대부분의 최신 브라우저에서 동작합니다. 다만 오래된 브라우저와 일부 RSS 리더는 무시하므로 파일도 함께 두는 편이 안전합니다. 반대로 og:image는 반드시 http로 시작하는 절대 주소여야 합니다. 페이스북·카카오톡 같은 공유 미리보기는 사이트를 긁어 갈 때 이미지를 따로 내려받기 때문에 data URL을 넣으면 미리보기 이미지가 나오지 않습니다.

이 도구가 도움이 되었다면 공유해 주세요

계산 근거

이 계산기가 쓰는 세율·요율·기준의 출처입니다. 숫자가 맞는지 직접 확인해 보세요.

계산 결과가 이상한가요? 알려 주세요.

계산 결과는 참고용이며 법적 효력이 없습니다.

다른 도구