원문을 왼쪽 plain.txt에 입력하고 Encode →를 누르면 오른쪽 encoded.b64에 Base64 문자열이 나옵니다.
반대로 오른쪽에 Base64를 붙여넣고 ← Decode를 누르면 왼쪽에 원래 텍스트가 복원됩니다.
URL-safe를 체크한 채 인코딩하면 URL·파일명에 바로 넣을 수 있는 형태로 출력됩니다.
Swap은 두 칸의 내용을 맞바꾸고, Copy output은 마지막으로 결과가 나온 칸을 복사합니다.
Base64란?
Base64는 바이너리 데이터를 A–Z, a–z, 0–9, +, / 64개 문자만으로 표현하는 인코딩입니다. 이메일 첨부, data URL 이미지, HTTP Basic 인증 헤더, JWT처럼 "텍스트만 지나갈 수 있는 통로"에 바이트를 실어 보낼 때 씁니다.
원리는 간단합니다. 3바이트(24비트)를 6비트씩 4조각으로 나누고, 각 조각(0~63)을 문자표의 한 글자로 바꿉니다. 그래서 결과는 원본보다 약 33% 길어집니다. 마지막에 3바이트가 안 채워지면 =를 1~2개 붙여 길이를 4의 배수로 맞춥니다. 예: Man → TWFu, Ma → TWE=.
한글이 깨지지 않는 이유
이 도구는 텍스트를 먼저 UTF-8 바이트로 바꾼 뒤 Base64로 인코딩합니다. 한글 한 글자는 UTF-8로 3바이트, 이모지는 보통 4바이트이므로 안녕(6바이트)은 7JWI64WV(8글자)가 됩니다. 디코딩할 때도 UTF-8로 엄격하게 해석하며, 결과가 올바른 UTF-8 텍스트가 아니면 오류를 표시합니다.
URL-safe Base64
구분
62번째
63번째
패딩
표준 Base64
+
/
= 붙임
URL-safe (Base64URL)
-
_
생략
디코딩은 체크 여부와 상관없이 두 형식을 모두 받아들입니다. -, _를 자동으로 되돌리고 빠진 =도 채워 주며, 중간의 공백·줄바꿈은 무시합니다.
Base64는 암호화가 아닙니다. 누구나 즉시 디코딩할 수 있으니 비밀번호나 개인정보를 "가리는" 용도로 쓰면 안 됩니다. 또 이 도구는 텍스트 전용이라 이미지·PDF 같은 바이너리를 디코딩하면 UTF-8 오류가 납니다.
표준 기준 — RFC 4648
Base64의 문자표와 패딩 규칙은 IETF RFC 4648에 정해져 있어요. 4장이 표준 Base64, 5장이 URL·파일명에 안전한 base64url이에요. 64개 문자에 0~63 값이 이렇게 대응돼요.
값
문자
값
문자
0~25
A~Z
52~61
0~9
26~51
a~z
62 / 63
+/ (url-safe는 -_)
광고
길이 미리 계산표
인코딩 결과 길이는 4 × ⌈바이트 수 ÷ 3⌉이에요. 한글은 UTF-8로 글자당 3바이트라 한글 1글자가 정확히 Base64 4글자가 돼요.
원문
UTF-8 바이트
Base64
URL-safe
a
1
YQ==
YQ
ab
2
YWI=
YWI
abc
3
YWJj
YWJj
한글
6
7ZWc6riA
같음
안녕하세요
15
7JWI64WV7ZWY7IS47JqU (20자)
같음
😀
4
8J+YgA==
8J-YgA
1MB 파일을 Base64로 바꾸면 약 1.33MB가 돼요. 이메일(MIME)은 여기에 76자마다 줄바꿈까지 넣어 조금 더 커져요. 이 도구는 디코딩할 때 줄바꿈을 무시하니 메일 원문에서 복사한 값도 그대로 넣으면 돼요.
예시 3가지
HTTP Basic 인증 헤더 — user:pass를 인코딩하면 dXNlcjpwYXNz이고, 헤더는 Authorization: Basic dXNlcjpwYXNz예요. 거꾸로 디코딩하면 비밀번호가 그대로 보이니 Basic 인증은 반드시 HTTPS와 함께 써야 해요.
+ / 가 들어가는 값 — <<???>>는 표준으로 PDw/Pz8+Pg==예요. 이걸 URL 쿼리에 그대로 넣으면 +가 공백으로, /가 경로로 읽힐 수 있어요. URL-safe를 켜면 PDw_Pz8-Pg가 돼 그대로 넣을 수 있어요.
EUC-KR로 만든 값 — 옛 시스템이 CP949로 인코딩한 안녕은 vsiz5w==(바이트 BE C8 B3 E7)예요. 이 도구에 넣으면 올바른 UTF-8이 아니라서 "not UTF-8 text" 오류가 나요. 같은 글자의 UTF-8 값은 7JWI64WV예요.