Base64解码器

解码Base64编码的文本

Base64输入

解码文本

本地运行 · 粘贴密钥安全无忧
解码输出...

什么是 Base64 解码?

Base64 解码是 Base64 编码的逆过程:它将 Base64 编码的 ASCII 字符串转换回原始二进制数据或文本。每 4 个 Base64 字符解码为原始数据的 3 个字节。解码器在 Base64 字母表中查找每个字符,重建原始的 6 位组,并将其重新组合为 8 位字节。

Base64编码的数据具有明显特征:由大小写字母、数字以及+/(标准)或-_(URL安全)组成,末尾通常带有一个或两个填充字符=。它广泛出现在JWT令牌、电子邮件附件、data URI、API响应和配置文件中——凡是需要在纯文本环境中嵌入二进制或结构化数据的地方都能见到它。

为什么使用此工具?

此解码器处理标准和 URL-safe Base64,自动修复缺失的填充,并完全在浏览器中解码,不会向服务器发送任何数据。

自动修复填充
许多来源生成的 Base64 不带尾部 = 字符。此工具在解码前自动计算并添加缺失的填充,防止出现 InvalidCharacterError 异常。
🛡️
支持两种变体
自动检测并处理标准 Base64(+/)和 URL-safe Base64(-_),因此您可以粘贴来自任何来源的令牌,无需手动转换。
🔒
完全在客户端运行
解码使用原生 atob API 在您的浏览器本地进行。您的数据——可能包含密钥或敏感内容——永远不会离开您的设备。
🌐
Unicode 输出
正确地将 UTF-8 编码的文本解码回完整的 Unicode,包括多字节字符、表情符号和 CJK 文字。

如何使用这个在线 Base64 解码器

无需账号、无需上传、无需安装。将 Base64 字符串粘贴到输入框,解码结果即刻呈现。一切在您的浏览器中运行——您的数据永远不会离开您的设备。

  1. 1
    粘贴您的 Base64 字符串
    从您的来源复制任意 Base64 编码字符串——JWT、API 响应、电子邮件附件头或配置文件——粘贴到输入框中。标准和 URL-safe 变体会被自动识别。
  2. 2
    自动识别与修复
    解码器会识别输入使用的是标准 Base64 (+/) 还是 URL-safe Base64 (-_),并自动补全缺失的 = 填充符。无需在解码前手动规范化字符串。
  3. 3
    检查输出结果
    解码后的文本显示在输出框中。如果原始数据是 UTF-8 文本,将以可读字符呈现。二进制数据按原样显示。若输入包含无法解码的无效字符,则显示错误信息。
  4. 4
    复制或使用结果
    点击复制以获取解码输出,或直接在您的工作流中使用。需要重新编码结果?点击一下即可切换到 Base64 Encoder 工具。

解码如何工作

每个 Base64 字符映射到一个 6 位值(0–63)。四个连续字符提供 24 位,解码为原始数据的 3 个字节。下面的示例展示了「TWFu」如何解码回「Man」:

示例 "Man" → TWFu → "Man"
字符索引6 位
T19010011
W22010110
F5000101
u46101110

四个 6 位组(010011 010110 000101 101110)连接为 24 位,然后分为三个 8 位字节:01001101(M=77)、01100001(a=97)、01101110(n=110)。

理解填充

Base64 编码以 3 个为一组对输入字节进行分组。当输入长度不能被 3 整除时,会添加填充字符(=)以完成最后一组。解码时,这些 = 字符会被去除,解码器知道要丢弃编码时添加的多余零位。

原始已编码填充规则
AQQ==1 byte → 2 padding chars
ABQUI=2 bytes → 1 padding char
ABCQUJD3 bytes → no padding needed

常见用例

检查 JWT 载荷
JWT 令牌由三个 URL-safe Base64 编码的段组成。解码第二段(载荷)可以看到声明:用户 ID、角色、过期时间和其他元数据——不需要签名密钥。
读取 API 响应
REST API 经常在 JSON 响应中以 Base64 编码形式返回二进制数据(文件内容、缩略图、加密材料)。解码该字段以读取原始数据。
解码电子邮件内容
MIME 电子邮件正文和附件使用 Base64 编码。解码它们可以还原原始文本内容或重建二进制附件。
提取 Kubernetes 密钥
Kubernetes 在 YAML 清单中将密钥值存储为 Base64。解码它们可以看到集群中存储的实际密码、令牌和密钥——对于调试和审计非常有用。
调试配置
环境变量和 CI/CD 流水线密钥通常以 Base64 编码形式安全存储在 YAML 或 JSON 配置文件中。解码它们以在调试时验证实际值。
解码 Data URI
Data URI 将 Base64 编码的资产直接嵌入 HTML/CSS 中。解码 Base64 部分以提取原始图像、字体或其他嵌入资源。

常见陷阱

以下是实践中 Base64 解码错误最常见的原因:

