decode | inspect | copy

> base64 解码器 | paste | decode <

// 粘贴任意 Base64 字符串(标准、URL 安全或无填充),即刻解码为 UTF-8 文本。全部在浏览器内运行。

0 字符
[AUTO]

格式自动识别

自动识别 RFC 4648 标准 Base64、URL 安全 Base64 (-_) 与缺失填充,无需任何配置 — 粘贴即用。

[LOCAL]

100% 浏览器内

Base64 字符串不会离开您的设备。无服务器上传、无日志、无遥测。可安全处理令牌、凭证、私有数据。

[FAST]

即时解码

输入即解码。支持 UTF-8 多字节文本、emoji、JSON、XML、二进制 Base64。输入大小无限制。

// BASE64 解码原理

Base64 解码算法:

Base64 将 3 字节的二进制数据编码为 4 个 ASCII 字符,取自 64 个字符的字母表(A-Z、a-z、0-9、+、/)。解码是其逆过程:每个字符映射为 6 位数值,4 个 6 位数值组合回 3 个 8 位字节。填充字符 = 用于使编码长度为 4 的倍数。本解码器接受带填充、无填充、URL 安全三种输入,并以 UTF-8 文本返回结果。

解码示例:

输入  : SGVsbG8sIEJhc2U2NCE=
比特  : 01001000 01100101 01101100 01101100
         01101111 00101100 00100000 01000010
         01100001 01110011 01100101 00110110
         00110100 00100001
输出  : Hello, Base64!

常见解码场景:

  • >解码 JWT 的 header 与 payload(签名之前)
  • >读取 Base64 编码的邮件附件(MIME)
  • >查看 Base64 URL 参数与 OAuth state 令牌
  • >从 Data URI (data:text/plain;base64,...) 中提取文本
  • >调试将二进制包装为 Base64 的 API 响应

// 常见问题

如何在线解码 Base64 字符串?

将 Base64 字符串粘贴到上方的 输入 区域 — 自动解码(默认开启)会在您输入时立即执行,结果出现在 输出 区域。也可以点击 [DECODE] 按钮或按 Ctrl/Cmd + Enter。所有处理在本地浏览器完成,不会发送到服务器,因此粘贴 JWT、OAuth state 或机密数据都是安全的。

本解码器支持哪些 Base64 变体?

全部支持,自动识别:
标准 Base64 (RFC 4648) — 字母表 A-Z a-z 0-9 + /,以 = 填充。
URL 安全 Base64 (RFC 4648 §5) — 以 -_ 代替 +/。JWT、OAuth、Google API、AWS S3 预签名 URL 都使用此变体。
无填充 Base64 — 省略末尾 =。JWT 中常见,解码器需自动补齐填充。
容忍空白字符 — 解码前会去除 Base64 字符串中的换行、制表符和空格(处理邮件正文的 76 列折行)。

识别到的格式会以徽章形式显示在按钮下方。

为什么我的 Base64 解码后是乱码或报错?

解码失败多数由以下 5 种原因造成:

1. 输入根本不是 Base64。 很多人会把 Base64 与十六进制、Base32、URL 编码混淆。Base64 只使用 A-Z a-z 0-9 + / =(URL 安全则是 - _)。若含 %20 则是百分号编码;若全是 0-9 a-f 则很可能是十六进制。

2. 被截断。 Base64 在补齐填充后长度应为 4 的倍数。复制粘贴时漏掉末尾 == 会导致 "长度无效" 错误。本解码器会自动补齐,但严重截断仍会失败。

3. URL 安全与标准混用。 如果 +/-_ 全部出现,通常是字符串被损坏。

4. 双重编码。 某些数据被 Base64 编码了两次,解码一次得到乱码本身还是 Base64,再解码一次才得到最终文本。

5. 原始字节不是 UTF-8。 Base64 解码出的是字节。若原始内容是加密数据或 PNG 等原始二进制,文本展示必然是乱码 — 这属正常,需改用 Base64 转文件工具。

如何用此 Base64 解码器解码 JWT?

JWT 由三部分组成,用点分隔:header.payload.signature。三段都是 无填充的 URL 安全 Base64。检查 payload 的步骤:

1. 复制中间一段(两个点之间)。
2. 粘贴到上方解码器。自动解码会处理 URL 安全字母表并补齐填充。
3. 得到包含 isssubexpiat 等声明的 JSON payload。

第三段签名是 HMAC 或 RSA 的二进制输出,以文本显示必然是乱码 — 这是正常的。需要完整 JWT 检查与签名验证时,请使用专用的 JWT 解码器

安全提示:解码 JWT 并不等于验证 JWT。任何人都能读取 JWT 的 payload — 这是设计使然。签名证明令牌由发行方签发,需要用发行方的公钥或共享密钥单独验证。

如何在命令行(bash、PowerShell、Python)中解码 Base64?

主流平台都自带 Base64 解码器:

