Base64 编码器与解码器
将文本和文件转换为 Base64,或反向解码。正确处理 Unicode,支持 URL 安全的 base64url,并准确告诉你无效输入失败的原因。
在浏览器中运行无需注册不上传任何数据
Base64 输出
如何使用Base64 编码/解码
- 选择编码或解码。
- 输入或粘贴内容,结果会随输入实时更新。
- 用于 URL、JWT 和文件名时,勾选URL 安全以使用
-和_,还可以选择去掉=填充。 - 要嵌入图片或字体,点击编码文件并保持勾选输出为 Data URI。
- 复制结果,或使用互换把结果送回另一方向继续处理。
Base64 的工作原理
Base64 使用 64 个可打印的 ASCII 字符来表示二进制数据:A-Z、a-z、0-9、+ 和 /。每 3 个输入字节变成 4 个字符,因此编码后的数据大约会增大 33%。当输入长度不是 3 的倍数时,输出末尾会用一个或两个 = 填充。Base64 是编码,而不是加密:任何人都能解码。
标准 Base64 与 base64url
+ 和 / 字符在 URL 和文件路径中有特殊含义。RFC 4648 §5 定义的 URL 安全字母表用 - 和 _ 替换它们,并且通常省略填充。JWT、许多 OAuth 参数和一些云 API 都使用 base64url。本工具的解码器会自动识别这两种字母表。
Unicode 与 btoa() 的陷阱
在浏览器中,btoa("café") 可以正常工作,但 btoa("日本") 会抛出异常,因为 btoa 只接受 Latin-1 字符。正确的做法是先把文本编码为 UTF-8 字节,本工具正是这样做的。在 JavaScript 中可以写成 btoa(String.fromCharCode(...new TextEncoder().encode(text))),在 Node.js 中则是 Buffer.from(text).toString('base64')。
常见用途
- 在 CSS 或 HTML 中以 Data URI 内嵌小图片和字体
- HTTP Basic 认证请求头(对
user:password进行编码) - JSON 数据和电子邮件(MIME)中的二进制附件
- Kubernetes Secret,其值以 Base64 形式存储
常见问题
Base64 是加密吗?
不是。Base64 是一种没有密钥、可逆的编码。任何人都能解码,所以绝不要用它来隐藏密码或机密信息。
为什么我的 Base64 解码失败?
常见原因包括:出现了字母表之外的字符(通常是复制时带上的多余引号或换行)、字符串被截断,或者混入了不是 Base64 的文本。错误信息会显示第一个问题出现的位置。
解码结果看起来像乱码,为什么?
数据很可能是二进制内容,例如图片、压缩文件或加密字节,而不是文本。本工具会检测到这种情况,显示十六进制转储,并允许你下载原始字节。
必须要有 = 填充吗?
许多解码器(包括本工具)不需要填充也能工作,因为可以根据长度推算出缺少多少字节。但有些严格的解码器要求填充。JWT 和大多数 base64url 场景都会省略填充。
我的文件会被上传吗?
不会。文件通过浏览器的 File API 在本地读取和编码,不会发送任何内容到服务器。