Base64 인코더/디코더
텍스트를 Base64로 인코딩하거나 디코딩합니다.
JWT, Data URI, API 인증 등 Base64 실무 활용을 더 깊이 알고 싶다면 Base64 인코딩의 모든 것 가이드를 참고하세요.
Base64 인코딩이란?
Base64는 바이너리 데이터를 64개의 안전한 ASCII 문자(A-Z, a-z, 0-9, +, /)로 변환하는 인코딩 방식입니다. RFC 4648에 의해 표준화되었으며, 원본 데이터를 6비트씩 나누어 대응하는 문자로 치환합니다. 3바이트의 입력이 4문자의 출력이 되므로, 인코딩 후 크기는 원본 대비 약 33% 증가합니다.
이메일 첨부파일(MIME), HTML/CSS의 data: URI, JWT 토큰, API 요청 본문 등 텍스트 기반 프로토콜에서 바이너리 데이터를 안전하게 전송할 때 널리 사용됩니다. Base64는 암호화가 아닌 단순 인코딩이므로, 누구나 디코딩할 수 있습니다. 보안 목적으로는 AES, RSA 등의 암호화 알고리즘을 사용해야 합니다.
이 도구는 브라우저의 btoa()와 atob() 함수를 사용하며, UTF-8 인코딩을 통해 한글, 일본어, 이모지 등 모든 유니코드 문자를 정확하게 처리합니다. 입력된 데이터는 서버로 전송되지 않습니다.
사용 방법
- 상단 텍스트 입력란에 원본 문자열을 입력합니다.
- 인코딩 버튼을 클릭하면 하단에 Base64 결과가 출력됩니다.
- 반대로 Base64 문자열을 하단에 입력하고 디코딩 버튼을 클릭하면 원본 텍스트로 복원됩니다.
- 복사 버튼으로 결과를 클립보드에 복사할 수 있습니다.
실무 활용 사례
JWT 토큰 디버깅 — JWT(JSON Web Token)는 헤더와 페이로드를 Base64url로 인코딩합니다. 인증 문제 디버깅 시 토큰의 페이로드를 디코딩하여 클레임 내용을 확인할 수 있습니다.
Data URI 생성 — 작은 이미지나 폰트 파일을 Base64로 인코딩하면 HTML/CSS에 직접 삽입할 수 있습니다(data:image/png;base64,...). HTTP 요청 수를 줄여 로딩 성능을 개선할 수 있지만, 파일 크기가 커지는 트레이드오프가 있습니다.
API 인증 헤더 — HTTP Basic Authentication은 username:password 문자열을 Base64로 인코딩하여 Authorization 헤더에 포함합니다. 단, 이는 암호화가 아니므로 반드시 HTTPS와 함께 사용해야 합니다.
이메일 첨부파일 — MIME 표준에서 이메일의 바이너리 첨부파일은 Base64로 인코딩되어 전송됩니다. 이는 7비트 ASCII만 지원하는 레거시 메일 시스템과의 호환성을 위한 것입니다.
Base64 인코딩 원리
Base64 인코딩은 3단계로 진행됩니다. 먼저 입력 데이터를 바이트 단위로 읽습니다. 다음으로 3바이트(24비트)를 6비트씩 4그룹으로 나눔니다. 각 6비트 값(0~63)을 Base64 알파벳(A-Za-z0-9+/)의 대응 문자로 치환합니다. 입력이 3의 배수가 아니면 나머지를 =(패딩 문자)로 채웠니다.
예를 들어 Man이라는 문자열은 바이트로 77 97 110이고, 이를 6비트씩 나누면 19 22 5 46이 되어 최종적으로 TWFu로 변환됩니다.
표준 Base64 vs URL-safe Base64
표준 Base64는 +와 / 문자를 사용하지만, 이 문자들은 URL에서 특수 의미를 가집니다(+는 공백, /는 경로 구분자). URL-safe Base64(RFC 4648 섹션 5)는 이를 -와 _로 대체하여 URL 파라미터, 파일명, 쿠키 값 등에 안전하게 사용할 수 있습니다. JWT 토큰이 URL-safe Base64를 사용하는 대표적인 예입니다.
자주 묻는 질문
Base64는 암호화인가요?
아닙니다. Base64는 데이터를 다른 형식으로 표현하는 인코딩일 뿐이며, 누구나 디코딩할 수 있습니다. 보안이 필요한 데이터는 AES나 RSA 같은 암호화 알고리즘을 사용해야 합니다. Base64 문자열을 보고 "암호화되었다"고 오해하는 경우가 많으니, 반드시 구분해야 합니다.
URL-safe Base64란 무엇인가요?
표준 Base64의 +와 / 문자를 -와 _로 대체한 변형입니다. URL 파라미터, 파일명, 쿠키 값 등에 안전하게 사용할 수 있으며, JWT 토큰이 대표적인 사용 예입니다. 일부 구현에서는 패딩 문자(=)도 제거합니다.
Base64 인코딩하면 크기가 얼마나 커지나요?
원본 데이터 대비 약 33% 증가합니다. 3바이트의 입력이 4문자의 출력이 되기 때문입니다. 예를 들어 1MB 파일은 약 1.33MB의 Base64 문자열이 됩니다. 이 오버헤드는 대부분의 웹 통신에서 무시할 수 있는 수준이지만, 대용량 파일을 Base64로 전송할 때는 multipart/form-data 같은 대안을 검토하세요.
한글이나 이모지도 인코딩될 수 있나요?
네. 이 도구는 입력 텍스트를 먼저 UTF-8로 변환한 뒤 Base64로 인코딩합니다. 한글, 일본어, 중국어, 이모지 등 모든 유니코드 문자를 정확하게 처리합니다. 다른 도구에서 디코딩할 때도 UTF-8 설정이 일치해야 정상적으로 복원됩니다.
입력한 데이터가 서버로 전송되나요?
아닙니다. 모든 처리는 브라우저 내에서 JavaScript의 btoa()와 atob() 함수로 수행됩니다. 네트워크 요청이 발생하지 않으며, 개발자 도구의 Network 탭에서 직접 확인할 수 있습니다.
Base64 문자열 끝의 등호(=)는 무엇인가요?
패딩(padding) 문자입니다. Base64는 3바이트 단위로 처리하는데, 입력 길이가 3의 배수가 아니면 부족한 만큼 등호로 채웁니다. 1바이트 부족 시 ==, 2바이트 부족 시 = 하나가 붙습니다. 디코딩 시 원본 데이터 길이를 정확히 복원하는 데 사용됩니다.
일부 토큰의 디코딩이 실패하는 이유는?
JWT 등 많은 토큰은 URL-safe Base64 변형을 사용하여 +// 대신 -/_를 쓰고, 패딩도 생략합니다. 디코딩 전에 문자를 치환하고 패딩을 추가하면 정상적으로 디코딩됩니다.
이미지 파일도 Base64로 변환할 수 있나요?
네. 이미지 파일의 Base64 변환이 필요하면 이미지 Base64 변환기를 이용하세요. 이미지 파일을 드래그 앤 드롭으로 업로드하면 Data URI 형식의 Base64 문자열을 얻을 수 있습니다.
광고 영역