Base64 인코딩 · 디코딩
텍스트(한글·이모지)와 파일을 Base64로, Base64를 다시 텍스트·파일로.
Base64 변환 한눈에 보기
Base64 변환은 텍스트(한글·이모지)와 파일을 Base64로 인코딩하고, Base64를 다시 텍스트·파일로 디코딩하는 무료 웹 도구입니다. 파일은 브라우저 안에서만 처리합니다.
| 텍스트 | UTF-8 인코딩·디코딩(한글·이모지 안전), URL-safe 선택 |
|---|---|
| 파일 → Base64 | 모든 형식, data URL(data:종류;base64,…) 선택 |
| Base64 → 파일 | 형식 자동 인식(PNG·JPG·GIF·WEBP·PDF·ZIP 등), 이미지 미리보기 |
| 규격 | RFC 4648, 디코딩은 표준·URL-safe·패딩 없음·줄바꿈 모두 허용 |
| 처리 위치 | 내 브라우저(서버 전송 없음) |
Base64 변환 쓰는 법
- '텍스트' 탭에서 '인코딩'을 고르고 글을 넣으면 Base64가, '디코딩'을 고르고 Base64를 넣으면 원래 글이 바로 나옵니다. 한글·이모지도 깨지지 않습니다.
- URL 주소나 파일 이름, JWT에 넣을 값이면 'URL-safe'를 켭니다. +와 / 대신 -와 _를 쓰고 끝의 = 패딩을 뺍니다. 디코딩은 두 형식을 모두 자동으로 받습니다.
- '파일' 탭의 '파일 → Base64'에서 이미지·PDF 같은 파일을 끌어다 놓으면 Base64 문자열이 나옵니다. HTML·CSS에 바로 넣으려면 'data URL로'를 켜서 data:image/png;base64,… 형식으로 복사하세요.
- 'Base64 → 파일'에 Base64나 data URL을 붙여넣으면 파일 종류를 알아내 확장자를 붙여 저장합니다. 이메일 원문이나 API 응답에 든 첨부 파일을 꺼낼 때 씁니다.
기준과 계산 방식
Base64는 어떤 원리인가요?
Base64는 바이트 3개(24비트)를 6비트씩 4개로 나눠 A–Z, a–z, 0–9, +, / 의 64글자로 적는 방식(RFC 4648)입니다. 그래서 결과는 원본보다 약 33% 길어지고, 길이를 4의 배수로 맞추려고 끝에 = 를 붙입니다. 암호화가 아니라 표기법이므로 누구나 되돌릴 수 있습니다.
한글·이모지가 깨지지 않는 이유는?
텍스트는 먼저 UTF-8 바이트로 바꾼 뒤 인코딩합니다. 한 글자가 한글은 3바이트, 이모지는 4바이트입니다. 브라우저의 btoa를 바로 쓰는 도구는 한글에서 오류가 나거나 다른 문자로 깨지는데, 이 도구는 그런 문제가 없습니다. 디코딩한 바이트가 UTF-8 글자가 아니면 바이너리(파일)로 판단해 파일 탭을 안내합니다.
파일은 어떻게 처리하고 형식은 어떻게 알아내나요?
파일 변환은 브라우저 안에서만 이뤄지며 파일은 서버로 전송되지 않습니다. 큰 파일도 되지만 결과 문자열이 원본보다 커지므로, 화면에는 앞부분만 보여 주고 복사·저장은 전체를 씁니다. Base64 → 파일의 종류는 data URL 표시나 파일 앞부분의 서명(PNG·JPG·GIF·WEBP·PDF·ZIP 등)으로 알아냅니다.
자주 묻는 질문
Base64로 바꾸면 암호화되나요?
아닙니다. Base64는 누구나 디코딩할 수 있는 표기법입니다. 비밀번호나 개인정보를 숨기는 용도로 쓰면 안 됩니다.
한글이 깨져서 나와요.
인코딩할 때 UTF-8이 아닌 다른 문자 집합(EUC-KR 등)을 쓴 값일 수 있습니다. 이 도구는 UTF-8 기준이라 UTF-8로 인코딩한 값은 그대로 복원되고, 다른 인코딩이면 바이너리로 안내합니다.
이미지를 Base64로 바꾸면 어디에 쓰나요?
HTML의 img src나 CSS background에 data URL로 넣으면 이미지 파일 없이 한 파일 안에 담을 수 있습니다. 작은 아이콘에 적합하며, 큰 이미지는 용량이 33% 늘어나므로 파일로 두는 편이 낫습니다.
URL-safe Base64는 언제 쓰나요?
주소창·쿼리 문자열·파일 이름처럼 +, /, = 가 특별한 뜻을 갖는 곳입니다. JWT 토큰의 각 부분도 URL-safe Base64입니다.
최종 갱신 · 작성 patrick(개인 개발자)
출처·참고: RFC 4648 — Base16·Base32·Base64 인코딩 · RFC 3629 — UTF-8