Base64 编码
免费在线 Base64 编码解码工具,支持 UTF-8、ASCII、ISO-8859-1,以及 Standard、URL-Safe、MIME 三种变体。实时显示体积膨胀率,支持符合 RFC 2045 的 MIME 折行,所有处理都在浏览器本地完成。
相关推荐
什么是 Base64 编码?
Base64 是一种基于 64 个可打印 ASCII 字符的二进制转文本编码方案,最早由 RFC 2045(MIME 标准)定义。它会把每 3 个字节(24 位)转换成 4 个 Base64 字符(A-Z、a-z、0-9、+、/),从而让二进制数据可以安全地通过只支持文本的系统传输,例如 HTTP 请求头、JSON 载荷、XML 文档或 URL 查询参数。
**Base64 不是加密。** 它只是在转换数据格式,任何人都可以把结果解码回原文。如果你需要保护敏感数据,请使用 AES 等真正的加密方案。Base64 的常见用途包括:HTTP Basic Authentication(`Authorization: Basic dXNlcjpwYXNz`)、JWT 的 header 和 payload 段(Base64URL 格式)、Data URI(`data:image/png;base64,...`),以及邮件附件的 MIME 编码。
**URL-Safe Base64**(RFC 4648 §5)会把标准 Base64 中的 + 和 / 替换成 - 和 _,并且通常省略 = padding。这样编码结果就可以安全地放进 URL、文件路径或 JSON 字段里。JWT、OAuth PKCE 的 `code_verifier` 以及 AWS Signature V4 都依赖 URL-Safe Base64。
**MIME 折行**是 RFC 2045 规定的规则:每一行都不应超过 76 个字符。当 Base64 内容用于电子邮件或其他需要分行展示的场景时,MIME 变体会每 76 个字符自动插入一个换行符(`\n`)。这也是邮件附件传输时的标准格式。
本工具使用浏览器原生的 **btoa / atob** API,并配合对 UTF-8 安全的处理逻辑,确保中文、日文 emoji 等多字节字符也能正确编码。所有计算都在本地完成,数据不会发送到任何服务器。你甚至可以打开浏览器开发者工具的 Network 面板,验证整个过程没有任何外发请求。
适用场景
- JWT 调试:解码 JWT 的 header 和 payload 段(Base64URL 格式),查看 token 中的声明内容
- Basic Auth:把 `username:password` 编码成 HTTP Basic 认证凭证
- OAuth 开发:为 PKCE 流程生成 `code_verifier`,或检查传入的 `code_challenge`
- API 调试:对 JSON 数据做 Base64 编码,或解码 API 返回的 Base64 字段
- Data URI 内嵌图片:把小图标转成 `data:image/...;base64,...` 格式,直接嵌入 CSS 或 HTML
- 邮件附件编码:使用 MIME Base64 格式编码二进制邮件附件
使用方法
- 选择模式:点击 Encode 或 Decode,确定当前是编码还是解码
- 选择变体:按需切换 Standard、URL-Safe(适用于 JWT / OAuth)或 MIME(适用于邮件格式 76 字符折行)
- 输入内容:粘贴文本或 Base64 字符串,工具会实时开始处理
- 查看统计:底部会显示字符数和体积膨胀率(编码时通常约为 +33%)
- 复制结果:一键复制 Base64 字符串或解码后的文本
功能特点
- 一键切换编码 / 解码:可随时在编码和解码模式之间切换,输出结果还能继续作为下一轮输入
- 三种字符集支持:UTF-8(中文 / 日文 / emoji)、ASCII、ISO-8859-1,覆盖常见开发与调试场景
- 三种输出变体:Standard、URL-Safe(适用于 JWT / OAuth / PKCE)和 MIME(符合 RFC 2045 的 76 字符折行)
- 实时体积统计:即时显示输入 / 输出字符数和膨胀率(Base64 通常会让体积增加约 33%)
- 友好错误提示:字符超出支持范围时提供明确、具体的报错信息,而不是笼统失败
- 桌面端可拖拽分隔线:自由调整左右编辑区比例,更方便聚焦当前任务
- 移动端独立标签页:手机和平板可分别切换输入区和输出区,操作更顺手
代码示例
JavaScript 中的 Base64 编码(支持中文 UTF-8)
// 编码(支持 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 世界Python 中的 Base64 编码
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)Java 中的 Base64 编码
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));
}
}常见问题
Base64 编码和加密是一回事吗?
不是。Base64 只是将文本转换为另一种可逆的表示形式,任何人都可以解码回原文。如果涉及敏感数据(密码、Token),请使用 AES 等真正的加密方案。Base64 只适合数据格式转换,便于文本系统传输二进制数据。
AES 加密工具Base64 编码后体积会增大多少?
Base64 编码会使原始数据体积增大约 33%。这是因为每 3 个字节(24 位)被编码为 4 个 Base64 字符。例如 100 字节的文本编码后约为 133 字节。工具底部会实时显示膨胀率,方便您评估数据大小。示例:`Hello` → `SGVsbG8=`(体积 +33%)。
Base64 统计工具Standard、URL-Safe、MIME 三种变体有什么区别?
Standard 是标准 Base64,使用 A-Z、a-z、0-9、+、/ 字符。URL-Safe 将 +/ 替换为 -_,适合 URL 参数和 JWT Token。MIME 在每 76 字符处插入换行,符合 RFC 2045 邮件传输标准,适合邮件附件和多行文本。
URL-Safe Base64MIME Base64如何解码 JWT 的 header 或 payload?
JWT 使用 Base64URL 编码(URL-Safe 变体)。选择 URL-Safe 模式后,直接粘贴 JWT 的第一段(header)或第二段(payload)即可解码。注意 JWT 第三段是签名,不应解码验证。
JWT 工具什么是 Base64 的 Padding(填充)?
Base64 编码结果长度必须是 4 的倍数。当输入字节数不是 3 的倍数时,末尾会用 = 字符补齐。URL-Safe 变体通常不使用 padding。工具会自动处理 padding,解码时也会自动去掉末尾的 = 字符。
Base64 Padding 工具JavaScript 中的 btoa 和 atob 为什么不支持中文?
btoa 和 atob 是浏览器原生 API,它们操作的是 Latin-1(ISO-8859-1)字符集,每个字符占 1 字节。中文字符在 UTF-8 中占 3 字节,直接传入会报错。解决方法是先用 encodeURIComponent 将中文转为 UTF-8 字节序列的 %xx 格式,再用 unescape 转为 Latin-1 字符串,最后用 btoa 编码。
什么是 Data URI Scheme?怎么用 Base64 内嵌图片?
Data URI 是一种将数据直接内嵌在 URL 中的 URI 格式,语法为:`data:[<mediatype>][;base64],<data>`。例如 `data:image/png;base64,iVBORw0KGgo...`。常用于内嵌小图标、CSS 背景图等,减少 HTTP 请求数。但 Base64 会使体积增大 33%,因此只适合小文件,大文件仍应使用普通 URL。
Data URI 工具Base64 转图片术语表
- RFC 4648
- IETF 发布的 Base16/Base32/Base64 编码官方标准,定义了标准 Base64 和 URL-Safe Base64 两种字母表,以及 padding、换行、非字母表字符处理等规则。是目前 Base64 编码的事实标准,替代了早期的 RFC 3548。URL-Safe Base64 工具Base64 Padding 工具
- RFC 2045 (MIME)
- 多用途互联网邮件扩展(MIME)标准,首次将 Base64 作为邮件内容传输编码方式。规定 Base64 编码每行不超过 76 个字符并以 CRLF 换行,即 MIME Base64 变体。MIME Base64 工具
- Base64URL(URL-Safe Base64)
- RFC 4648 §5 定义的 URL 安全变体。将标准 Base64 的 + 替换为 -、/ 替换为 _,并通常省略 padding 的 = 字符。广泛用于 JWT Token、OAuth PKCE、URL 参数、文件名等场景。URL-Safe Base64 工具JWT 工具
- MIME Base64
- 符合 RFC 2045 标准的 Base64 变体,每 76 个字符插入一个换行符(CRLF)。主要用于电子邮件附件传输,因早期 SMTP 协议对单行长度有限制。MIME Base64 工具
- Padding(填充)
- Base64 编码结果长度必须是 4 的倍数。当输入字节数不是 3 的倍数时,末尾用 = 字符补齐。标准 Base64 使用 padding,Base64URL 通常省略 padding。Base64 Padding 工具
- Base64 字母表(Alphabet)
- Base64 编码使用的 64 个字符集合。标准 Base64 字母表为:A-Z(26个)、a-z(26个)、0-9(10个)、+、/,共 64 个字符,外加填充字符 =。
- btoa / atob
- 浏览器原生的 Base64 编码/解码 API。btoa(binary to ASCII)用于编码,atob(ASCII to binary)用于解码。注意这两个 API 只支持 Latin-1 字符集,处理中文需配合 UTF-8 转码。
- Data URI Scheme
- 一种 URI 格式,允许将小文件直接内嵌在 URL 中,格式为 data:[<mediatype>][;base64],<data>。常用于内嵌小图标、CSS 背景图等,减少 HTTP 请求。Data URI 工具Base64 转图片
- HTTP Basic Authentication
- HTTP 协议中的一种认证方式,将用户名和密码用冒号连接后进行 Base64 编码,放在 Authorization 请求头中传输。格式为:Authorization: Basic <base64(username:password)>。Auth Header 构建器
- Base64 膨胀率
- Base64 编码后数据体积增加的比例。每 3 字节(24位)编码为 4 个 Base64 字符,因此体积增大约 33%(4/3 ≈ 1.333)。加上 padding 时膨胀率会略高。
Base64 三种变体对比
| 特性 | Standard | URL-Safe | MIME |
|---|---|---|---|
| 特殊字符 | + / | - _ | + / |
| Padding(=) | 使用 | 通常省略 | 使用 |
| 换行 | 无 | 无 | 每76字符换行 |
| 标准 | RFC 4648 §4 | RFC 4648 §5 | RFC 2045 |
| 典型场景 | Data URI、通用编码 | JWT、URL参数、文件名 | 邮件附件、SMTP传输 |
Base 系列编码对比表
| 编码 | 字符数 | 字符集特点 | 体积膨胀 | 典型用途 |
|---|---|---|---|---|
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变体) |
Authoritative References
- ReferenceRFC 4648 - The Base16, Base32, and Base64 Data Encodings
- ReferenceRFC 2045 - MIME Part One: Format of Internet Message Bodies
- ReferenceRFC 7519 - JSON Web Token (JWT)
- ReferenceMDN Web Docs - btoa()
- ReferenceMDN Web Docs - atob()
- ReferenceWikipedia - Base64
- 安全字符串比较
- 二进制编码解码
- 凯撒密码
- 摩尔斯电码
- 十六进制编码解码
- 视频转 Base64
- Base64 转视频
- 图片转 Base64
- Base64 转图片
- 文本转 Base64
- Base64 转文本
- 文件哈希校验
- 文件转 Base64
- Base64 转文件
- 音频转Base64
- Base64转音频
- AES 加密解密
- DES 加密解密
- Base32 编码解码
- Base58 编码解码
- Base64 编码
- Base64 解码
- Base64 比较
- Base64 拆分
- Base64 多行合并
- Base64 格式化
- Base64 格式校验
- Base64 批量编码
- Base64 批量解码
- Base64 清理
- Base64 填充处理
- Base64 长度统计
- Base64 转十六进制
- Base64 DataURL 转换
- Base64-Hex 互转
- Base85 编码解码
- HMAC 生成与验证
- PBKDF2 密钥派生
- MD5 哈希值
- SHA-256 哈希
- SHA1 哈希
- SHA512 哈希
- JWT 解码、验证与生成
- HTML 编码解码
- Unicode 转义
- URL 编码
- URL Safe Base64
- MIME Base64
- Java 代码混淆
- JavaScript 代码混淆
- PHP 混淆
- Python混淆