Base64 인코딩 / 디코딩/ 클라이언트 처리

텍스트와 Base64 간 상호 변환. 유니코드, 한국어, 이모지, URL 안전 모드 지원. 데이터는 서버로 전송되지 않습니다.

일반 텍스트
Base64 출력
출력 결과가 여기에 표시됩니다…
입력0
출력0

이 도구가 도움이 되었나요?

Base64 인코딩이란 무엇인가

Base64는 64개의 인쇄 가능한 ASCII 문자를 사용하여 바이너리 데이터를 표현하는 인코딩 방식입니다. 3바이트(24비트)마다 4개의 문자로 인코딩하며, 출력에는 A-Z, a-z, 0-9, +, / 의 64개 문자와 = 패딩 문자만 포함됩니다. Base64는 암호화 알고리즘이 아니며,누구든 쉽게 디코딩할 수 있는 인코딩 형식으로 보안을 제공하지 않습니다.

Base64의 일반적인 용도

이메일 첨부파일: MIME 프로토콜은 바이너리 첨부파일에 Base64를 사용합니다. Data URL: 이미지, 글꼴 등의 리소스를 CSS나 HTML에直接 내장하여 HTTP 요청을 줄입니다. API 전송: JSON으로 바이너리 데이터(이미지, PDF等)를 전송할 때 Base64로 인코딩합니다. JWT 토큰: JWT의 헤더와 페이로드 부분은 Base64 인코딩된 JSON입니다. 기본 인증: HTTP Basic Auth는 사용자명과 비밀번호를 Base64 인코딩하여 전송합니다.

Base64 인코딩 후 크기는 얼마나 증가하는가

Base64 인코딩은 데이터 크기를大约 33% 증가시킵니다. 3바이트의 원본 데이터가 4개의 문자로 인코딩되므로 인코딩된 크기 = ceil(원본 크기 / 3) × 4입니다. 따라서大용량 파일의 경우 바이너리를直接 전송하는 것이更 효율적입니다. 하지만 JSON, XML, URL等 텍스트 전용 채널로 바이너리 데이터를 전송해야 하는 경우 Base64는 표준 솔루션입니다.

코드 예제

JavaScript (Browser)
// Encode (ASCII only)
const encoded = btoa("Hello, World!");
// Decode
const decoded = atob(encoded);

// Encode Unicode (CJK, emoji, etc.)
function b64Encode(str) {
  const bytes = new TextEncoder().encode(str);
  const bin = String.fromCharCode(...bytes);
  return btoa(bin);
}
function b64Decode(b64) {
  const bin = atob(b64);
  const bytes = Uint8Array.from(bin, c => c.charCodeAt(0));
  return new TextDecoder().decode(bytes);
}
Python
import base64

# Encode
text = "Hello, 世界 🌏"
encoded = base64.b64encode(text.encode("utf-8")).decode()
print(encoded)

# Decode
decoded = base64.b64decode(encoded).decode("utf-8")
print(decoded)

# URL-safe variant
url_safe = base64.urlsafe_b64encode(
    text.encode("utf-8")
).decode().rstrip("=")
Go
import "encoding/base64"

// Encode
encoded := base64.StdEncoding.
    EncodeToString([]byte("Hello, World!"))

// Decode
decoded, err := base64.StdEncoding.
    DecodeString(encoded)

// URL-safe
urlSafe := base64.URLEncoding.
    EncodeToString([]byte("Hello, World!"))
Shell (curl / openssl)
# Encode
echo -n "Hello, World!" | base64

# Decode
echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d

# URL-safe encode (GNU coreutils)
echo -n "Hello" | base64 | tr '+/' '-_' | tr -d '='

자주 묻는 질문

Base64란 무엇인가요?
Base64는 바이너리 데이터를 ASCII 문자열로 인코딩하는 방식으로, A–Z, a–z, 0–9, +, / 총 64개의 인쇄 가능 문자를 사용합니다. HTTP, 이메일, JSON 등 텍스트 기반 프로토콜에서 바이너리 데이터(이미지, 파일)를 전송하는 데 널리 사용됩니다.
Base64 인코딩은 암호화인가요?
아닙니다. Base64는 인코딩이며 암호화가 아닙니다. 누구나 쉽게 디코딩할 수 있으며 키의 개념이 없습니다. 데이터 보안을 위해서는 AES, RSA 등의 암호화 알고리즘을 사용해야 합니다.
base64url과 표준 Base64의 차이점은 무엇인가요?
표준 Base64는 +와 / 문자를 사용하며, URL에서는 이스케이프가 필요합니다(%2B와 %2F). 또한 끝에 = 패딩이 있습니다. base64url은 +를 -로, /를 _로 대체하고 끝의 =를 제거하여 URL과 파일명에 직접 사용할 수 있습니다. JWT 토큰의 헤더와 페이로드는 base64url 인코딩을 사용합니다.
왜 Base64 인코딩 후 데이터 크기가 증가하나요?
Base64는 3바이트의 바이너리 데이터를 4개의 ASCII 문자로 표현하므로, 인코딩 후 크기는 원본의 약 133%(약 1/3 증가)가 됩니다. 이는 바이너리 데이터를 일반 텍스트로 전송하기 위한 비용입니다.
JavaScript에서 Base64를 인코딩/디코딩하는 방법은?
브라우저에는 btoa()(인코딩)와 atob()(디코딩)가 내장되어 있습니다. 그러나 이들은 유니코드를 네이티브로 지원하지 않으므로, 한국어 등 비라틴 문자를 처리할 때는 TextEncoder로 먼저 UTF-8 바이트 배열로 변환한 후 인코딩해야 합니다. 본 도구는 유니코드 호환성을 처리합니다.
데이터는 안전한가요?
네. 본 도구는 브라우저에서 완전히 실행되며 네트워크 요청이 발생하지 않습니다. 데이터가 기기를 떠나지 않으므로 안심하고 민감한 텍스트를 테스트할 수 있습니다.