Base64 인코더/디코더 Pro - 고급 텍스트 & 파일 변환 도구
텍스트와 파일을 Base64로 인코딩/디코딩하는 전문 도구입니다. 실시간 변환, 파일 드래그 앤 드롭, 이미지 미리보기, URL-safe 인코딩, 배치 처리, 코드 스니펫 생성까지 모든 기능을 제공합니다. 개발자와 일반 사용자 모두를 위한 완벽한 Base64 변환 솔루션입니다.
Base64 인코더 / 디코더
원본 텍스트
0자Base64 결과
Base64 완벽 가이드 목차
Base64 인코딩 완벽 가이드
Base64는 바이너리 데이터를 ASCII 문자열로 변환하는 인코딩 방식입니다. 1987년 RFC 989에서 처음 정의되었으며, 이메일 첨부파일(MIME)에서 널리 사용되기 시작했습니다. 오늘날에는 웹 개발, API, 데이터 전송 등 다양한 분야에서 필수적인 기술입니다.
이 도구는 텍스트와 파일의 Base64 인코딩/디코딩, 다양한 옵션 설정, 여러 프로그래밍 언어용 코드 스니펫 생성을 지원합니다. 모든 처리는 브라우저에서 로컬로 수행되어 개인정보가 완벽하게 보호됩니다.
Base64 작동 원리
바이너리를 텍스트로 변환하는 방법
Base64는 64개의 안전한 ASCII 문자(A-Z, a-z, 0-9, +, /)를 사용하여 바이너리 데이터를 텍스트로 표현합니다. 3바이트(24비트)의 원본 데이터를 4개의 6비트 그룹으로 나누어 각각을 하나의 Base64 문자로 매핑합니다.
인코딩 과정 예시: "Hi"
Base64 문자 테이블
값 0-25: A-Z | 값 26-51: a-z | 값 52-61: 0-9 | 값 62: + | 값 63: /
패딩: = (입력 길이가 3의 배수가 아닐 때 사용)
입력 1바이트
출력: 2문자 + ==
입력 2바이트
출력: 3문자 + =
입력 3바이트
출력: 4문자 (패딩 없음)
Base64 사용 사례
실무에서 Base64를 활용하는 방법
Data URL로 이미지 임베딩
작은 아이콘이나 로고를 HTML/CSS에 직접 포함하여 HTTP 요청 수를 줄입니다. Critical CSS나 이메일 템플릿에서 특히 유용합니다.
API 데이터 전송
JSON API에서 파일 업로드나 바이너리 데이터를 전송할 때 사용합니다. 텍스트 기반 프로토콜에서 안전하게 바이너리를 전달할 수 있습니다.
인증 토큰
JWT(JSON Web Token)는 Header와 Payload를 Base64URL로 인코딩합니다. Basic 인증에서도 username:password를 Base64로 전송합니다.
데이터 저장
바이너리 데이터를 텍스트 기반 데이터베이스나 설정 파일에 저장할 때 사용합니다. XML, JSON, YAML에 바이너리를 포함시킬 수 있습니다.
Base64 변형
다양한 Base64 인코딩 방식
| 변형 | 문자 62/63 | 패딩 | 사용처 |
|---|---|---|---|
| 표준 (RFC 4648) | + / | = 필수 | MIME, 이메일 |
| URL-Safe | - _ | 선택적 | URL, JWT |
| MIME | + / | = 필수 | 이메일 (76자 줄바꿈) |
| Filename Safe | - _ | 제거 | 파일명 |
Data URL 스키마
Base64 데이터를 URL로 표현
Data URL은 파일 데이터를 URL 형태로 인라인 포함하는 방식입니다. HTML의 img, audio, video 태그와 CSS의 background-image 등에서 사용됩니다.
Data URL 형식
data:[<mediatype>][;base64],<data>예시
이미지: data:image/png;base64,iVBORw0KGgo...
JSON: data:application/json;base64,eyJuYW1l...
텍스트: data:text/plain;base64,SGVsbG8gV29y...
Data URL 사용 시 주의사항
- • 큰 파일은 HTML/CSS 파일 크기를 증가시켜 로딩 속도 저하
- • 브라우저 캐싱이 어려워 반복 로드 시 비효율적
- • IE8 이하에서는 32KB 제한
- • 작은 이미지(1-2KB 이하)에만 권장
프로그래밍 언어별 Base64
각 언어에서 Base64 다루기
JavaScript
// 인코딩
btoa('Hello') // "SGVsbG8="
// 디코딩
atob('SGVsbG8=') // "Hello"
// UTF-8 지원
btoa(unescape(encodeURIComponent('안녕')))Python
import base64
# 인코딩
base64.b64encode(b'Hello').decode()
# 디코딩
base64.b64decode('SGVsbG8=').decode()
# URL-safe
base64.urlsafe_b64encode(data)Java
import java.util.Base64; // 인코딩 Base64.getEncoder() .encodeToString(bytes); // 디코딩 Base64.getDecoder() .decode(base64String);
Node.js
// 인코딩
Buffer.from('Hello')
.toString('base64');
// 디코딩
Buffer.from(base64, 'base64')
.toString('utf8');성능 고려사항
Base64 사용 시 성능 영향
단점
- • 데이터 크기가 약 33% 증가
- • 인코딩/디코딩에 CPU 자원 소모
- • 캐싱 효율 저하 (인라인 데이터)
- • 큰 파일에서 메모리 사용량 증가
장점
- • HTTP 요청 수 감소 (인라인 사용 시)
- • 텍스트 기반 프로토콜과 호환
- • 바이너리 안전 전송 보장
- • 구현이 단순하고 표준화됨
권장 사항
- • 1-2KB 이하의 작은 이미지에만 Data URL 사용
- • 큰 파일은 별도 URL로 제공하고 캐싱 활용
- • Critical CSS에 아이콘 인라인으로 First Paint 개선
- • 스트리밍이 필요한 대용량 데이터는 별도 전송
보안 주의사항
Base64는 암호화가 아닙니다
중요: Base64 ≠ 암호화
Base64는 단순한 인코딩 방식으로, 누구나 쉽게 디코딩할 수 있습니다. 민감한 데이터를 Base64로 인코딩해서 "숨기는" 것은 보안이 아닙니다.
- • 비밀번호, API 키를 Base64로만 저장하지 마세요
- • 민감한 데이터는 반드시 AES 등 실제 암호화 사용
- • JWT의 Payload도 쉽게 읽을 수 있음을 인지
올바른 사용법
- • 바이너리 → 텍스트 변환 용도로만 사용
- • 데이터 전송/저장의 포맷 변환에 활용
- • 보안이 필요하면 암호화 후 Base64 인코딩
자주 묻는 질문 (FAQ)
Base64 관련 궁금증 해결
Q: Base64로 인코딩하면 데이터 크기가 얼마나 증가하나요?
약 33% 증가합니다. 3바이트가 4문자가 되므로 4/3 = 1.33배입니다. 추가로 줄바꿈이나 패딩이 포함되면 조금 더 증가할 수 있습니다.
Q: URL-safe Base64는 언제 사용하나요?
URL 파라미터, 파일명, JWT 토큰 등에서 사용합니다. 표준 Base64의 + / 문자가 URL에서 특수 의미를 가지므로 - _ 로 대체합니다.
Q: Base64 끝의 = 문자는 무엇인가요?
패딩(padding) 문자입니다. Base64는 4문자 단위로 출력하는데, 입력이 3바이트의 배수가 아니면 빈 공간을 =로 채웁니다.
Q: Base64로 한글을 인코딩하려면 어떻게 하나요?
UTF-8로 먼저 인코딩한 후 Base64로 변환합니다. JavaScript에서는 btoa(unescape(encodeURIComponent(text)))를 사용합니다.
Q: 이미지를 Base64로 변환하면 용량이 늘어나는데 왜 사용하나요?
작은 아이콘을 인라인으로 포함하면 추가 HTTP 요청을 줄일 수 있습니다. 하지만 큰 이미지는 별도 파일로 제공하는 것이 좋습니다.
Base64 마스터가 되셨습니다!
이제 Base64 인코딩의 원리부터 실무 활용까지 모두 익히셨습니다. 위의 도구를 사용하여 텍스트와 파일을 자유롭게 인코딩/디코딩하고, 다양한 프로그래밍 언어용 코드 스니펫을 생성해보세요. 모든 처리는 브라우저에서 로컬로 수행되어 데이터가 외부로 전송되지 않습니다.