Base64 编码解码 打开工具

URL-safe Base64:为什么要把 + 和 / 换成 - 和 _

标准 Base64 的字母表里有 + 和 /,这两个字符在 URL 里有自己的含义:+ 在查询字符串里表示空格,/ 是路径分隔符。URL-safe 变体把它们换成 - 和 _,其余 62 个字符完全不变。

替换是唯一的差别

标准:  A-Z a-z 0-9 + /
    URL-safe:A-Z a-z 0-9 - _

只有索引 62 和 63 两个字符换掉了。这意味着同一段数据用两种变体编码,结果只在出现 + 或 / 的位置不同,其余部分逐字相同。

反过来,解码时把 - 换回 +、_ 换回 / 就能用标准解码器处理。这个工具在解码前会自动做这步替换,所以两种变体的输入都能解。

不换会怎样

把标准 Base64 直接放进 URL:

三种都是「不报错、但数据被改」的故障,排查起来很费时间,所以凡是要进 URL 的 Base64,一律用 URL-safe。

JWT 为什么强制 URL-safe

JWT 的三段(Header、Payload、Signature)都是 Base64URL 编码后用小圆点连接,因为它要能放进 URL、HTTP 头、Cookie 而不需要再次转义。

JWT 还额外规定去掉末尾的等号填充,所以你会看到 eyJhbGciOiJIUzI1NiJ9 这种结尾没有 = 的字符串。解码时按长度补回即可。

还有哪些场景需要

不需要进 URL 时(比如 JSON 字段、邮件附件),标准 Base64 更通用,兼容的库也更多。

上面这些都不用装软件,也不用注册:打开页面就能用。

打开 Base64 编码解码 →

常见问题

URL-safe 变体还能用标准解码器解吗?

不能直接解,会出现非法字符。先把 - 换回 +、_ 换回 /,再补上等号,就能用标准解码器。这个工具会自动做这些替换。

两种变体编码后的长度一样吗?

一样。替换不改变长度,只改变两个位置的字符。长度只由原始字节数决定(4/3 倍向上取整到 4 的倍数)。

为什么 JWT 还要去掉等号?

等号在 URL 与 Cookie 里也可能被转义或截断,去掉后长度更可控。JWT 规范明确要求无填充,解码方按长度自行补回。