현재 언어: 한국어 영어로 보기

Base64 인코더 · 디코더

텍스트를 Base64로 인코딩하거나, Base64를 다시 텍스트로 디코딩합니다. UTF-8을 지원해 ASCII 밖의 문자도 정확히 처리해요.

  1. 텍스트나 Base64 문자열을 상자에 붙여 넣으세요.
  2. "인코딩"을 눌러 텍스트를 Base64로 바꾸거나, "디코딩"을 눌러 Base64를 다시 텍스트로 되돌리세요.
  3. 결과 값이 URL이나 JWT에 들어간다면 "URL 안전"을 체크하세요 — +/대신 -_ 를 쓰고 패딩(=)은 생략합니다.
  4. "복사"를 눌러 결과를 클립보드에 담으세요.
어떤 도구인가요?

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로 나누어떨어질 때까지 =를 붙이거나, 반대로 모두 떼어내고 다시 시도해 보세요.

제가 인코딩/디코딩한 텍스트를 저장하나요?

아니요. 붙여 넣으신 텍스트는 저장하지 않습니다. 페이지를 닫거나 새로고침하는 즉시 입력은 사라져요 — 저희 쪽에는 무엇을 인코딩/디코딩했는지에 대한 기록이 전혀 없습니다. 확신이 필요하시면 브라우저 개발자 도구에서 직접 확인해 보셔도 됩니다.