Base64 编码解码:文本、图片 Data URI 与 JWT payload
在浏览器里把 UTF-8 文本和图片编码成 Base64,也能把 Base64 解回文本或预览成图片。中文、emoji 和带换行的输入都能处理,但只支持标准 Base64:URL-safe 变体和裸 JWT 片段要先转换,二进制数据解码后会变成乱码。
这个 Base64 工具能做什么、不能做什么
UTF-8 文本双向转换
输入文本时立即编码:先用 TextEncoder 转成 UTF-8 字节再转 Base64,中文、日文和 emoji 都能正确输出,不会像直接 btoa 那样对非 Latin-1 字符抛异常。
图片转 Data URI
切到 Image 选择文件,会读成 data:image/...;base64,...。把 Data URI 粘回 Base64 框即可内联预览,无效内容会显示占位提示而不是裂图。
只支持标准 Base64,没有 URL-safe 模式
`-` 和 `_` 会被拒绝,JWT payload 和 URL-safe token 必须先换成 `+` / `/`。缺少 `=` padding 可以解码,空格、制表符和换行会被忽略。
解码按 UTF-8 处理
二进制数据的 Base64 会被当作 UTF-8 文本解码,得到 `�` 替换字符而不是报错。只有 UTF-8 文本能干净往返,图片等字节无法通过这种方式还原。
纯本地运行,但超大输入会出错
不会上传任何内容;每次按键都会同步转换。没有大小保护,文本很大时可能因为把全部字节一次性展开进 btoa 而触发调用栈溢出。
Base64 编码解码常见问题
支持 URL-safe Base64(`-` 和 `_`)吗?
不支持,只认标准字母表 `+ /`;出现 `-` 或 `_` 会抛 InvalidCharacterError。请把 `-` 换成 `+`、`_` 换成 `/`,再补齐到 4 的倍数后粘贴。
能在这里解 JWT payload 吗?
需要先转换。payload 段是无 padding 的 URL-safe Base64,这个页面既不会拆分 token 也不会补字符,请粘贴改写后的片段;解码结果是纯文本,不会自动解析 JSON。
能文件和 Base64 互转吗?
只有图片,而且文件方向只有上传:选图片得到 Data URI。文本文件没有选择入口;解码也不会生成可下载文件,结果直接显示为文本。
为什么中文和 emoji 能用,而 btoa 平时会报错?
代码先用 TextEncoder 把文本变成 UTF-8 字节再调 btoa,解码时用 TextDecoder 还原。直接对 `中文` 调 btoa 会抛 InvalidCharacterError,这里不会。
二进制(非 UTF-8)的 Base64 会怎样?
会按 UTF-8 解码,任意字节变成 `�` 替换字符;不会失败也不会提示错误。需要保留字节时请用图片预览或专门的二进制解码工具。
有大小限制吗?会上传数据吗?
不上传,也没有显式上限;每次按键同步转换。超大输入可能抛 `Maximum call stack size exceeded`,几 MB 的文本还可能让页面卡住。
padding、空白和非法输入怎么处理?
缺少 `=` 可以解码,atob 会忽略空格、制表符和换行。长度为 `% 4 == 1` 或含字母表之外的字符会抛 InvalidCharacterError,界面不显示错误信息。

