免费在线Base64编解码
帮助与说明
完整说明
Base64 是什么?
Base64 是一种 把二进制数据转换成文本 的编码方式。它会把字节(binary)映射成一组可打印的 ASCII 字符:
A-Z、a-z、0-9、+、/,以及用于补齐长度的=(padding)
因为输出是纯文本,Base64 常用于"只能放文本"的场景,例如:
- JSON / XML 载荷
- URL(通常用 Base64URL 变体)
- 电子邮件(MIME)
- 在文本格式中嵌入小文件
3 转 4 的映射原理
名字来自字母表大小:64 个字符,每个字符恰好表示 6 位数据(2⁶ = 64)。编码器按组工作:
- 取 3 字节输入 = 24 位。
- 拆成四个 6 位一组。
- 把每个 6 位值(0–63)映射到字母表中的一个字符。
"Man" = 0x4D 0x61 0x6E (3 字节,24 位)
010011 010110 000101 101110 → 19, 22, 5, 46 → T, W, F, u
结果:"TWFu"
当输入长度不是 3 的倍数时,最后一组用 padding 补齐:
- 剩 2 字节 → 补一个
=(16 位数据装进 3 个字符) - 剩 1 字节 → 补两个
==(8 位数据装进 2 个字符)
这就是你在很多字符串末尾看到 = 的全部由来——它存在的唯一目的就是让输出长度恒为 4 的倍数。
为什么输出总是大 33%
四个 6 位字符承载的位数和三个字节一样都是 24 位——但传输时每个字符要占满一个 8 位字节。于是 3 字节变成了 4 字节:固定的 +33.3% 膨胀。这就是为什么一个 3 MB 的附件 Base64 编码后是 4 MB 字符串,也是为什么永远不要对需要传输的大资源做 Base64。
Base64 编码的是字节,不是字符
Base64 的输入永远是字节序列。编码文本时,文本先被按某种编码转换成字节——在 Web 上几乎总是 UTF-8。"é" 在 UTF-8 里是 2 个字节、但只是 1 个字符;假设了不同编码(或按 UTF-16 码元处理)的工具会算出不同结果。这也解释了为什么把二进制数据(图片、ZIP)按文本解码会得到乱码:那些字节本来就不是 UTF-8 文本。
这个工具能做什么
在 Base64 页面(/zh/base64)你可以:
- 把文本编码成 Base64
- 把 Base64 解码回文本
- 快速判断一个字符串是否像 Base64
使用示例
编码字符串
输入:
hello world
输出(Base64):
aGVsbG8gd29ybGQ=
解码 Base64 字符串
输入:
aGVsbG8gd29ybGQ=
输出:
hello world
Data URI:当代最常见的 Base64 场景
开发者如今最常接触 Base64 的地方是 data URI,它把文件直接内联进文档:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..." />
什么时候划算:
- ✅ 2-4 KB 以下的小图片(图标、logo)——少一次 HTTP 请求
- ✅ 单文件交付物:HTML 邮件、独立报告、离线文档
- ✅ canvas 动态生成的图片,无需服务器往返
什么时候适得其反:
- ❌ 大图片——33% 体积膨胀,且没有压缩收益
- ❌ 跨页面重复使用——浏览器无法独立缓存这个内联资源
- ❌ 关键 CSS 路径——CSS 里一大段 base64 会阻塞所有用户的解析
一个常被忽视的点:HTTP/2 和 HTTP/3 的多路复用已经消除了"每个资源一次请求"的开销——那正是当初内联流行的理由。内联之前先做度量。
常见踩坑
1) Base64 不是加密
Base64 不保护你的数据。它只是改变表示方式——解码不需要任何秘密。任何拿到 Base64 字符串的人都能瞬间读出内容。
需要保密,请使用真正的加密(如 AES-GCM)并妥善保管密钥。
2) Padding 与换行
- 很多 Base64 字符串以
=或==结尾。 - 某些系统会每 76 个字符插入换行(邮件/MIME 场景)。解码前可能需要先移除空格/换行。
3) Base64 与 Base64URL
当 Base64 用在 URL 里时,+ 和 / 有时会引起问题。
Base64URL 通常会:
- 把
+替换为- - 把
/替换为_ - 去掉末尾的
=
如果你看到 - 或 _,那很可能是 Base64URL,而不是标准 Base64。JWT 是最大的使用方:它的三个分段全部是 Base64URL。
真实系统中的 Base64
| 场景 | 示例 |
|---|---|
| HTTP Basic Auth | Authorization: Basic dXNlcjpwYXNz |
| JWT | 每个点分隔的分段都是 Base64URL |
| 邮件附件 | MIME Content-Transfer-Encoding: base64 |
| Data URI | data:image/png;base64,... |
| 内嵌密钥/证书 | PEM 文件把 Base64 包在 -----BEGIN----- 标记之间 |
| Git 对象 | blob、commit、tag 的内部存储 |
隐私与安全
- 该工具设计为 在浏览器本地运行。
- 你的输入不应被上传。
即便如此:
- 不建议在公共/共享电脑上粘贴密码、私钥、身份证号等敏感信息。
- 高度敏感数据建议使用离线工具处理。
阿里云 AI Agent 零代码部署 · 68 元起
轻量服务器 + Token Plan 组合购,分钟级部署 OpenClaw/Hermes AI 助手,7×24 小时在线、不限流量、数据自主可控,支持 11 款主流大模型