Base64 인코딩

입력 텍스트
0글자

무료 온라인 Base64 인코딩/디코딩 도구로 UTF-8 / ASCII / ISO-8859-1 문자셋과 Standard / URL-Safe / MIME 세 가지 변형을 지원합니다. 용량 증가율을 실시간으로 보여 주며 MIME 줄바꿈은 RFC 2045 규격을 따릅니다.

관련 추천

Base64 인코딩이란 무엇인가요?

Base64 는 64개의 출력 가능한 ASCII 문자를 사용해 바이너리 데이터를 텍스트로 바꾸는 인코딩 방식입니다. 처음에는 RFC 2045(MIME 표준)에서 정의되었습니다. 3바이트(24비트)를 4개의 Base64 문자(A-Z, a-z, 0-9, +, /)로 바꿔 HTTP 헤더, JSON, XML, URL 쿼리처럼 텍스트 중심 시스템에서도 안전하게 전송할 수 있게 합니다.

**Base64 는 암호화가 아닙니다.** 단순한 데이터 형식 변환이므로 누구나 쉽게 되돌릴 수 있습니다. 민감한 데이터를 보호하려면 AES 같은 실제 암호화를 사용해야 합니다. 대표적인 활용 예로는 HTTP Basic Authentication, JWT 의 header / payload(Base64URL), Data URI, 메일 첨부용 MIME 인코딩이 있습니다.

**URL-Safe Base64**(RFC 4648 §5)는 표준 Base64 의 + 와 / 를 - 와 _ 로 바꾸고, 보통 = padding 을 생략합니다. 그래서 URL, 파일 경로, JSON 필드 안에서도 안전하게 사용할 수 있습니다. JWT, OAuth PKCE code_verifier, AWS Signature V4 같은 곳에서 널리 쓰입니다.

**MIME 줄바꿈**은 RFC 2045 에서 각 줄을 76자 이하로 제한하는 표준입니다. Base64 내용을 이메일이나 줄 단위 처리가 필요한 환경에서 사용할 때 MIME 변형은 76자마다 자동으로 줄바꿈(`\n`)을 넣습니다. 이는 이메일 첨부 전송의 표준 형식입니다.

이 도구는 브라우저 기본 **btoa / atob API** 와 UTF-8 안전 처리 로직을 함께 사용해 한글, 일본어, emoji 같은 멀티바이트 문자도 올바르게 인코딩합니다. 모든 계산은 로컬에서 수행되며 데이터는 어떤 서버로도 전송되지 않습니다. 개발자 도구의 네트워크 패널에서도 외부 요청이 없음을 확인할 수 있습니다.

사용 사례

  • JWT 디버깅: JWT 의 header 와 payload(Base64URL)를 디코드해 클레임 내용을 확인
  • Basic Auth: username:password 를 HTTP Basic 인증 문자열로 인코딩
  • OAuth 개발: PKCE 의 code_verifier 생성 또는 code_challenge 검증
  • API 디버깅: JSON 데이터를 인코딩하거나 API 가 반환한 Base64 필드 디코딩
  • Data URI 이미지 삽입: 작은 아이콘을 data:image/...;base64,... 형식으로 CSS / HTML 에 삽입
  • 이메일 첨부 인코딩: MIME Base64 형식으로 메일 첨부용 바이너리 데이터 처리

이용 방법

  1. 모드 선택: Encode(인코딩) 또는 Decode(디코딩)를 눌러 방향을 바꿉니다
  2. 변형 선택: Standard, URL-Safe(JWT / OAuth), MIME(메일용 76자 줄바꿈) 중 선택합니다
  3. 내용 입력: 텍스트나 Base64 문자열을 붙여 넣으면 즉시 처리됩니다
  4. 통계 확인: 하단에 문자 수와 용량 증가율(인코딩 시 약 33%)이 표시됩니다
  5. 결과 복사: Base64 문자열이나 디코딩된 텍스트를 한 번에 복사할 수 있습니다

주요 기능

  • Encode / Decode 원클릭 전환: 인코딩과 디코딩 모드를 자유롭게 바꾸고 결과를 다시 입력으로 이어서 처리할 수 있습니다
  • 세 가지 문자셋 지원: UTF-8(한글 / 일본어 / emoji), ASCII, ISO-8859-1 지원
  • 세 가지 변형 출력: Standard, URL-Safe(JWT / OAuth / PKCE), MIME(RFC 2045 76자 줄바꿈)
  • 실시간 용량 통계: 입력 / 출력 문자 수와 증가율을 즉시 표시 (Base64 는 약 33% 증가)
  • 친절한 오류 안내: 지원 범위를 벗어난 문자가 있으면 단순 실패 대신 구체적 원인을 표시
  • 드래그 가능한 구분선: PC 에서 좌우 편집 영역 비율 조절 가능
  • 모바일 전용 탭 전환: 스마트폰 / 태블릿에서도 입력과 출력 영역을 편하게 전환

