Base64 인코더 & 디코더
텍스트와 파일을 Base64로 변환하고 다시 되돌립니다. 유니코드를 올바르게 처리하고 URL 안전 base64url을 지원하며, 입력이 잘못된 정확한 이유를 알려 줍니다.
브라우저에서 실행가입 불필요업로드 없음
Base64 출력
Base64 인코딩 / 디코딩 사용 방법
- 인코딩 또는 디코딩을 선택합니다.
- 입력값을 입력하거나 붙여넣습니다. 입력하는 즉시 결과가 갱신됩니다.
- URL, JWT, 파일 이름에는 URL 안전을 체크해
-와_를 사용하고, 필요하면=패딩을 생략합니다. - 이미지나 폰트를 삽입하려면 파일 인코딩을 클릭하고 data URI로 출력을 체크한 상태로 둡니다.
- 결과를 복사하거나 바꾸기로 반대 방향의 입력으로 다시 넣습니다.
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로 로컬에서 읽고 인코딩합니다. 서버로는 아무것도 전송되지 않습니다.