使用方法
- 把 Base64 字符串粘贴到输入框,或点击“打开文件”载入包含 Base64 文本的文件。
- 保持文本输出并选择字符集(默认 UTF-8);如果是二进制数据,把输出切换为十六进制。
- 解码失败时查看错误提示,其中会给出第一个无效字符的位置。
- 复制解码结果,或将其下载保存。
解码器能接受哪些输入
解码是编码的逆过程:每个字符还原成 6 位数值,每 4 个字符组合成 3 个字节。实际遇到的 Base64 往往不够规范,因此本解码器的容错性较强:
- 空格和换行会被忽略,按行折断的 MIME 邮件正文和 PEM 内容可以直接粘贴。不过请先删掉
-----BEGIN和-----END这两行:其中的字母和短横线都是合法的 Base64 字符,会被当作数据解码。 - URL 安全格式中的
-和_与标准 Base64 中的+和/同样可以解码。 - 缺少填充也没有问题。只有长度为 4n + 1 的字符串会被拒绝,因为单独剩下的一个字符无法组成一个字节,这通常说明字符串被截断了。
- Data URI 同样可以直接粘贴,开头的
data:...;base64,前缀会在解码前自动去掉。
文本输出还是二进制输出
解码的结果始终是一串字节。如果原始内容是文本,保持文本输出并选择对应的字符集即可;如果原始内容是图片、PDF、压缩包、密钥或密文,换什么字符集都无法变成可读文字,此时可以把输出切换为十六进制查看字节,或者使用 Base64 转文件 和 Base64 转图片 预览并保存。从开头几个字符往往就能看出内容类型:
| Base64 开头 | 解码后的内容 |
|---|---|
iVBORw0KGgo | PNG 图片 |
/9j/ | JPEG 图片 |
R0lGOD | GIF 图片 |
JVBERi0 | PDF 文档 |
UEsDB | ZIP 压缩包,包括 DOCX、XLSX 和 JAR |
H4sI | gzip 压缩数据 |
eyJ | JSON 对象,例如 JWT 的头部 |
解码结果为什么是乱码
- 字符集不对。UTF-8 文本按 Windows-1252 读取时,é 会变成
é;GBK 或 Shift_JIS 文本按 UTF-8 读取时,会出现替换字符(�)。请选择文本原本使用的字符集,中文旧系统的数据通常是 GBK。 - 内容是二进制数据。满屏杂乱符号,只在开头附近夹着
PNG、PK之类的可读片段,说明内容是文件而不是文本。 - 压缩或加密的数据。gzip 数据流、Protocol Buffers 和密文都能正确解码,但本身就不是文本,用十六进制输出才能看清实际内容。
- 被编码了两次。如果结果本身还是 Base64,把它粘贴回输入框再解码一次即可。
在代码中解码 Base64
# Python
base64.b64decode(s).decode('utf-8')
// Node.js(同样接受 URL 安全格式)
Buffer.from(s, 'base64').toString('utf8')
// 浏览器:atob() 每个字节返回一个字符,需要再按 UTF-8 解码
new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))
# Linux 和 macOS 命令行
echo 'SGVsbG8=' | base64 --decode
编码规格
| 字母表 | A-Z a-z 0-9 + / |
|---|---|
| 输出体积 | 每 3 字节输出 4 个字符(约 133%) |
| 填充 | 用 = 补足到 4 的倍数 |
| 标准 | RFC 4648 第 4 节 |
| 区分大小写 | 是 |
编码示例
| 输入 (UTF-8) | 输出 |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
常见问题
为什么提示存在无效字符?
输入中含有 Base64 字母表以外的字符,例如引号、反斜杠,或者从 URL 中复制来的
%2B、%3D 等百分号转义。请去掉引号,或先对字符串进行 URL 解码。错误提示会给出第一个问题字符的位置。没有填充的 Base64 能解码吗?
可以。解码器不依赖末尾的
=,来自 JWT、URL 和各类 API 的无填充字符串都能正常解码。从 URL 中复制的 Base64 为什么解码结果不对?
Base64 未经转义直接放进查询字符串时,表单解码通常会把
+ 变成空格。本工具会忽略空格,这些字符就丢失了。请先把空格替换回 + 再解码;需要在 URL 中传递的值,建议改用 Base64URL。如何把 Base64 解码成图片或文件?
图片可以使用 Base64 转图片 预览和下载,PDF、压缩包、音频等文件可以使用 Base64 转文件。两者都会根据开头的字节自动识别文件类型。
我的 Base64 数据会上传到服务器吗?
不会。解码完全由浏览器中的 JavaScript 完成,输入内容不会离开你的设备。解码令牌、配置密钥或个人数据时,这一点尤其重要。