Base64 Encoder and Decoder
A free online Base64 encoder and decoder for quick encoding and decoding, with convenient features like UTF-8 support, secure copy, and clear.
인코딩 (텍스트 → Base64)
디코딩 (Base64 → 텍스트)
사용 방법
Base64는 이진 데이터를 ASCII 형식으로 인코딩하여 전송 및 저장을 용이하게 합니다. 크기는 약 33% 증가합니다.
인코딩: 일반 텍스트를 Base64로 변환하여 더 안전하게 전송합니다.
디코딩: Base64 문자열에서 원본 텍스트를 복원합니다.
기능
- UTF-8 안전성: 비ASCII 문자를 올바르게 처리합니다 (encodeURIComponent/unescape로 감싸짐).
- URL-safe 지원: 한 번의 클릭으로 + / → - _ 로 전환, 패딩 = 선택적 제거 가능.
- 디코딩 전 처리: 공백 무시, URL-safe 복원, 자동으로 = 채우기를 지원합니다.
- 실시간 상호작용: 입력 시 자동 처리, 길이 및 증가율 통계를 실시간으로 표시합니다.
- 사용성: 빠른 복사, 결과 간 자동 채우기, 키보드 접근성, 모바일 친화적 설계.
- 일관된 테마: Tailwind의 dark: 클래스를 사용하지 않고, DaisyUI 테마만으로 구현되었습니다.
Base64란?
Base64는 이진 데이터를 ASCII 텍스트로 인코딩하는 방식으로, 이미지나 파일 콘텐츠를 JSON, XML, HTTP 같은 텍스트 기반 프로토콜에서 전송할 때 자주 사용됩니다.
이 방법은 3바이트를 4개의 출력 가능한 문자로 매핑하며, 일반적으로 약 33%의 크기 증가를 초래합니다.
표준 Base64는 A–Z, a–z, 0–9, +, / 및 패딩 문자 =을 사용하며, URL 안전 버전은 +와 /를 각각 -와 _로 대체하여 URL 내에서 이스케이프 문제를 방지합니다.
주요 사용 사례
- 이미지 또는 작은 파일을 Data URI로 임베드합니다.
- 암호화된 텍스트나 압축 스트림과 같은 이진 데이터를 클라이언트와 서버 간에 전송합니다.
- 인코딩 불일치나 보이지 않는 문자 문제를 피하기 위해 텍스트를 출력 가능한 형식으로 변환합니다.
자주 묻는 질문 및 주의사항
- 문자 집합: 웹 환경에서는 텍스트를 먼저 UTF-8로 처리하세요 (이 도구는 내장되어 있습니다).
- URL 안전: URL 매개변수나 경로에는 URL 안전 버전을 사용하고, 패딩을 제거하는 것을 권장합니다.
- 패딩: 일부 구현에서는 =을 생략할 수 있으며, 디코딩 시 4의 배수로 자동 채워야 합니다.
- 줄 바꿈: MIME Base64는 줄 바꿈을 포함할 수 있으므로, "공백 무시" 옵션을 선택하세요.
프로그래밍 언어로 Base64 인코딩/디코딩하는 방법
JavaScript
텍스트 → Base64 (UTF-8 안전)
const encoded = btoa(unescape(encodeURIComponent(text)));
// URL 안전
const urlSafe = encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
디코딩 (Base64 → 텍스트)
// 사전 처리: -_를 +/로 교체 가능
let b64 = input.replace(/-/g, '+').replace(/_/g, '/');
if (b64.length % 4 !== 0) b64 = b64.padEnd(b64.length + (4 - (b64.length % 4)), '=');
const text = decodeURIComponent(escape(atob(b64)));
PHP
인코딩 (텍스트 → Base64)
$encoded = base64_encode($text);
// URL 안전
$urlSafe = rtrim(strtr($encoded, '+/', '-_'), '=');
디코딩 (Base64 → 텍스트)
$b64 = strtr($input, '-_', '+/');
// '=' 자동 채우기
if (strlen($b64) % 4 !== 0) $b64 .= str_repeat('=', 4 - (strlen($b64) % 4));
$text = base64_decode($b64);
Python
인코딩 (텍스트 → Base64)
import base64
encoded = base64.b64encode(text.encode('utf-8')).decode('ascii')
# URL 안전 인코딩 (패딩 제거)
url_safe = encoded.replace('+','-').replace('/','_').rstrip('=')
디코딩 (Base64 → 텍스트)
import base64
def b64_decode(s: str) -> str:
s = s.replace('-','+').replace('_','/')
s += '=' * (-len(s) % 4) # '=' 자동 채우기
return base64.b64decode(s).decode('utf-8')
Go
인코딩 (텍스트 → Base64)
import (
"encoding/base64"
)
enc := base64.StdEncoding.EncodeToString([]byte(text))
// URL 안전 인코딩 (패딩 없음)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
디코딩 (Base64 → 텍스트)
import (
"encoding/base64"
)
decBytes, err := base64.StdEncoding.DecodeString(enc)
// URL 안전 디코딩 (패딩 없음)
decURL, err2 := base64.RawURLEncoding.DecodeString(urlEnc)
Rust
인코딩 (텍스트 → Base64)
use base64::{engine::general_purpose, Engine as _};
let enc = general_purpose::STANDARD.encode(text.as_bytes());
// URL 안전 인코딩 (패딩 없음)
let url_enc = general_purpose::URL_SAFE_NO_PAD.encode(text.as_bytes());
디코딩 (Base64 → 텍스트)
use base64::{engine::general_purpose, Engine as _};
let dec_bytes = general_purpose::STANDARD.decode(&enc).unwrap();
let dec = String::from_utf8(dec_bytes).unwrap();
let url_dec = String::from_utf8(
general_purpose::URL_SAFE_NO_PAD.decode(&url_enc).unwrap()
).unwrap();
Cargo 의존성: base64 = "0.22"
Java
인코딩 (텍스트 → Base64)
import java.nio.charset.StandardCharsets;
import java.util.Base64;
String enc = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
// URL 안전 인코딩 (패딩 없음)
String urlEnc = Base64.getUrlEncoder().withoutPadding().encodeToString(text.getBytes(StandardCharsets.UTF_8));
디코딩 (Base64 → 텍스트)
import java.nio.charset.StandardCharsets;
import java.util.Base64;
String dec = new String(Base64.getDecoder().decode(enc), StandardCharsets.UTF_8);
String urlDec = new String(Base64.getUrlDecoder().decode(urlEnc), StandardCharsets.UTF_8);