Base64 在线编码解码工具

免费的 Base64 在线编码解码工具,支持标准(RFC 4648 §4)与 URL-safe(§5)两种变体,可对文本或文件(最大 10MB)进行编解码,输出十六进制字节。完全浏览器本地处理,数据不上传服务器。

最后更新:

长度:0 字符

Base64 是什么

Base64 是一种"二进制到文本"的编码方式,目的是把任意字节流转成由 64 个可见 ASCII 字符(A-Z、a-z、0-9、+、/)组成的字符串,从而能安全地塞进只支持文本的通道—— 比如 URL、HTTP 头、JSON、XML、Email 正文。它由RFC 4648统一规范,第 4 节定义标准变体,第 5 节定义 URL-safe 变体。

工作原理:把每 3 个字节(24 bit)按 6 bit 一组切成 4 段,每段映射到一个字符; 如果原始字节数不是 3 的倍数,用 1 或 2 个 = 填充。所以编码后体积固定膨胀约 33%。

典型使用场景

Data URL 嵌入小图

把 5KB 以下的图标/loading 图编码为 Base64,写到 data:image/png;base64,…, 可省一次 HTTP 请求,首屏更快。

JWT、OAuth Token

JWT 的 Header、Payload、Signature 三段都用 URL-safe Base64 编码, 解码后即可直接看 payload 内容(注意 JWT 不是加密,只是编码)。

HTTP Basic Auth

HTTP Basic Auth 头是 Basic base64(user:pass),可用本工具快速生成 / 解析。 注意它没有加密,只能跑在 HTTPS 上。

配置文件嵌入二进制

Kubernetes Secret、Docker config.json 都把证书、密钥用 Base64 编码后写进 YAML/JSON, 避免文本格式无法承载二进制数据。

常见误用与陷阱

  • 误把 Base64 当加密:任何人都能直接解码,不能保密。
  • 标准 vs URL-safe 搞混:把标准 Base64 直接拼到 URL 里,+ 会被解析成空格、/ 会被当成路径分隔符; 务必用 URL-safe 变体或先做 URL 编码。
  • 换行符:MIME(Email)规范要求每 76 字符加一个 CRLF, 但 JSON、HTTP 头里出现换行会破坏格式,使用前要去掉换行。
  • 填充 = 缺失:URL-safe 实现通常省略 =, 解码时需要先补齐到 4 的倍数。本工具自动补齐。
  • UTF-8 编码不一致:编码端用 UTF-8、解码端用 GBK 会乱码, 现代工程统一 UTF-8 即可。

常见问题

Base64 编码后体积会变大多少?

Base64 将每 3 个字节编码为 4 个字符,所以编码后大约比原始数据膨胀 33%(再加上少量填充 =)。例如 100KB 的图片转成 Base64 大概 134KB。这就是为什么 Base64 适合「嵌入」而非「传输」——它解决的是字符集兼容问题,不是节省体积。

标准 Base64 和 URL-safe Base64 有什么区别?

标准 Base64(RFC 4648 §4)使用 + 和 / 作为第 62、63 个字符,并用 = 填充;URL-safe(§5)把 + 换成 -、/ 换成 _、并通常省略末尾的 =,因为 +、/、= 在 URL 与文件名中都有特殊含义。JWT、OAuth state、Cookie 这类场景必须用 URL-safe 变体。

解码时报「InvalidCharacterError」怎么办?

通常是因为:1) 字符串里混入了换行、空格或不可见字符(部分实现允许,浏览器 atob 不允许);2) 用了 URL-safe 变体但工具选了标准变体;3) 长度不是 4 的倍数(缺少 = 填充)。本工具会自动忽略空白字符,但仍需选对变体。

为什么 Base64 后的中文解码出乱码?

Base64 处理的是字节,不是字符。如果编码时用 GBK,解码时用 UTF-8 就会乱码。本工具统一用 UTF-8 编码与解码,与现代 Web 标准、JSON、HTTP 默认编码一致。如果你的数据来自 Windows 老系统,可能是 GBK,需要先转换编码。

可以用 Base64 给数据加密吗?

不能。Base64 是编码(Encoding),不是加密(Encryption),任何人都能直接解码还原。它的用途是把二进制数据安全地塞进只允许 ASCII 的通道(如 URL、JSON、Email 正文)。需要保密时请用 AES、ChaCha20 等真正的加密算法。

图片转 Base64 后能直接用在网页里吗?

可以。把图片编码成 Base64 后,按 data:image/png;base64,<编码内容> 的格式写进 <img src> 或 CSS background-image,浏览器会直接渲染。但 Data URL 会被 HTML/CSS 缓存而不能像普通图片那样独立缓存,适合 5KB 以下的小图标、loading 图,超过这个大小通常用 CDN 反而更高效。