Base64 解码

粘贴 Base64 字符串,即可还原出原始文本或字节。换行、URL 安全字符、缺失的填充和 data: 前缀都会自动处理,出错时会指出具体是哪个字符。

完全在浏览器中运行,不会上传任何数据。

使用方法

  1. 把 Base64 字符串粘贴到输入框,或点击“打开文件”载入包含 Base64 文本的文件。
  2. 保持文本输出并选择字符集(默认 UTF-8);如果是二进制数据,把输出切换为十六进制。
  3. 解码失败时查看错误提示,其中会给出第一个无效字符的位置。
  4. 复制解码结果,或将其下载保存。

解码器能接受哪些输入

解码是编码的逆过程:每个字符还原成 6 位数值,每 4 个字符组合成 3 个字节。实际遇到的 Base64 往往不够规范,因此本解码器的容错性较强:

  • 空格和换行会被忽略,按行折断的 MIME 邮件正文和 PEM 内容可以直接粘贴。不过请先删掉 -----BEGIN 和 -----END 这两行:其中的字母和短横线都是合法的 Base64 字符,会被当作数据解码。
  • URL 安全格式中的 - 和 _ 与标准 Base64 中的 + 和 / 同样可以解码。
  • 缺少填充也没有问题。只有长度为 4n + 1 的字符串会被拒绝,因为单独剩下的一个字符无法组成一个字节,这通常说明字符串被截断了。
  • Data URI 同样可以直接粘贴,开头的 data:...;base64, 前缀会在解码前自动去掉。

文本输出还是二进制输出

解码的结果始终是一串字节。如果原始内容是文本,保持文本输出并选择对应的字符集即可;如果原始内容是图片、PDF、压缩包、密钥或密文,换什么字符集都无法变成可读文字,此时可以把输出切换为十六进制查看字节,或者使用 Base64 转文件 和 Base64 转图片 预览并保存。从开头几个字符往往就能看出内容类型:

Base64 开头解码后的内容
iVBORw0KGgoPNG 图片
/9j/JPEG 图片
R0lGODGIF 图片
JVBERi0PDF 文档
UEsDBZIP 压缩包,包括 DOCX、XLSX 和 JAR
H4sIgzip 压缩数据
eyJJSON 对象,例如 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.isQmFzZTY0Lmlz
你好5L2g5aW9

常见问题

为什么提示存在无效字符?
输入中含有 Base64 字母表以外的字符,例如引号、反斜杠,或者从 URL 中复制来的 %2B、%3D 等百分号转义。请去掉引号,或先对字符串进行 URL 解码。错误提示会给出第一个问题字符的位置。
没有填充的 Base64 能解码吗?
可以。解码器不依赖末尾的 =,来自 JWT、URL 和各类 API 的无填充字符串都能正常解码。
从 URL 中复制的 Base64 为什么解码结果不对?
Base64 未经转义直接放进查询字符串时,表单解码通常会把 + 变成空格。本工具会忽略空格,这些字符就丢失了。请先把空格替换回 + 再解码;需要在 URL 中传递的值,建议改用 Base64URL。
如何把 Base64 解码成图片或文件?
图片可以使用 Base64 转图片 预览和下载,PDF、压缩包、音频等文件可以使用 Base64 转文件。两者都会根据开头的字节自动识别文件类型。
我的 Base64 数据会上传到服务器吗?

不会。解码完全由浏览器中的 JavaScript 完成,输入内容不会离开你的设备。解码令牌、配置密钥或个人数据时,这一点尤其重要。