Base64 인코더 & 디코더

텍스트와 파일을 Base64로 변환하고 다시 되돌립니다. 유니코드를 올바르게 처리하고 URL 안전 base64url을 지원하며, 입력이 잘못된 정확한 이유를 알려 줍니다.

브라우저에서 실행가입 불필요업로드 없음

Base64 출력

Base64 인코딩 / 디코딩 사용 방법

  1. 인코딩 또는 디코딩을 선택합니다.
  2. 입력값을 입력하거나 붙여넣습니다. 입력하는 즉시 결과가 갱신됩니다.
  3. URL, JWT, 파일 이름에는 URL 안전을 체크해 -와 _를 사용하고, 필요하면 = 패딩을 생략합니다.
  4. 이미지나 폰트를 삽입하려면 파일 인코딩을 클릭하고 data URI로 출력을 체크한 상태로 둡니다.
  5. 결과를 복사하거나 바꾸기로 반대 방향의 입력으로 다시 넣습니다.

Base64의 원리

Base64는 출력 가능한 64개의 ASCII 문자(A-Z, a-z, 0-9, +, /)로 바이너리 데이터를 표현합니다. 입력 3바이트가 4문자가 되므로 인코딩된 데이터는 약 33% 커집니다. 입력 길이가 3의 배수가 아니면 출력 끝에 =를 한두 개 붙여 패딩합니다. Base64는 암호화가 아니라 인코딩이므로 누구나 디코딩할 수 있습니다.

표준 Base64와 base64url의 차이

+와 /는 URL과 파일 경로에서 특별한 의미를 가집니다. RFC 4648 §5의 URL 안전 알파벳은 이를 -와 _로 바꾸고 보통 패딩을 생략합니다. JWT, 많은 OAuth 파라미터, 일부 클라우드 API가 base64url을 사용합니다. 이 도구의 디코더는 두 알파벳을 모두 자동으로 처리합니다.

유니코드와 btoa()의 함정

브라우저에서 btoa("café")는 동작하지만 btoa("日本")은 예외를 던집니다. btoa는 Latin-1만 받기 때문입니다. 올바른 방법은 텍스트를 먼저 UTF-8 바이트로 인코딩하는 것이며, 이 도구도 그렇게 처리합니다. JavaScript에서는 btoa(String.fromCharCode(...new TextEncoder().encode(text))), Node.js에서는 Buffer.from(text).toString('base64')를 사용하세요.

주요 활용 사례

  • CSS나 HTML에 작은 이미지·폰트를 넣는 data URI
  • HTTP Basic 인증 헤더(user:password를 인코딩)
  • JSON 페이로드와 이메일(MIME)의 바이너리 첨부
  • 값을 Base64로 저장하는 Kubernetes Secret

자주 묻는 질문

Base64는 암호화인가요?
아닙니다. Base64는 키가 없는 가역 인코딩입니다. 누구나 디코딩할 수 있으므로 비밀번호나 비밀 정보를 숨기는 데 절대 사용하지 마세요.
Base64가 디코딩되지 않는 이유는 무엇인가요?
흔한 원인은 알파벳에 없는 문자(복사할 때 딸려 온 따옴표나 줄바꿈 등), 잘린 문자열, Base64가 아닌 텍스트가 섞인 경우입니다. 오류 메시지에 첫 번째 문제의 위치가 표시됩니다.
디코딩 결과가 깨져 보입니다. 왜 그런가요?
데이터가 텍스트가 아니라 이미지, 압축 파일, 암호화된 바이트 같은 바이너리일 가능성이 높습니다. 도구가 이를 감지해 16진수 덤프를 보여 주고 원시 바이트를 다운로드할 수 있게 합니다.
= 패딩이 꼭 필요한가요?
이 도구를 포함한 많은 디코더는 길이로 부족한 바이트 수를 알 수 있어 패딩 없이도 동작합니다. 일부 엄격한 디코더는 패딩을 요구합니다. JWT와 대부분의 base64url 사용처는 패딩을 생략합니다.
파일이 업로드되나요?
아니요. 파일은 브라우저의 File API로 로컬에서 읽고 인코딩합니다. 서버로는 아무것도 전송되지 않습니다.

관련 도구