이게 뭔가요?
Base64는 이진 데이터나 텍스트를 알파벳 대소문자·숫자·+·/ 64개 문자로만 표현하는 인코딩입니다. 이 도구는 텍스트 → Base64, Base64 → 텍스트, 그리고 파일 → Base64(data URI) 세 가지를 합니다. 텍스트는 UTF-8 바이트로 바꾼 뒤 인코딩하므로 한글도 정확히 오갑니다. 결과는 원본보다 약 33% 길어지며, 바이트 3개가 문자 4개로 바뀌고 남는 자리는 =로 채웁니다.
인코딩 예제
인코딩 탭, 텍스트 소스를 선택하고 왼쪽에 입력하면 오른쪽에 바로 나옵니다.
| 입력 | 출력 | 비고 |
|---|---|---|
Hello, World! |
SGVsbG8sIFdvcmxkIQ== |
13바이트 → 20자, 패딩 2개 |
Hello |
SGVsbG8= |
5바이트 → 8자, 패딩 1개 |
안녕하세요 |
7JWI64WV7ZWY7IS47JqU |
UTF-8 15바이트 → 20자, 패딩 없음 |
Aladdin:open sesame |
QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
HTTP Basic 인증 헤더 값 (RFC 7617 예시) |
{"alg":"HS256","typ":"JWT"} |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 |
JWT 헤더 조각 |
출력 길이는 4 × ceil(바이트 수 ÷ 3)입니다. 한글은 글자당 3바이트이므로 글자 수의 4배 길이가 됩니다. 긴 결과도 줄바꿈 없이 한 줄로 나옵니다(이메일 MIME처럼 76자마다 줄을 바꾸는 형식은 아닙니다).
디코딩 예제
디코딩 탭에서 Base64를 붙여넣으면 평문이 나옵니다.
| 입력 | 출력 | 비고 |
|---|---|---|
dXNlcjpwYXNz |
user:pass |
Basic 인증에서 아이디·비밀번호가 그대로 드러남 |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 |
{"alg":"HS256","typ":"JWT"} |
JWT 첫 조각 |
SGVs + 줄바꿈 + bG8= |
Hello |
줄바꿈·공백은 전부 제거하고 디코딩 |
SGVsbG8 |
Hello |
패딩 =이 빠져도 디코딩됨 |
복사 과정에서 끼어든 개행이나 공백은 도구가 알아서 지우므로, 로그에서 여러 줄로 잘린 Base64도 그대로 붙여넣으면 됩니다.
디코딩이 실패하는 경우
| 입력 | 결과 | 해결 |
|---|---|---|
eyJ… 안에 - 또는 _가 있음 |
올바른 Base64 문자열이 아니에요 |
base64url입니다. -→+, _→/로 바꾼 뒤 넣으세요 |
data:image/png;base64,iVBOR… |
오류 | : ; ,는 Base64 문자가 아닙니다. 쉼표 뒤부터만 붙여넣으세요 |
aaa.bbb.ccc (JWT 전체) |
오류 | 점으로 나눠 조각마다 따로 디코딩 |
| 길이를 4로 나눈 나머지가 1 | 오류 | 끝이 잘려 나간 문자열. 원본을 다시 복사 |
| 이미지·PDF 등 이진 파일의 Base64 | 오류 없음, �PNG… 같은 깨진 글자 |
이 도구는 결과를 UTF-8 텍스트로만 해석합니다. 파일로 되돌리는 기능은 없습니다 |
마지막 줄이 중요합니다. 디코딩한 바이트가 올바른 UTF-8이 아니어도 오류를 내지 않고 깨진 문자(�)로 바꿔 보여 줍니다. 결과에 �가 섞여 있으면 “텍스트가 아닌 데이터였거나 다른 인코딩(EUC-KR 등)의 텍스트”라는 신호입니다.
파일을 data URI로
인코딩 → 파일 탭에서 파일을 고르면 전체 내용이 Base64로 바뀝니다. data URI로 옵션(기본 켜짐)을 두면 data:image/png;base64,iVBOR… 형태로 나와 HTML <img src>나 CSS url()에 바로 넣을 수 있습니다. 옵션을 끄면 순수 Base64만 나옵니다.
- MIME 타입은 브라우저가 파일 확장자에서 추정한 값을 쓰고, 알 수 없으면
application/octet-stream이 됩니다. - 파일 크기는 선택 후 이름 옆에 표시됩니다. 결과 문자열은 파일보다 약 33% 커집니다.
- 수 MB 이상 파일은 변환은 되지만 결과를 표시하는 텍스트 영역이 느려질 수 있습니다. data URI로 인라인하기에 적당한 크기는 보통 몇 KB 수준의 아이콘·작은 이미지입니다. 큰 파일은 별도 요청으로 두는 편이 캐시에도 유리합니다.
언제 쓰나요?
Authorization: Basic …헤더 값이 어떤 계정인지 확인할 때. 디코딩하면아이디:비밀번호가 그대로 보이므로, 이 헤더는 HTTPS 없이 쓰면 안 된다는 것도 함께 확인됩니다.- JWT의 헤더·페이로드를 눈으로 확인할 때. 서명 검증은 하지 않으므로 “내용이 보인다”와 “토큰이 유효하다”는 다른 문제입니다.
- API가 Base64로 감싼 값을 돌려줄 때 안을 확인할 때.
- 작은 이미지를 CSS·HTML에 인라인할 data URI를 만들 때.
한계
- base64url(
-,_) 입출력 옵션이 없습니다. 디코딩 전후에 문자를 직접 바꿔야 합니다. - 디코딩 결과를 파일로 내려받는 기능이 없고, UTF-8 이외 인코딩(EUC-KR 등)으로 해석하는 옵션도 없습니다.
- 인코딩 결과에 줄바꿈을 넣는 옵션(MIME 76자 줄바꿈)이 없습니다.
- 처리는 브라우저 안에서 이뤄지며 입력을 전송하는 코드는 없지만, Base64는 누구나 되돌릴 수 있으므로 비밀번호·토큰을 다른 사람과 공유하는 화면이나 스크린샷에 띄우지 마세요.