Base64 인코더 · 디코더
텍스트를 Base64로 인코딩하거나, Base64를 다시 텍스트로 디코딩합니다. UTF-8을 지원해 ASCII 밖의 문자도 정확히 처리해요.
- 텍스트나 Base64 문자열을 상자에 붙여 넣으세요.
- "인코딩"을 눌러 텍스트를 Base64로 바꾸거나, "디코딩"을 눌러 Base64를 다시 텍스트로 되돌리세요.
- 결과 값이 URL이나 JWT에 들어간다면 "URL 안전"을 체크하세요 — +/대신 -_ 를 쓰고 패딩(=)은 생략합니다.
- "복사"를 눌러 결과를 클립보드에 담으세요.
어떤 도구인가요?
Base64는 임의의 바이트를 64개 인쇄 가능한 ASCII 문자로 인코딩해서, 바이너리를 그대로 보낼 수 없는 전송 경로(JSON 문자열, URL, 이메일 본문, 환경 변수, HTTP Basic 인증 등)에서도 값이 깨지지 않고 전달되도록 해 줘요. 이 도구는 UTF-8 입력을 올바르게 다룹니다 — 문자열을 먼저 UTF-8 바이트로 바꾼 뒤 그 바이트를 Base64로 인코딩하기 때문에, ASCII 밖의 문자도 왕복 변환에서 그대로 유지돼요. 출력 길이는 입력보다 대략 33% 늘어납니다(3바이트가 4글자가 됩니다).
예시
텍스트 "Hello, world!"를 인코딩한 결과:
SGVsbG8sIHdvcmxkIQ== 같은 텍스트를 "URL 안전" 옵션으로 인코딩(패딩 제거)한 결과:
SGVsbG8sIHdvcmxkIQ 이모지가 섞인 "café ☕"를 인코딩한 결과:
Y2Fmw6kg4piV Base64 문자열이 디코딩되지 않아요
- 표준 Base64와 URL 안전 Base64가 섞였어요. 문자열에 - 나 _ 가 들어 있으면 표준 Base64가 아니라 base64url이에요. "URL 안전" 체크 여부를 토글해서 맞춰 주세요.
- 패딩이 빠졌어요. 표준 Base64 문자열의 길이는 4의 배수여야 합니다. SGVsbG8 는 실패하지만 SGVsbG8= 는 성공해요. = 를 붙여 길이를 4의 배수로 맞추세요.
- 값 안에 공백이나 줄바꿈이 섞여 있어요. 일부 시스템은 Base64를 76자마다 \n 로 감쌉니다. 보통은 디코더가 허용하지만, 엄격한 구현은 거부할 수 있어요. 디코딩 전에 공백을 먼저 제거하세요.
- 이중으로 디코딩한 경우. U0dWc2JHOA== 를 디코딩하면 SGVsbG8 가 나오는데, 이것도 그 자체로 Base64예요. 결과가 또다시 Base64처럼 보이면 한 번 더 디코딩하세요.
- UTF-8이 아닌 바이너리 데이터. 디코딩된 바이트가 올바른 UTF-8이 아니면(예: PNG 헤더), 텍스트로 디코딩할 때 실패하거나 깨져 보입니다. 바이너리라면 파일을 다루는 Base64 도구를 사용하세요.
- 스마트 따옴표나 말줄임표. 워드프로세서에서 복사하면 " 가 둥근 따옴표로 치환되거나, 긴 문자열이 말줄임표(...)로 잘릴 수 있어요. 일반 텍스트 편집기를 거쳐 붙여 넣으세요.
자주 묻는 질문
표준 Base64와 URL 안전 Base64는 어떻게 다른가요?
표준 Base64(RFC 4648)는 +와 /를 사용하고 =로 패딩합니다. URL 안전 Base64(base64url)는 +를 -로, /를 _로 바꾸고 보통 패딩을 생략해서, URL 경로나 쿼리 파라미터로 그대로 실어도 문제가 없도록 만든 변형이에요. JWT는 base64url을 사용합니다. 출력이 URL에 들어간다면 "URL 안전" 옵션을 켜세요.
이모지나 한글 같은 비-ASCII 문자도 제대로 처리하나요?
네. 입력을 먼저 UTF-8 바이트로 인코딩한 뒤 그 바이트를 Base64로 인코딩합니다. 디코딩할 때도 두 단계를 역순으로 거치기 때문에, "café"나 "카페"를 붙여 넣고 인코딩 후 디코딩하면 그대로 돌아와요. Latin-1을 가정하는 오래된 Base64 도구는 ASCII 밖 문자를 깨뜨리지만, 이 도구는 그렇지 않습니다.
이미지나 PDF 같은 바이너리 파일도 인코딩할 수 있나요?
이 페이지는 텍스트만 인코딩합니다. 파일을 Base64로 인코딩하려면, 파일을 바이너리로 읽어 주는 도구를 쓰거나 브라우저 콘솔에서 FileReader.readAsDataURL을 활용하세요. 이 도구는 자격 증명, 설정 값, JSON 필드 같은 문자열 인코딩에 적합합니다.
디코딩 결과가 깨진 것처럼 나와요.
대부분 입력이 애초에 Base64가 아니거나, URL 안전 Base64를 표준으로 디코딩한(또는 그 반대) 경우예요. "URL 안전" 체크 여부를 먼저 토글해 보세요. 또 다른 흔한 원인은 텍스트가 아닌 바이너리를 Base64로 인코딩한 것을 텍스트로 디코딩한 경우입니다 — 그 바이트는 유효한 UTF-8이 아니에요.
= 패딩이 꼭 있어야 하나요?
표준 Base64는 길이가 4의 배수가 되도록 =로 패딩합니다. 많은 디코더가 패딩 없는 입력도 받아 주지만, 엄격한 구현은 거부합니다. URL 안전 Base64는 보통 패딩을 생략해요. 디코더가 오류를 내면, 길이가 4로 나누어떨어질 때까지 =를 붙이거나, 반대로 모두 떼어내고 다시 시도해 보세요.
제가 인코딩/디코딩한 텍스트를 저장하나요?
아니요. 붙여 넣으신 텍스트는 저장하지 않습니다. 페이지를 닫거나 새로고침하는 즉시 입력은 사라져요 — 저희 쪽에는 무엇을 인코딩/디코딩했는지에 대한 기록이 전혀 없습니다. 확신이 필요하시면 브라우저 개발자 도구에서 직접 확인해 보셔도 됩니다.