⭐ 觉得好用?收藏备用,下次直接打开
输入
结果

Base64 编解码工具 在浏览器本地完成文本和文件的 base64 编解码,不上传任何字节。支持标准 base64、URL 安全变体(base64url)切换。

编码原理:把二进制数据按每 6 位一组(2^6 = 64)映射到 64 个可见字符。3 字节(24 位)的原始数据正好编为 4 个 base64 字符;不够 3 字节时末尾补 =

字符集

  • 标准 base64A-Z a-z 0-9 + / + 填充 =
  • base64url(RFC 4648):+-/_= 通常省略;URL/文件名安全
  • PEM 格式:标准 base64 + 每 64 字符换行 + 头尾标记(-----BEGIN ...-----),用于 SSL 证书、SSH key

典型用途

  • JWT 第一、二段都是 base64url 编码(header / payload)
  • data URL 内联小图标,省一次 HTTP 请求
  • 邮件附件(MIME 标准,base64 是底层编码)
  • HTTP Basic Auth 头:Authorization: Basic <base64(user:pass)>

重要提醒:base64 不是加密。它的字符集是公开的,任何人都能秒解。需要保密必须先用 AES/RSA 加密原始数据,再 base64 编码后传输。看到 base64 字符串就以为”已加密”是常见误区。

📍使用场景

  • 文件转 data URL把小图、字体编成 base64 内联到 HTML/CSS,省一次 HTTP 请求。
  • API 传二进制JSON/XML 不能直接装二进制,先 base64 编一下变成纯文本字段。
  • 配置/Token 传输JWT 第二段就是 base64url 编码的 payload,可解码看内容(但不能伪造签名)。

常见问题

base64 是加密吗?

不是。base64 是编码,不是加密——任何人都能秒解。它的作用是把二进制数据用 64 个可见字符(A-Z、a-z、0-9、`+`、`/`,`=` 用于补齐)表示,方便在只支持文本的通道(邮件、JSON、URL)传输。如果想保密必须先加密(AES、RSA)再 base64,base64 单独不提供任何安全性。

为什么 base64 后体积变大约 33%?

因为压缩比是固定的:每 3 字节原始数据编为 4 个 base64 字符,4/3 ≈ 1.333。100KB 的图片 base64 后约 137KB。所以 base64 内联 < 5KB 的小图能省 HTTP 请求;超过 10KB 反而增加传输和解析成本,不如外链。

base64 末尾的 `=` 是什么?

填充字符(padding)。base64 要求输出长度是 4 的倍数,原数据字节数不被 3 整除时末尾补 1 个或 2 个 `=`。例如 `M` (1 字节) → `TQ==`、`Ma` (2 字节) → `TWE=`、`Man` (3 字节) → `TWFu`。base64url 变体(用于 JWT、URL 安全场景)通常省略 `=`,再用 `-_` 替代 `+/`。

base64 和 base64url 有什么区别?

字符集不同——标准 base64 用 `+` 和 `/`,但这两个字符在 URL 里有特殊含义(`+` 解析为空格、`/` 是路径分隔),不能直接放进 URL。base64url(RFC 4648 §5)用 `-` 替换 `+`、`_` 替换 `/`,并通常省略尾部 `=`。JWT、JSON Web Signature、OAuth 都用 base64url。

为什么编码完看到的字符串一会带 `\n` 一会没有?

PEM 格式(如 OpenSSL 输出的证书、私钥)默认每 64 字符换一行(兼容老邮件协议 MIME),所以 base64 串里会有 `\n`。粘贴到代码里前要去掉换行:JS `str.replace(/\s/g, '')`、Linux `tr -d '\n'`。粘到 JSON 字段也要去——多余空白虽不影响解码(解码器一般忽略),但传输时浪费字节。

data URL 格式是怎样的?

`data:[mime-type];base64,[编码内容]`。例如一张 PNG:`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...`。可以直接放在 HTML 的 `<img src>`、CSS 的 `background-image: url()`、`<link href>` 里。注意:内联二进制后浏览器无法缓存(每页都重新解析),适合一次性的图标,不适合复用率高的资源。