코드 예제

JavaScript에서 Base64 인코딩 (UTF-8 한글 지원)

// Encode (UTF-8 safe)
function b64Encode(str) {
  return btoa(unescape(encodeURIComponent(str)));
}

// Decode (UTF-8 safe)
function b64Decode(str) {
  return decodeURIComponent(escape(atob(str)));
}

// URL-Safe encode (JWT / OAuth)
function b64UrlEncode(str) {
  return btoa(unescape(encodeURIComponent(str)))
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/, '');
}

console.log(b64Encode('Hello 세계')); // SGVsbG8g7IS47rOE
console.log(b64Decode('SGVsbG8g7IS47rOE')); // Hello 세계

Python에서 Base64 인코딩

import base64

encoded = base64.b64encode('Hello 세계'.encode('utf-8'))
print(encoded.decode())

decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)

url_safe = base64.urlsafe_b64encode('Hello 세계'.encode('utf-8'))
print(url_safe.decode())

url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)

Java에서 Base64 인코딩

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String text = "Hello 세계";

        String encoded = Base64.getEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(encoded);

        String decoded = new String(
            Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(decoded);

        String urlSafe = Base64.getUrlEncoder().withoutPadding()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(urlSafe);

        String mime = Base64.getMimeEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
    }
}

자주 묻는 질문

Base64 인코딩과 암호화는 같은 것인가요?

아닙니다. Base64 는 텍스트를 다른 가역적 표현으로 바꾸는 형식 변환일 뿐이며, 누구나 다시 디코드할 수 있습니다. 비밀번호나 토큰처럼 민감한 데이터를 보호하려면 AES 같은 실제 암호화를 사용해야 합니다. Base64 는 바이너리 데이터를 텍스트 시스템에서 전달하기 쉽게 만들 때 적합합니다.

AES 암호화 도구

Base64 인코딩 후 용량은 얼마나 커지나요?

Base64 인코딩을 하면 원본 데이터 크기가 약 33% 증가합니다. 3바이트(24비트)를 4개의 Base64 문자로 바꾸기 때문입니다. 예를 들어 100바이트 텍스트는 인코딩 후 약 133바이트가 됩니다. 도구 하단에서 증가율을 실시간으로 확인할 수 있습니다. 예: `Hello` → `SGVsbG8=` (약 +33%).

Base64 통계 도구

Standard, URL-Safe, MIME 변형은 어떻게 다른가요?

Standard 는 기본 Base64 로 A-Z, a-z, 0-9, +, / 문자를 사용합니다. URL-Safe 는 + 와 / 를 - 와 _ 로 바꿔 URL 파라미터와 JWT 에 적합합니다. MIME 은 76자마다 줄바꿈을 넣어 RFC 2045 메일 규격을 따르며, 메일 첨부와 여러 줄 텍스트에 적합합니다.

URL-Safe Base64MIME Base64

JWT 의 header 나 payload 는 어떻게 디코드하나요?

JWT 는 Base64URL(URL-Safe 변형)을 사용합니다. URL-Safe 모드를 선택한 뒤 JWT 첫 번째(header) 또는 두 번째(payload) 세그먼트를 붙여 넣으면 바로 디코드할 수 있습니다. 세 번째 서명 부분은 보통 내용 확인용 디코드 대상이 아닙니다.

JWT 도구

Base64 의 Padding(=)은 무엇인가요?

Base64 결과 길이는 4의 배수여야 합니다. 입력 길이가 3바이트 배수가 아닐 때는 끝에 = 문자를 붙여 길이를 맞춥니다. Standard Base64 는 padding 을 사용하고, Base64URL 은 보통 생략합니다. 이 도구는 padding 을 자동으로 처리하며 디코딩 시에도 자동으로 다룹니다.

Base64 Padding 도구

JavaScript 의 btoa 와 atob 는 왜 한글을 직접 지원하지 않나요?

btoa 와 atob 는 브라우저 기본 API 이지만 Latin-1(ISO-8859-1) 기준 1문자 1바이트 문자열만 다룹니다. 한글과 같은 UTF-8 문자는 여러 바이트를 차지하므로 그대로 넣으면 오류가 납니다. 먼저 encodeURIComponent 로 UTF-8 바이트 시퀀스로 변환한 뒤 처리해야 합니다.

