Base64 인코딩 / 디코딩
텍스트를 Base64로, Base64를 텍스트로. UTF-8을 정확히 처리하고 URL 안전 문자표도 고를 수 있습니다.
출력
위에 붙여넣거나 입력하면 여기에 결과가 표시됩니다.
파일은 내 기기 밖으로 나가지 않습니다
이 도구는 브라우저 안에서만 작동합니다. 붙여넣은 내용은 기기에서 처리되고 서버로 전송되지 않으므로 토큰, 키, 공개 전 문서도 안심하고 사용할 수 있습니다.
사용 예시
‘안녕하세요’가 7JWI64WV7ZWY7IS47JqU가 되는 과정: 한글 Base64 인코딩
API 요청이나 설정 파일에 한글을 넣을 때 Base64로 바꿔 달라는 경우가 많습니다. 모드를 「Base64로 인코딩」에 두고 ‘안녕하세요’를 붙여 넣은 뒤 변환하기를 누릅니다.
- 한글 한 글자는 UTF-8로 3바이트라 다섯 글자는 15바이트가 됩니다.
- Base64는 3바이트를 4글자로 바꾸므로 15바이트는 정확히 20글자, 7JWI64WV7ZWY7IS47JqU이고 끝에 =가 붙지 않습니다.
- 바이트 수가 3의 배수가 아니면 =로 채웁니다. ‘서울시 강남구’는 공백까지 19바이트라 28글자 중 마지막 두 글자가 ==입니다.
- URL 안전을 켜면 +와 /가 -와 _로 바뀌고 끝의 =가 빠집니다. ‘김민수’의 6rmA66+87IiY는 6rmA66-87IiY가 됩니다.
| 원문 | UTF-8 바이트 | Base64 | URL 안전 |
|---|---|---|---|
| Hello | 5 | SGVsbG8= | SGVsbG8 |
| 안녕하세요 | 15 | 7JWI64WV7ZWY7IS47JqU | 7JWI64WV7ZWY7IS47JqU |
| 김민수 | 9 | 6rmA66+87IiY | 6rmA66-87IiY |
| 서울시 강남구 | 19 | 7ISc7Jq47IucIOqwleuCqOq1rA== | 7ISc7Jq47IucIOqwleuCqOq1rA |
| 주문번호 2026-0315 | 22 | 7KO866y467KI7Zi4IDIwMjYtMDMxNQ== | 7KO866y467KI7Zi4IDIwMjYtMDMxNQ |
모드를 「Base64에서 디코딩」으로 바꿔 7JWI64WV7ZWY7IS47JqU를 넣으면 다시 ‘안녕하세요’가 나옵니다. 디코더는 URL 안전 문자표와 = 없는 문자열도 받으므로 6rmA66-87IiY도 ‘김민수’로 돌아옵니다.
사용 방법
- 일반 텍스트를 Base64로 바꾸려면 인코딩을, Base64를 텍스트로 되돌리려면 디코딩을 고르세요.
- 입력을 붙여 넣으세요. 디코딩할 때는 +와 /를 쓰는 표준 문자표와 -와 _를 쓰는 URL 안전 문자표를 모두 받으며, 패딩이 빠져 있어도 처리합니다.
- 결과를 URL이나 JWT, 파일 이름에 넣을 예정이면 URL 안전을 켜세요. 퍼센트 인코딩이 필요 없어집니다.
- 입력하는 대로 결과가 나옵니다. 결과를 복사하세요. 한글과 이모지, 악센트 문자는 UTF-8 바이트로 인코딩되며, btoa 기반 도구가 흔히 틀리는 부분입니다.
자주 묻는 질문
- Base64가 암호화인가요?
- 아니요. Base64는 바이트를 64개의 인쇄 가능한 문자로 표현하는 되돌릴 수 있는 인코딩입니다. 누구나 즉시 디코딩할 수 있습니다. 전송이나 삽입 용도로만 쓰고 비밀을 감추는 데는 절대 쓰지 마세요.
- 한글이나 이모지 같은 비 ASCII 문자는 어떻게 처리하나요?
- 인코딩하기 전에 텍스트를 UTF-8 바이트로 바꾸고, 디코딩한 결과도 UTF-8로 해석합니다. 대부분의 언어와 HTTP 라이브러리가 하는 방식과 같습니다. 자바스크립트의 btoa()는 Latin-1만 받기 때문에 순진하게 만든 도구는 이런 문자에서 오류가 납니다.
- 표준 Base64와 URL 안전 Base64는 무엇이 다른가요?
- 표준 Base64(RFC 4648 4절)는 +와 /를 쓰고 =로 패딩합니다. URL 안전 Base64(5절)는 이를 -와 _로 바꾸고 보통 패딩을 뺍니다. 그래서 URL, 쿠키, JWT에서 이스케이프 없이 쓸 수 있습니다. 이 도구의 디코더는 둘 다 받습니다.
- 인코딩 결과가 원문보다 3분의 1쯤 긴 이유는 무엇인가요?
- Base64는 3바이트를 4글자로 담기 때문에 결과 크기가 입력의 약 4/3에 패딩 문자 최대 2개를 더한 정도가 됩니다. 인쇄 가능한 문자만 쓰기 위해 치르는 비용입니다.
- 디코딩했더니 읽을 수 있는 텍스트가 아니라고 나옵니다.
- 원래 바이트가 UTF-8이 아닐 가능성이 큽니다. 오래된 메일이나 시스템은 한글을 EUC-KR(CP949)로 저장했는데, 이 도구는 디코딩한 바이트를 UTF-8로 읽기 때문에 EUC-KR 한글은 깨진 글자로 보여 주지 않고 UTF-8 텍스트가 아니라고 알려 줍니다. EUC-KR로 저장된 ‘안녕하세요’의 Base64인 vsiz58fPvLy/5A==가 그런 예입니다.
- 메일 원문의 =?UTF-8?B?...?= 부분도 풀 수 있나요?
- 네. B?와 ?= 사이의 문자열만 붙여 넣고 디코딩하세요. =?UTF-8?B?7JWI64WV?=라면 7JWI64WV를 넣어 ‘안녕’을 얻습니다. 앞부분에 UTF-8 대신 EUC-KR이라고 적혀 있으면 위의 이유로 풀리지 않고 UTF-8 텍스트가 아니라는 안내가 나옵니다.
- 데이터가 서버로 전송되나요?
- 아니요. 인코딩과 디코딩 모두 브라우저 안에서 실행됩니다. API 키나 접속 문자열, 개인적인 글을 변환해도 기기 밖으로 나가지 않습니다.