유틸리티

Base64 인코딩이란? 텍스트, 이미지 변환 원리와 사용법

외부 API에서 받은 JSON 응답 안에 알 수 없는 긴 문자열이 들어 있다. 영문 대소문자와 숫자, 슬래시, 플러스 기호로만 이루어져 있고 끝에 등호(=)가 하나 붙어 있다. 이게 Base64다.

Base64가 뭔가

Base64는 바이너리 데이터를 텍스트로 표현하는 인코딩 방식이다. 이미지, 파일, 바이트 배열처럼 텍스트가 아닌 데이터를 이메일, JSON, HTML 같은 텍스트 기반 포맷에 실어 보내야 할 때 쓴다.

64개의 문자(A-Z, a-z, 0-9, +, /)만 사용하기 때문에 어떤 시스템에서든 깨지지 않고 전달된다. 대신 원본보다 용량이 약 33% 증가한다는 단점이 있다.

어디에 쓰이나

사용처활용 방식
이메일 첨부파일MIME 인코딩으로 바이너리 파일을 텍스트로 변환해 전송
HTML/CSS 인라인 이미지data:image/png;base64,... 형태로 이미지를 코드에 직접 삽입
API 인증HTTP Basic Auth에서 아이디:비밀번호를 Base64로 인코딩해 헤더에 포함
JWT 토큰헤더와 페이로드가 Base64URL로 인코딩되어 있음
데이터 저장바이너리를 텍스트 DB 필드에 저장할 때

텍스트 Base64 변환

"Hello, 안녕하세요"를 Base64로 인코딩하면 SGVsbG8sIOyViOuFle2VmOyEuOyalA==가 된다. 역으로 이 문자열을 디코딩하면 원래 텍스트가 그대로 복원된다.

주의 Base64는 암호화가 아니다. 누구나 디코딩할 수 있으므로 비밀번호나 개인정보를 Base64로 '숨기는' 것은 보안에 전혀 도움이 되지 않는다.

이미지를 Data URL로 변환하기

작은 아이콘이나 로고를 HTML에 직접 넣고 싶을 때 Data URL이 유용하다. 이미지를 Base64로 변환하면 별도 파일 요청 없이 코드 안에 이미지가 들어간다.

<img src="data:image/png;base64,iVBORw0KGgo..." alt="로고">

HTTP 요청 수가 줄어들어 소규모 이미지에서는 로딩 속도가 빨라진다. 다만 이미지가 크면 HTML 파일 자체가 무거워지니, 보통 10KB 이하 파일에만 쓰는 게 좋다. Base64 변환기의 이미지 탭에 파일을 끌어다 놓으면 Data URL이 바로 생성되고, 파일 크기와 문자 수까지 표시되니 기준 초과 여부를 판단하기 쉽다.

Base64 vs Base64URL

표준 Base64에는 +/가 포함되는데, 이 문자들은 URL에서 특별한 의미를 가진다. 그래서 URL에서 안전하게 쓸 수 있도록 +-로, /_로 바꾼 것이 Base64URL이다. JWT 토큰이 대표적인 Base64URL 사용 사례다.

자주 묻는 질문

Base64 인코딩하면 용량이 얼마나 늘어나나요?

원본 대비 약 33% 증가한다. 3바이트를 4개 문자로 표현하기 때문이다. 1MB 파일이면 약 1.33MB가 된다.

큰 이미지도 Base64로 변환해서 쓸 수 있나요?

기술적으로는 가능하지만, 실용적이지 않다. Base64로 인코딩하면 용량이 33% 늘어나고, HTML 파일이 무거워져 오히려 로딩이 느려진다. 아이콘, 작은 UI 요소 정도에만 쓰는 게 적절하다.

Base64와 암호화의 차이는 뭔가요?

Base64는 데이터 표현 방식일 뿐 보안 기능이 없다. 키 없이 누구나 원본으로 되돌릴 수 있다. 데이터를 보호하려면 AES, RSA 같은 암호화 알고리즘을 별도로 적용해야 한다.

Base64는 웹 개발에서 매일 마주치면서도 정확히 뭔지 설명하기 어려운 개념 중 하나다. 원리를 한 번 이해해두면 API 응답 해석부터 인라인 이미지 삽입까지, 필요한 순간에 바로 써먹을 수 있다.