Base64 인코더 & 디코더 — 무료 온라인 도구
Base64 문자열을 즉시 인코딩 또는 디코딩합니다. UTF-8 텍스트와 데이터 URL을 지원합니다. 모든 처리는 100% 클라이언트 사이드 — 데이터가 브라우저를 떠나지 않습니다.
Base64 인코딩이란?
Base64는 임의의 바이너리 데이터를 64개의 출력 가능한 ASCII 문자 시퀀스로 변환하는 바이너리-텍스트 인코딩 방식입니다. 대문자(A–Z), 소문자(a–z), 숫자(0–9), 플러스(+), 슬래시(/)를 사용합니다. 등호(=)로 패딩을 추가하여 출력 길이가 4의 배수가 되도록 합니다.
"Base64"라는 이름은 데이터를 표현하기 위해 정확히 64개의 서로 다른 문자를 사용하는 데서 유래합니다. 입력 3바이트마다 4개의 Base64 문자가 생성되므로 인코딩된 출력은 원본 바이너리보다 약 33% 더 커집니다.
Base64를 사용해야 하는 경우
- HTML/CSS에 이미지 임베딩 — 데이터 URL(
data:image/png;base64,...)을 사용하여 추가 HTTP 요청 없이 작은 이미지를 인라인으로 포함 - JSON 페이로드 — JSON은 텍스트만 지원하므로 Base64를 사용하여 파일 내용이나 이미지와 같은 바이너리 데이터를 JSON 필드에 포함
- 이메일 첨부 파일 — MIME 표준은 Base64를 사용하여 일반 텍스트 이메일에서 바이너리 첨부 파일을 인코딩
- HTTP 헤더 및 쿼리 파라미터 — ASCII만 허용하는 채널을 통해 바이너리 값을 안전하게 전달
- JWT 토큰 — JSON Web Token의 헤더와 페이로드는 Base64URL 인코딩됨
- 텍스트 데이터베이스에 바이너리 블롭 저장 — VARCHAR 또는 TEXT 컬럼에 저장하기 위해 작은 바이너리 값을 인코딩
- 기본 인증 — HTTP Basic Auth는 자격 증명(
username:password)을 Base64로 인코딩
JavaScript에서의 Base64
최신 브라우저는 Base64 인코딩 및 디코딩을 위한 두 가지 내장 함수를 제공합니다. 유니코드 텍스트의 경우 멀티바이트 문자를 명시적으로 처리해야 합니다:
// 일반 ASCII 문자열 인코딩
const encoded = btoa('Hello, world!');
// → "SGVsbG8sIHdvcmxkIQ=="
// Base64 문자열 디코딩
const decoded = atob('SGVsbG8sIHdvcmxkIQ==');
// → "Hello, world!"
// UTF-8 문자열 인코딩 (이모지, 비-ASCII 지원)
function encodeUTF8(str) {
const bytes = new TextEncoder().encode(str);
const binStr = Array.from(bytes, b => String.fromCharCode(b)).join('');
return btoa(binStr);
}
// UTF-8 Base64 문자열 디코딩
function decodeUTF8(b64) {
const binStr = atob(b64);
const bytes = Uint8Array.from(binStr, c => c.charCodeAt(0));
return new TextDecoder().decode(bytes);
}
// URL-safe Base64 (+ 를 -로, / 를 _로 대체)
function encodeURLSafe(str) {
return encodeUTF8(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
}
// Node.js (서버 사이드)
const encoded = Buffer.from('Hello').toString('base64');
const decoded = Buffer.from('SGVsbG8=', 'base64').toString('utf8');
// 문자열에서 데이터 URL 생성
function toDataURL(content, mimeType = 'text/plain') {
return `data:${mimeType};base64,${encodeUTF8(content)}`;
}
실제 애플리케이션에서의 Base64
Base64 인코딩은 바이너리 데이터를 ASCII 텍스트로 변환하여 텍스트 전용 채널을 통해 안전하게 전송할 수 있게 합니다. 개념적으로는 간단하지만, Base64를 올바르게 사용하는 시점과 방법을 이해하면 일반적인 성능 및 보안 실수를 방지할 수 있습니다.
Base64를 사용해야 할 때 (그리고 사용하지 말아야 할 때)
- 사용하는 경우: HTML/CSS에 작은 이미지 임베딩(데이터 URI), JSON 페이로드에서 바이너리 데이터 인코딩, 이메일 첨부파일(MIME 인코딩), 텍스트 전용 데이터베이스나 환경 변수에 바이너리 데이터 저장.
- 사용하지 않는 경우: 큰 파일(Base64는 크기를 약 33% 증가시킴), 암호화나 보안(Base64는 인코딩이지 암호화가 아님 — 누구나 디코딩 가능), 바이너리 전송이 가능한 경우(파일 업로드의 multipart/form-data 등).
알아야 할 Base64 변형
- 표준 Base64 (RFC 4648): A-Z, a-z, 0-9, +, /를 사용하고 =로 패딩. 대부분의 언어에서 기본값.
- URL 안전 Base64: +를 -로, /를 _로 대체. URL, 파일명, 쿠키에서 +와 /가 특별한 의미를 가질 때 필수. JWT에서 사용.
- 패딩 없는 Base64: 후행 = 문자를 생략. JWT와 일부 API에서 일반적. 대부분의 디코더는 패딩 없는 입력을 적절히 처리합니다.
성능 고려사항
Base64 인코딩은 데이터 크기를 약 33% 증가시킵니다(3바이트마다 4문자가 됨). CSS 인라인 이미지의 경우, 10KB 이미지가 약 13.3KB의 CSS 텍스트가 됩니다. 2KB 미만의 이미지는 절약되는 HTTP 요청에 비해 오버헤드가 무시할 수 있습니다. 더 큰 자산은 적절한 캐싱 헤더와 함께 별도 파일로 제공하세요.
자주 묻는 질문
Base64 인코딩이란 무엇입니까?
Base64는 64개의 출력 가능한 ASCII 문자를 사용하여 바이너리 데이터를 표현하는 바이너리-텍스트 인코딩 방식입니다. JSON, XML, 이메일, URL과 같이 텍스트만 처리하는 채널을 통해 이미지, 파일 또는 임의의 바이트와 같은 바이너리 콘텐츠를 안전하게 전송하는 데 사용됩니다. Base64는 데이터를 압축하지 않으며 인코딩된 출력은 입력보다 약 33% 더 커집니다.
Base64 인코딩은 언제 사용해야 합니까?
텍스트 전용 컨텍스트에 바이너리 데이터를 포함해야 할 때 사용합니다. HTML이나 CSS에 데이터 URL로 인라인 이미지 포함, JSON API 페이로드의 바이너리 필드, 이메일(MIME) 첨부 파일, HTTP Basic Auth 헤더의 자격 증명, 텍스트 데이터베이스 컬럼에 저장하는 작은 바이너리 블롭 등이 해당됩니다. 대용량 파일의 경우 Base64 인코딩보다는 직접 업로드하는 것이 좋습니다. 크기 오버헤드가 빠르게 누적되기 때문입니다.
Base64는 암호화의 한 형태입니까?
아닙니다 — Base64는 순수한 인코딩 방식이지 암호화가 아닙니다. 보안이나 기밀성을 전혀 제공하지 않습니다. 누구나 키나 비밀번호 없이 Base64 문자열을 즉시 디코딩할 수 있습니다. 비밀번호, API 키, 개인 정보와 같은 민감한 데이터를 숨기기 위해 Base64를 사용해서는 안 됩니다. 기밀성이 필요하다면 AES-256(대칭) 또는 RSA(비대칭)와 같은 적절한 암호화를 사용하십시오.
Base64 데이터 URL이란 무엇입니까?
데이터 URL은 Base64 인코딩을 사용하여 파일 내용을 URI에 직접 포함하며, data:[mime-type];base64,[인코딩된 데이터] 형식을 따릅니다. 예: data:image/png;base64,iVBORw0KGgo.... 데이터 URL을 사용하면 별도의 파일 요청 없이 HTML, CSS 또는 JSON에 작은 이미지나 파일을 직접 포함할 수 있습니다. 대용량 데이터 URL은 페이지 크기를 증가시키고 포함 문서와 독립적으로 브라우저에서 캐싱할 수 없으므로, 작은 에셋(수 킬로바이트 이하)에 가장 적합합니다.
관련 개발자 도구
- JWT 디코더 및 검사기 — JSON Web Token을 디코딩하고 헤더, 페이로드, 만료 클레임을 검사
- 해시 생성기 — 모든 문자열에서 MD5, SHA-1, SHA-256, SHA-512 해시 생성
- URL 인코더 & 디코더 — URL 컴포넌트와 쿼리 문자열을 퍼센트 인코딩 및 디코딩
- .ENV 파일 검사기 — 환경 파일에서 노출된 API 키와 시크릿 탐지