在线工具

工具箱 › 转换 › Base64 编解码

Base64 编解码

在线 Base64 编码与解码工具,支持中文与 emoji,支持 URL-safe 变体(- _ 无填充),可判断输入是否像 Base64。全部在浏览器内完成。

—输入字节
—结果字节
—是否像 Base64

先说清楚:Base64 是编码,不是加密

Base64 把字节流换成 64 个可打印字符,目的是让二进制数据能安全穿过只认文本的通道(邮件正文、URL、JSON 字段)。它没有任何密钥,任何人拿到都能还原。

所以别用它藏密码、藏 token、藏手机号 —— 那不叫加密,只叫让肉眼一时看不出来。需要保密请用真正的加密算法。

中文为什么能直接编

浏览器原生的 btoa 只接受 Latin-1 字符,直接喂中文会抛异常,这也是很多在线工具一遇到中文就报错的原因。这里先用 TextEncoder 把文本编成 UTF-8 字节,再交给 btoa,中文和 emoji 都能正常编码。

解码反向走 TextDecoder('utf-8'):不是 UTF-8 的字节会被替换成占位符而不是抛错,所以偶尔会看到乱码而不是报错,那是原数据本身不是 UTF-8 文本(比如你编的是一张图片)。

URL-safe 什么时候要勾

标准 Base64 里的 + 和 / 在 URL 里是有含义的字符,= 也常被转义。勾上 URL-safe 后会把 + 换成 -、/ 换成 _,并去掉尾部的 = 填充。

放进 URL 查询参数、文件名、Cookie 时勾上;只是塞进 JSON 或配置文件就不用勾。

体积会涨三分之一

每 3 个字节编成 4 个字符,所以体积固定增加约 33%(还要算上换行)。一张 1.5MB 的图转成 Base64 就变成约 2MB 的文本。

这就是为什么大文件不建议内联成 Data URL —— 它会让 HTML 或 CSS 白白胖一圈,还无法被浏览器缓存。小图标(几 KB 以内)内联才划算。

敏感内容可以放心粘

编码和解码都在浏览器里用 TextEncoder / btoa 完成,没有网络请求,文本不上传、不留缓存。身份证号、合同段落这种内容粘进来处理完刷新页面就没了。

但要记住前一条:本地处理只保证「不上传」,不保证「别人拿到结果看不懂」。Base64 的结果是公开可读的。

限制与替代

编码按 8192 字符分块拼接,避免长文本爆栈,但整体仍是同步计算 —— 几 MB 以上的文件会明显卡顿,这种量级建议用命令行 base64。

不提供图片文件的直接编码入口:要图片转 Data URL,请先用图片压缩工具把图压到几十 KB,再把结果交给别处,或者直接改用图片压缩页面。

常见问题

Base64 能用来加密密码吗?

不能。Base64 没有密钥,任何人都能一键还原,它只解决「二进制安全穿过文本通道」的问题。需要保密请用真正的加密。

为什么中文编出来和别的网站不一样?

差别在是否先做 UTF-8 编码。这里按 UTF-8 编,是各语言标准库的一致做法;有些老工具按 GBK 或直接拒绝中文,结果自然不同。

解码失败提示长度不对怎么办?

Base64 长度必须是 4 的倍数。常见原因是复制时被截断了或者中间混进了空格换行 —— 页面会自动去掉空白,若仍报错请检查是否复制完整。

URL-safe 和标准 Base64 能互相解吗?

能。解码时会自动把 - 还原成 +、_ 还原成 /,并补齐 = 填充,所以两种写法都可以直接粘进来解。