개인정보 보호: 이 도구는 브라우저에서 전적으로 실행됩니다. 네트워크 요청이 발생하지 않습니다. 입력 데이터는 사용자의 기기에만 남습니다.
0자
0자
빠른 작업: URL-safe Base64 데이터 URL (image/png) 데이터 URL (text/plain)

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는 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은 페이지 크기를 증가시키고 포함 문서와 독립적으로 브라우저에서 캐싱할 수 없으므로, 작은 에셋(수 킬로바이트 이하)에 가장 적합합니다.

관련 개발자 도구