Base64 编码
免费在线 Base64 编码解码工具,支持 UTF-8/ASCII/ISO-8859-1 字符集,Standard/URL-Safe/MIME 三种变体。实时显示体积膨胀率,MIME 换行符合 RFC 2045 标准。
免费在线 Base64 编码解码工具,支持 UTF-8/ASCII/ISO-8859-1 字符集,Standard/URL-Safe/MIME 三种变体。实时显示体积膨胀率,MIME 换行符合 RFC 2045 标准。
不是。Base64 只是将文本转换为另一种可逆的表示形式,任何人都可以解码回原文。如果涉及敏感数据(密码、Token),请使用 AES 等真正的加密方案。Base64 只适合数据格式转换,便于文本系统传输二进制数据。
AES 加密工具Base64 编码会使原始数据体积增大约 33%。这是因为每 3 个字节(24 位)被编码为 4 个 Base64 字符。例如 100 字节的文本编码后约为 133 字节。工具底部会实时显示膨胀率,方便您评估数据大小。示例:`Hello` → `SGVsbG8=`(体积 +33%)。
Base64 统计工具Standard 是标准 Base64,使用 A-Z、a-z、0-9、+、/ 字符。URL-Safe 将 +/ 替换为 -_,适合 URL 参数和 JWT Token。MIME 在每 76 字符处插入换行,符合 RFC 2045 邮件传输标准,适合邮件附件和多行文本。
URL-Safe Base64MIME Base64JWT 使用 Base64URL 编码(URL-Safe 变体)。选择 URL-Safe 模式后,直接粘贴 JWT 的第一段(header)或第二段(payload)即可解码。注意 JWT 第三段是签名,不应解码验证。
JWT 工具Base64 编码结果长度必须是 4 的倍数。当输入长度不是 3 的倍数时,会用 = 字符填充。URL-Safe 变体不使用 padding。工具自动处理 padding,解码时也会自动去除 = 字符。
Base64 Padding 工具btoa 和 atob 是浏览器原生 API,它们操作的是 Latin-1(ISO-8859-1)字符集,每个字符占 1 字节。中文字符在 UTF-8 中占 3 字节,直接传入会报错。解决方法是先用 encodeURIComponent 将中文转为 UTF-8 字节序列的 %xx 格式,再用 unescape 转为 Latin-1 字符串,最后用 btoa 编码。
Data URI 是一种将数据直接内嵌在 URL 中的 URI 格式,语法为:`data:[<mediatype>][;base64],<data>`。例如 `data:image/png;base64,iVBORw0KGgo...`。常用于内嵌小图标、CSS 背景图等,减少 HTTP 请求数。但 Base64 会使体积增大 33%,因此只适合小文件,大文件仍应使用普通 URL。
Data URI 工具Base64 转图片Base64 是一种基于 64 个可打印 ASCII 字符的二进制到文本的编码方案,由 RFC 2045(MIME 标准)首次定义。Base64 将每 3 个字节(24 位)转换为 4 个 Base64 字符(A-Z、a-z、0-9、+、/),使二进制数据能够安全地通过仅支持文本的系统传输,如 HTTP header、JSON 载荷、XML 文档或 URL 查询参数。
**Base64 不是加密**,它只提供数据格式转换,任何人都可以轻松解码。如果需要保护敏感数据,请使用 AES 等真正的加密方案。Base64 的典型用途包括:HTTP Basic Authentication(`Authorization: Basic dXNlcjpwYXNz`)、JWT Token 的 header 和 payload 段(Base64URL 格式)、Data URI(`data:image/png;base64,...`)、邮件附件 MIME 编码等。
**URL-Safe Base64**(RFC 4648 §5)将标准 Base64 的 +/ 替换为 -_,并通常省略 padding 的 =。这使得编码结果可以安全地出现在 URL、文件路径或 JSON 字段中。JWT Token、OAuth PKCE 的 code_verifier、AWS Signature V4 都使用 URL-Safe Base64 编码。
**MIME 折行**是 RFC 2045 规定的每行不超过 76 个字符的标准。当 Base64 内容用于电子邮件或某些需要分行展示的场景时,MIME 变体会自动在每 76 字符处插入换行符(`\n`)。这是电子邮件附件传输的标准格式。
工具使用浏览器原生的 **btoa/atob API**,配合 UTF-8 安全的处理逻辑,确保中文字符、日文 emoji 等多字节字符正确编码。所有计算在本地完成,数据不发送到任何服务器。打开浏览器开发者工具的网络面板,可以验证全程无任何外网请求。
| 特性 | Standard | URL-Safe | MIME |
|---|---|---|---|
| 特殊字符 | + / | - _ | + / |
| Padding(=) | 使用 | 通常省略 | 使用 |
| 换行 | 无 | 无 | 每76字符换行 |
| 标准 | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| 典型场景 | Data URI、通用编码 | JWT、URL参数、文件名 | 邮件附件、SMTP传输 |
| 编码 | 字符数 | 字符集特点 | 体积膨胀 | 典型用途 |
|---|---|---|---|---|
Base16 (Hex) | 16 | 0-9, A-F | 100% | 调试、哈希展示 |
Base32 | 32 | A-Z, 2-7(大写不混淆) | 60% | DNS、TOTP密钥、QR码 |
Base58 | 58 | 去掉易混淆字符0/O/I/l | 38% | 比特币地址、加密货币 |
Base62 | 62 | A-Z, a-z, 0-9 | 34% | URL短链、ID编码 |
Base64 | 64 | A-Z, a-z, 0-9, +, / | 33% | Data URI、MIME、JWT(URL-Safe变体) |
// 编码(支持 UTF-8 中文)
function b64Encode(str) {
return btoa(unescape(encodeURIComponent(str)));
}
// 解码(支持 UTF-8 中文)
function b64Decode(str) {
return decodeURIComponent(escape(atob(str)));
}
// URL-Safe 编码(用于 JWT / OAuth)
function b64UrlEncode(str) {
return btoa(unescape(encodeURIComponent(str)))
.replace(/\+/g, '-')
.replace(/\//g, '_')
.replace(/=+$/, '');
}
console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界import base64
# Standard 编码(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode()) # SGVsbG8g5LiW55WM
# Standard 解码
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded) # Hello 世界
# URL-Safe 编码(用于 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode()) # SGVsbG8g5LiW55WM(无 padding 需手动去除)
# 去除 padding(JWT 标准做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String text = "Hello 世界";
// Standard 编码
String encoded = Base64.getEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(encoded); // SGVsbG8g5LiW55WM
// Standard 解码
String decoded = new String(
Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
System.out.println(decoded); // Hello 世界
// URL-Safe 编码(用于 JWT / URL)
String urlSafe = Base64.getUrlEncoder().withoutPadding()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
System.out.println(urlSafe);
// MIME 编码(76字符换行)
String mime = Base64.getMimeEncoder()
.encodeToString(text.getBytes(StandardCharsets.UTF_8));
}
}