Data URI Scheme 이란 무엇이며 Base64 로 이미지를 어떻게 넣나요?

Data URI 는 데이터를 URL 안에 직접 넣는 방식이며 형식은 `data:[<mediatype>][;base64],<data>` 입니다. 예: `data:image/png;base64,iVBORw0KGgo...` 작은 아이콘이나 CSS 배경 이미지를 인라인으로 넣을 때 자주 사용하지만, Base64 로 인해 약 33% 크기가 증가하므로 큰 파일에는 일반 URL 이 더 적합합니다.

Data URI 도구Base64 를 이미지로 변환

용어집

RFC 4648
IETF 가 발행한 Base16 / Base32 / Base64 공식 표준입니다. 표준 Base64 와 URL-Safe Base64 의 알파벳, padding, 줄바꿈, 비허용 문자 처리 규칙을 정의합니다.URL-Safe Base64 도구Base64 Padding 도구
RFC 2045 (MIME)
MIME 표준으로, Base64 를 이메일 콘텐츠 전송 인코딩으로 처음 정의했습니다. 각 줄 76자 제한과 CRLF 줄바꿈을 규정하는 MIME Base64 의 근거입니다.MIME Base64 도구
Base64URL (URL-Safe Base64)
RFC 4648 §5 에 정의된 URL 안전 변형입니다. + 를 - 로, / 를 _ 로 바꾸고 보통 = padding 을 생략합니다. JWT, OAuth PKCE, URL 파라미터, 파일명 등에 널리 쓰입니다.URL-Safe Base64 도구JWT 도구
MIME Base64
RFC 2045 규격에 맞는 Base64 변형으로 76자마다 CRLF 줄바꿈을 넣습니다. 주로 이메일 첨부 전송에 사용됩니다.MIME Base64 도구
Padding
Base64 결과 길이는 4의 배수여야 합니다. 입력 바이트 수가 3의 배수가 아닐 때는 끝에 = 문자를 붙여 맞춥니다. Standard Base64 는 padding 을 사용하고 Base64URL 은 주로 생략합니다.Base64 Padding 도구
Base64 알파벳
Base64 인코딩에 사용되는 64개 문자 집합입니다. 표준 Base64 는 A-Z, a-z, 0-9, +, / 를 사용하며 필요 시 = 가 padding 으로 추가됩니다.
btoa / atob
브라우저 기본 Base64 인코드 / 디코드 API 입니다. btoa 는 binary to ASCII, atob 는 ASCII to binary 를 뜻합니다. Latin-1 기준이므로 한글은 UTF-8 변환이 필요합니다.
Data URI Scheme
작은 파일을 URL 안에 직접 넣는 형식으로, data:[<mediatype>][;base64],<data> 형태를 사용합니다. 작은 아이콘이나 CSS 배경 이미지를 인라인으로 넣을 때 자주 활용됩니다.Data URI 도구Base64 를 이미지로 변환
HTTP Basic Authentication
HTTP 인증 방식 중 하나로 username:password 를 콜론으로 연결한 뒤 Base64 로 인코딩하여 Authorization 헤더에 넣습니다.Auth Header 빌더
Base64 용량 증가율
Base64 인코딩 후 데이터 크기가 얼마나 늘어나는지를 뜻합니다. 3바이트를 4문자로 바꾸므로 약 33% 증가합니다. padding 이 붙으면 약간 더 커질 수 있습니다.

Base64 세 가지 변형 비교

특징StandardURL-SafeMIME
특수 문자+ /- _+ /
Padding (=)사용보통 생략사용
줄바꿈없음없음76자마다 줄바꿈
표준RFC 4648 §4RFC 4648 §5RFC 2045
대표 사용 사례Data URI, 일반 인코딩JWT, URL 파라미터, 파일명메일 첨부, SMTP 전송

Base 계열 인코딩 비교표

인코딩문자 수문자셋 특징용량 증가대표 용도
Base16 (Hex)160-9, A-F100%디버깅, 해시 표시
Base3232A-Z, 2-7 (혼동 적은 대문자 기반)60%DNS, TOTP 키, QR 코드
Base5858혼동 쉬운 0/O/I/l 제거38%비트코인 주소, 암호화폐
Base6262A-Z, a-z, 0-934%단축 URL, ID 인코딩
Base6464A-Z, a-z, 0-9, +, /33%Data URI, MIME, JWT(URL-Safe 변형)

Authoritative References