Base64 编解码

文本与 Base64 互相转换,支持中文和 URL 安全字符集,边输边出结果。

文本 → Base64
结果

Base64 编解码

Base64 不是加密,是把任意字节装进「只能放有限 ASCII 字符」的容器里的一种写法。发邮件、塞进 JSON 字段、放进 URL 参数时,二进制或非 ASCII 内容会被截断、转义或改形,Base64 用 A-Z、a-z、0-9、+、/ 这 64 个字符(外加填充符 =)把它原样搬过去,到了对面再解码还原。

接口返回的 token 里带中文、同事复制过来成了乱码,多半是中间某一环按字节传却没做编码;图片想直接内联进网页写成 data:image 用的就是 Base64;JWT 的三段、Basic 认证头里的账号密码,也都是它常见的现身场合。这页帮你在文本和 Base64 之间来回转,中文按 UTF-8 处理不会坏。

编出来的串可以贴进配置、网址或邮件正文;解出来的原文用来核对对方发来的值到底是什么。勾上 URL 安全,把 +、/ 换成 -、_ 并去掉结尾填充,就能安全放进网址或文件名。

怎么用

  1. 选方向顶部「编码 / 解码」两个按钮决定往哪个方向转。「编码」把普通文本变成 Base64,「解码」把 Base64 变回文本;下方标签会跟着显示「文本 → Base64」或「Base64 → 文本」。
  2. 填输入把内容放进上方标着「输入文本」的框。编码时这里是普通文字,解码时这里是那串 Base64。
  3. 看结果默认开着「实时」,输入一改动结果就跟着变,直接看下方「结果」框即可;关掉了实时或想强制重算,点右边的「执行」。
  4. 选 URL 安全要把结果放进网址就勾「URL 安全 (-_ 无填充)」:编码时把 + 换成 -、/ 换成 _、去掉末尾的 =;解码时会自动换回来。
  5. 复制或接力点「复制结果」拷走;点「结果转输入」把当前结果搬到输入框,方便接着做反向或再次处理。

示例

输入
你好 xmi4
输出
5L2g5aW9IHhtaTQ=

UTF-8 下两个汉字各占 3 字节,连同空格和 xmi4 共 11 字节,编成 16 字符、末尾一个 = 补齐 4 的倍数。

深入一点

解出来乱码,通常是对方按 GBK 编的

这页编解码都按 UTF-8。若对方用 GBK 把中文编成 Base64,你在这页解码就会得到乱码——不是算法坏了,是字节到字符的映射表不一致。先确认双方都用 UTF-8。

= 填充和 4 的倍数

Base64 每 3 字节打包成 4 个字符,不足 3 字节用 = 补到 4 的倍数。URL 安全模式去掉 =,解码时这页会自动补回去,所以带不带填充都能解。

标准写法对填充很敏感:少了 = 时严格的解码器会嫌长度不对而报错;一段合法的 Base64,去掉换行和空格后长度必然是 4 的倍数,不是的话多半被截断或混进了杂质。

Base64 会变长,约是原文的 4/3

8 字节原文编成约 12 字符。别把它当压缩,它是为了「能安全搬运」而牺牲体积;把大文件 Base64 内联进网页会明显撑大请求体。

搬运本身不省空间,图的是兼容性:能把任意字节塞进只认文本的地方,比如链接、表单和配置里,代价是结果比原文长。

注意事项

  • 编解码全在浏览器本地完成,内容不上传服务器。
  • Base64 不是加密也不是哈希,任何看到串的人都能一秒解回原文,别拿它藏密码或密钥。
  • 几 MB 的超长文本实时转换会有延迟,必要时关掉「实时」再点「执行」。
  • 输入非法 Base64 时解码框上方会红字提示「输入不是有效的 Base64 字符串」,不会硬解出一堆乱码。
  • URL 安全变体(也叫 Base64URL)和普通 Base64 只差在字符表和填充,不是另一种编码,还原后是同一份字节。
  • 这页按整段文字一次转换,不做流式分块,也不处理已经是 Base64 但你忘了选对方向的输入。

常见问题

base64 加密安全吗

不安全,它只是编码,不需要任何密钥就能还原。作用是安全搬运,不是保密。

base64 解码后中文乱码怎么办

八成是源头不是 UTF-8,常见是 GBK。让双方统一按 UTF-8 再转,这页本身用的就是 UTF-8。

为什么结尾有等号

等号是填充,用来把长度凑成 4 的倍数。URL 安全场景通常把它去掉,解码时再补回来。

base64 能直接放 URL 吗

默认的 + 和 / 在网址里有特殊含义,勾上「URL 安全」换成 - 和 _、再去填充,就能安全放进参数。

图片和 base64 什么关系

把图片字节编成 Base64 拼进 data:image/...;base64, 就能内联进网页或 CSS,省一个请求但体积更大。

JWT 为什么用 base64

JWT 各段用 Base64URL 承载,便于传输和肉眼粗看。它是编码不是签名,签名是另一套机制。

Base64 字符串能直接按文本比较吗

不建议。同一份数据在带不带填充、是不是 URL 安全变体下会得到写法不同的串,看着不等其实内容相同。要比就先还原成字节再比。

为什么末尾要凑成四的倍数

因为编码是三个字节折成四个字符一组,末尾不足三个字节时用一个或两个等号补齐成四的倍数。这是格式规定,缺了填充某些严格解码器会报错。

编出来的结果里会有中文吗

不会。输出只由大小写字母、数字、加号斜杠和填充等号组成,全是 ASCII,这正是它能安全穿过只认 ASCII 通道的根本原因。

注册后可收藏工具、跨设备同步最近使用。