macOS / Linux (bash/zsh):
echo 'SGVsbG8=' | base64 -d — 输出 Hello。macOS 上若 -d 不可用,改用 -D。URL 安全输入先通过 tr '_-' '/+' 管道转换。

Windows PowerShell:
[Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('SGVsbG8='))

Python:
import base64
base64.b64decode('SGVsbG8=').decode('utf-8') # Hello
base64.urlsafe_b64decode(s + '===').decode() # URL 安全 + 自动补填充


Node.js:
Buffer.from('SGVsbG8=', 'base64').toString('utf-8')

浏览器 DevTools:
atob('SGVsbG8=') — 任意控制台均可。UTF-8 字符串需包裹 new TextDecoder().decode(Uint8Array.from(atob(s), c => c.charCodeAt(0)))

PHP: base64_decode('SGVsbG8=')
Ruby: Base64.decode64('SGVsbG8=')
Go: base64.StdEncoding.DecodeString("SGVsbG8=")

此 Base64 解码器解码敏感令牌和凭证安全吗?

是的 — 本解码器比服务端工具更安全,因为数据不会离开浏览器。 解码全部在设备本地的 JavaScript 中完成,使用原生 atob()TextDecoder API。无网络请求、无上传、无日志、无输入内容的埋点。可打开 DevTools 网络面板进行验证 — 会看到零请求。

不过 Base64 不是加密,只是编码。任何人拿到 Base64 字符串都能解码。因此虽然本工具安全,仍需:
• 不要分享未过期的 JWT 截图。
• 泄漏到日志、截图、聊天的凭证要轮换。
• OAuth state、CSRF token、Session ID 在失效前都按机密处理。

对 Base64 字符串本身敏感的企业或合规环境,可将此页离线保存(Cmd/Ctrl + S),加载一次后即可完全离网运行。

如何解码 'data:image/png;base64,iVBORw0KGgo...' 这样的 Base64 Data URI?

Data URI 语法为 data:[<mediatype>][;base64],<data>。只解码 payload 部分:

1. 找到逗号。逗号前是元数据(data:image/png;base64),逗号后是 Base64 编码的文件。
2. 只复制逗号后的部分粘贴到本解码器。
3. 对于二进制内容(PNG、JPG、PDF),解码结果是原始字节,文本显示必然是乱码 — 这属正常。
4. 查看 Data URI 图片:将完整data:... URI 粘贴到浏览器地址栏 — 浏览器会直接解码并渲染。
5. 保存为图片文件:使用我们的 Base64 转图片 工具,处理完整 Data URI 并下载 PNG/JPG/WebP。

Data URI 常见于:CSS background-image、内联 SVG 图标、邮件签名图片、JSON API 响应中嵌入的 PDF、Electron/VS Code 扩展图标包。

Base64 编码与解码有什么区别?

编码将任意二进制或文本数据转换为仅使用可打印字符的 ASCII 字符串 — 可在仅文本的通道(邮件、URL、JSON)中安全传输。解码是其逆过程:将 ASCII Base64 字符串还原为原始字节。

关键特性:
往返无损: decode(encode(x)) === x,不丢失任何数据。
非加密: 无任何保密性,任何人都能解码。
体积膨胀: 输出约比输入大 33%(3 字节 → 4 字节)。
应用场景: JWT、MIME 邮件附件、HTTP Basic 认证头、OAuth code、S3 预签名 URL、HTML/CSS 内联图片。

本页面专注于解码。反向转换(文本/文件 → Base64)请使用 Base64 编码器,图片转换请用 图片转 Base64

可以解码超大 Base64 字符串或文件吗?

可以,只受浏览器内存限制。输入长度无上限,我们在现代笔记本上已测试 50 MB Base64 字符串(解码后约 37 MB)。性能表现:

< 100 KB: 瞬时完成,无 UI 延迟。
1 – 10 MB: 耗时约 50–500 ms。
10 – 100 MB: 由于 atob 是同步的,浏览器可能短暂冻结 2–10 秒。请先关闭 auto-decode,再手动点击 [DECODE]。
> 100 MB: 会触及浏览器内存上限。GB 级别建议使用命令行(base64 -d)。

若解码结果是二进制文件(PNG、PDF、ZIP),文本输出区会显示乱码。要把字节存为文件,使用 Base64 转图片(处理图片),或命令行 echo '<base64>' | base64 -d > output.bin

此 Base64 解码器能离线使用吗?

可以。页面加载一次后,所有解码都在客户端 JavaScript 中完成,无需网络。要完全离线:

1. 保存页面: 按 Ctrl+S(Windows/Linux)或 Cmd+S(macOS),选择 "网页,完整"。解码器从本地 HTML 即可运行。
2. 安装为 PWA(支持的浏览器): 选择 "安装此应用" — 获得可离线访问的启动器。
3. DevTools: 原生 atob() 在任意浏览器控制台都可用,快速解码 atob('SGVsbG8=')

适用场景:气隙安全研究、渗透测试实验室、严格数据出境管控的企业环境,以及没有网络的航班和列车。

// RELATED TOOLS

// OTHER LANGUAGES