Base64 인코더·디코더
텍스트를 Base64로 인코딩하거나 디코딩합니다. UTF-8 한글을 정확히 처리하며, 이미지 파일을 Data URL로 변환할 수도 있는 무료 Base64 도구.
파일 → Base64 (Data URL)
Base64란
바이너리 데이터를 A–Z, a–z, 0–9, +, / 64개 문자로 표현하는 방식입니다. 이미지를 HTML에 직접 넣거나(Data URL), 이메일 첨부, JWT 토큰, API 인증 헤더 등에 널리 쓰입니다. 암호화가 아니라 인코딩이므로 누구나 되돌릴 수 있습니다 — 비밀번호를 숨기는 용도로 쓰면 안 됩니다.
한글이 깨지지 않는 이유
브라우저 기본 btoa()는 라틴 문자만 처리해서 한글을 넣으면 오류가 납니다. 이 도구는 먼저 UTF-8 바이트로 변환한 뒤 인코딩하므로 한글·이모지도 정확히 처리됩니다. 다른 도구에서 인코딩한 한글이 깨져 보인다면 UTF-8 처리를 안 한 것입니다.
URL-safe 옵션
+와 /를 −와 _로 바꾸고 끝의 =를 제거한 변형입니다. URL이나 파일명에 넣을 때 씁니다(JWT가 이 방식).
Base64는 어떻게 동작하나
임의의 데이터를 영문 대소문자·숫자와 + / 를 합친 64가지 글자로만 표현하는 방식입니다. 3바이트(24비트)를 6비트씩 네 조각으로 나눠 각각 한 글자에 대응시킵니다. 그래서 용량이 약 33% 늘어납니다. 3KB 이미지를 Base64로 바꾸면 4KB가 됩니다.
끝에 붙는 = 는 패딩입니다. 원본 길이가 3의 배수가 아닐 때 빈자리를 채우는 표시라 1~2개까지만 나옵니다.
암호화가 아닙니다
가장 흔한 오해입니다. Base64는 누구나 즉시 되돌릴 수 있는 인코딩이지 암호가 아닙니다. 비밀번호나 개인정보를 Base64로 "감춰서" 저장하는 것은 보안상 아무 의미가 없습니다. 실제 보호가 필요하면 암호화(AES 등)나 단방향 해시(bcrypt, Argon2)를 써야 합니다.
그럼에도 널리 쓰이는 이유는 텍스트만 통과하는 통로로 이진 데이터를 안전하게 나르기 위해서입니다. 이메일 첨부파일, JSON 안의 이미지, HTTP 헤더가 대표적입니다.
자주 만나는 곳
- data URI —
data:image/png;base64,iVBOR...형태로 이미지를 HTML·CSS에 직접 박아 넣습니다. 요청 횟수를 줄일 수 있지만 용량이 늘어 작은 아이콘에만 적합합니다. - Basic 인증 —
Authorization: Basic dXNlcjpwYXNz는user:pass를 Base64한 것뿐입니다. 그래서 HTTPS 없이 쓰면 계정이 그대로 노출됩니다. - JWT 토큰 — 점으로 구분된 세 덩어리 중 앞의 둘이 Base64입니다. 디코딩하면 내용이 그대로 보이므로 토큰 본문에 민감정보를 넣으면 안 됩니다.
- 이메일 첨부 — 메일 프로토콜이 텍스트 기반이라 모든 첨부파일이 Base64로 변환돼 전송됩니다. 첨부 용량 제한이 실제 파일보다 빡빡하게 느껴지는 이유입니다.
Base64URL 변형
URL에서는 +와 /가 다른 뜻을 가지므로, 웹 토큰에서는 이를 -와 _로 바꾸고 패딩 =를 떼어낸 Base64URL을 씁니다. 일반 디코더에 넣으면 오류가 날 수 있는데, 기호를 되돌려 주면 정상적으로 해독됩니다. 주소에 값을 실어 보내야 한다면 URL 인코딩을 함께 쓰세요.
한글도 문제없습니다
한글은 UTF-8로 먼저 바이트로 바뀐 뒤 인코딩되므로 정확히 복원됩니다. 입력한 내용은 브라우저 안에서만 처리되며 서버로 전송되지 않습니다.