SS 工具箱
SS 工具箱
所有数据均在本地处理

Base64 编码解码:文本、图片 Data URI 与 JWT payload

在浏览器里把 UTF-8 文本和图片编码成 Base64,也能把 Base64 解回文本或预览成图片。中文、emoji 和带换行的输入都能处理,但只支持标准 Base64:URL-safe 变体和裸 JWT 片段要先转换,二进制数据解码后会变成乱码。

转换类型
文本
Base64
Base64 的编码过程将任意的二进制数据分成每组 3 个字节(即 24 位),然后将这些 24 位划分为 4 个 6 位单元。每个 6 位单元被映射为一个 ASCII 字符,这样一来,3 个字节的二进制数据会被转换成 4 个可打印的字符。不过缺点自然就是体积会是原来的 4/3 倍。本工具字符编码使用 UTF-8。

这个 Base64 工具能做什么、不能做什么

  1. UTF-8 文本双向转换

    输入文本时立即编码:先用 TextEncoder 转成 UTF-8 字节再转 Base64,中文、日文和 emoji 都能正确输出,不会像直接 btoa 那样对非 Latin-1 字符抛异常。

  2. 图片转 Data URI

    切到 Image 选择文件,会读成 data:image/...;base64,...。把 Data URI 粘回 Base64 框即可内联预览,无效内容会显示占位提示而不是裂图。

  3. 只支持标准 Base64,没有 URL-safe 模式

    `-` 和 `_` 会被拒绝,JWT payload 和 URL-safe token 必须先换成 `+` / `/`。缺少 `=` padding 可以解码,空格、制表符和换行会被忽略。

  4. 解码按 UTF-8 处理

    二进制数据的 Base64 会被当作 UTF-8 文本解码,得到 `�` 替换字符而不是报错。只有 UTF-8 文本能干净往返,图片等字节无法通过这种方式还原。

  5. 纯本地运行,但超大输入会出错

    不会上传任何内容;每次按键都会同步转换。没有大小保护,文本很大时可能因为把全部字节一次性展开进 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,界面不显示错误信息。

相关工具
赞助MindElixir