缺失填充
Base64 字符串的长度必须是 4 的倍数。许多 API 和 JWT 库为了紧凑性会去除尾部的 =。添加回填充:缺失的 = 数量为 (4 - 长度 % 4) % 4。
URL-safe 字符未转换
URL-safe Base64 使用 - 和 _ 代替 + 和 /。如果将 URL-safe Base64 直接传递给 atob() 或 base64.b64decode(),将会失败。使用标准库解码前,始终将 - → + 和 _ → / 进行替换。
空白字符和换行符
PEM 证书、MIME 数据和复制粘贴的 Base64 通常每 76 个字符包含一个换行符。解码前去除所有空白字符,以避免 InvalidCharacterError。
二进制输出与文本输出
Base64 可以编码任何二进制数据,而不仅仅是文本。如果原始数据是二进制文件(图像、PDF),将其解码为 UTF-8 文本将产生乱码。对于非文本载荷,请使用适当的二进制输出方法。

代码示例

如何在流行的语言和环境中对 Base64 字符串进行解码:

JavaScript (browser)
// Standard Base64
const decoded = decodeURIComponent(escape(atob(encoded)))

// URL-safe Base64 (restore padding first)
function decodeUrlSafe(str) {
  const padded = str.replace(/-/g, '+').replace(/_/g, '/')
  const pad = padded.length % 4
  return decodeURIComponent(escape(atob(padded + '='.repeat(pad ? 4 - pad : 0))))
}
Node.js
// Standard
const decoded = Buffer.from(encoded, 'base64').toString('utf8')

// URL-safe
const decoded = Buffer.from(encoded, 'base64url').toString('utf8')
Python
import base64

# Standard
decoded = base64.b64decode(encoded).decode('utf-8')

# URL-safe (add padding if missing)
padding = '=' * (-len(encoded) % 4)
decoded = base64.urlsafe_b64decode(encoded + padding).decode('utf-8')
CLI (bash)
# Standard
echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d

# URL-safe (restore + and / first)
echo "SGVsbG8sIFdvcmxkIQ" | tr '-_' '+/' | base64 -d

Base64 Decoder 与其他方案对比

多种工具均可解码 Base64,但在隐私性、速度和便捷性方面各有差异。

本工具
基于浏览器、即时响应、完全私密。不向任何服务器发送数据。支持标准和 URL-safe Base64,自动修复填充符,可离线使用。
CLI (base64 -d)
适合脚本和大型文件处理,速度快。需要终端环境。处理 URL-safe 输入时需手动规范化(-_ → +/)。
通用工具
Curl、Postman、浏览器 DevTools 以及在线转换器均可解码 Base64。便捷程度不一;部分工具会将数据发送至远程服务器。

常见问题

为什么解码后出现乱码?
最常见的原因是将二进制数据(图像、压缩文件)解码为 UTF-8 文本——二进制字节通常不构成有效的 Unicode 序列。另一个原因是用期望 +/ 的标准解码器解码 URL-safe Base64(-_)。检查您的来源使用的是哪种变体。
什么是 InvalidCharacterError?
atob() 的这个浏览器错误发生在输入包含 Base64 字母表以外的字符时,例如 URL-safe 字符(- 或 _)、空白字符、换行符或非 ASCII 字符。调用 atob() 前,去除空白字符并转换 URL-safe 字符。
如何判断我的 Base64 是 URL-safe 还是标准的?
查找 - 或 _ 字符:如果存在,则是 URL-safe Base64。标准 Base64 使用 + 和 /。URL-safe Base64 通常也省略填充字符 =。JWT 令牌始终使用 URL-safe Base64。
Base64 解码会静默失败吗?
会。某些解码器会静默忽略无效字符而不是抛出错误,从而产生不正确的输出。始终验证解码后的数据是否符合预期格式(JSON、图像标头等),而不是假设解码成功。
Base64 解码有大小限制吗?
此基于浏览器的工具可以处理几兆字节以内的 Base64 字符串,超过后界面会变慢。对于非常大的文件,请使用 CLI 工具或服务器端解码器。
为什么 Base64 以一个或两个 = 符号结尾?
= 是填充字符。Base64 将 3 个字节编码为 4 个字符。如果原始数据长度不是 3 的倍数,则会附加一个或两个 = 字符,使总输出长度成为 4 的倍数。一个 = 表示最后一组有 2 个输入字节;两个 == 表示有 1 个输入字节。
我可以解码二进制文件、图片或 PDF 吗?
可以,但输出将是原始二进制数据,以文本形式显示可能不正确。对于二进制内容,建议直接在 '<'img'>' 或 '<'a'>' 标签中使用 data URI,或通过脚本将解码后的字节保存到文件。
解码有大小限制吗?
本工具完全在浏览器端运行,没有服务器端限制。实际限制取决于您浏览器的内存。非常大的 Base64 字符串(超过几 MB)建议使用命令行工具处理,例如 base64 -d(Linux/macOS)或 certutil -decode(Windows)。