Base64 编解码工具 — 在线转换文本和数据

把文本编码成 Base64,或者把 Base64 解码回可读文本。支持 UTF-8,离线可用,数据不会发到任何地方。调试 JWT token、生成 Data URI、处理 API 认证头的时候特别好用。

输入文本
Base64 输出

Base64 到底在干什么

Base64 把二进制数据用 64 个"安全"的 ASCII 字符(A-Z、a-z、0-9、+、/)加上 = 填充来表示。它定义在 RFC 4648 里,从 1990 年代初的 MIME 邮件标准就开始用了。

为什么需要它?因为很多系统(邮件、JSON、URL、XML)只能处理文本。如果你要把一张 PNG 图片塞进 JSON 响应或邮件正文里,不能直接扔原始字节进去——得先编码成文本。Base64 就是干这个的标准方法。

代价:Base64 会让数据体积精确增加 33%(加上填充)。每 3 字节输入变成 4 字符输出。1MB 的图片变成约 1.33MB 的 Base64。所以大文件不要用 Base64 传输——用正常的文件上传或 CDN 链接。但对于小资源(5KB 以下的图标、字体子集)或必须走纯文本通道的数据,33% 的开销是值得的。

使用方法

  1. 在顶部选编码或解码模式。
  2. 粘贴你的文本(编码用)或 Base64 字符串(解码用)。
  3. 点按钮——结果立刻出来。
  4. 复制输出。如果要做 Data URI,自己在前面加上 "data:image/png;base64,"。

什么时候会用到

查看 JWT token 里的内容

JWT 有三段用点号分隔的 Base64url 编码。把中间那段(payload)粘贴进来解码,就能看到用户 ID、过期时间、角色等信息——不用装任何 JWT 库。

生成内联图片的 Data URI

想在 CSS 或 HTML 里直接嵌入一个小图标,省掉一次 HTTP 请求?把图片文件编码成 Base64,然后用 background-image: url(data:image/png;base64,你的字符串)。但控制在 5KB 以内,否则反而影响性能。

HTTP Basic 认证头

Basic Auth 要求把 "用户名:密码" 编码成 Base64 放在 Authorization 头里。把 "admin:secretpass" 粘贴进来编码,然后用在你的 API 测试工具或 curl 命令里。

调试编码过的 API 数据

有些 API 返回 Base64 编码的字段(AWS Lambda 响应、Kubernetes secrets、SAML 断言)。把编码字符串粘贴进来看看里面到底是什么,不用写解码脚本。

需要知道的事

1.

Base64 不是加密

这是最常见的误解。Base64 可以被任何人轻松还原——零安全性。永远不要用它来"隐藏"密码、API 密钥或敏感数据。如果你看到配置文件里密码存成 Base64,那是安全漏洞,不是安全措施。

2.

注意 URL-safe 和标准 Base64 的区别

标准 Base64 用 + 和 /,这两个字符在 URL 里会出问题。URL-safe Base64(RFC 4648 §5)用 - 和 _ 替代。JWT 用 URL-safe,大多数 API 用标准版。如果解码出来是乱码,可能是用错了变体。

3.

大文件别用 Base64

100KB 的图片做成 Base64 放在 CSS 里 = 133KB 的文本,不能单独缓存,不能懒加载,还会撑大样式表。Base64 只用于小资源(< 5KB)。其他的都应该是正常文件从 CDN 加载。

4.

UTF-8 编码很重要

Base64 编码的是字节,不是字符。"Hello" 在 ASCII 里是 5 字节。"你好" 在 UTF-8 里是 6 字节。编码文本时确保两端约定好字符编码(UTF-8 是安全默认值)。编码不匹配 = 乱码输出。

实际示例

解码 JWT payload

JWT token 的中间部分——解码后看到用户信息。

Input

eyJ1c2VySWQiOjQyLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE3MTY5OTIwMDB9

Output

{"userId":42,"role":"admin","exp":1716992000}

编码 Basic Auth 凭据

HTTP Basic 认证需要 base64("用户名:密码")。

Input

admin:my-secret-password

Output

YWRtaW46bXktc2VjcmV0LXBhc3N3b3Jk

功能特点

  • 编码和解码一个工具搞定——切换模式即可
  • 完整 UTF-8 支持(中文、日文、emoji 都行)
  • 多行输入没问题
  • 完全在浏览器运行——不走服务器
  • 除了浏览器内存没有大小限制
  • 免费,不用注册,不追踪

常见问题

为什么 Base64 会让文件大 33%?

Base64 把每 3 字节输入映射成 4 个 ASCII 字符。4/3 = 33.3% 增长。如果输入长度不能被 3 整除,末尾还会加 1-2 个填充字符(=)。这是编码本身决定的,没法绕过。

能用这个工具解码 JWT token 吗?

可以解码 payload 部分。JWT 用的是 Base64url 编码(- 和 _ 代替 + 和 /)。payload(中间部分)解码后是可读的 JSON。signature(最后部分)解码出来是二进制乱码,因为那是加密哈希。这个工具两种变体都能处理。

Base64 和加密是一回事吗?

绝对不是。Base64 是编码——任何人零成本就能还原。它提供零安全性。如果有人告诉你他们的 API 用 Base64"加密"数据,赶紧跑。真正的加密用 AES-256 之类的算法。

Kubernetes secrets 为什么用 Base64?

Kubernetes 在 YAML/JSON manifest 里用 Base64 存 secret,因为二进制数据不能直接放在 YAML 里。但这不是安全措施——任何有 kubectl 权限的人都能立刻解码。要真正保护 secret,用 sealed-secrets 或外部密钥管理器(Vault、AWS Secrets Manager)。

Base64 和 URL 编码有什么区别?

解决的问题不同。URL 编码(百分号编码)把单个特殊字符替换成 %XX 让它们在 URL 里安全。Base64 把任意二进制数据转成文本字符串。查询参数里有特殊字符用 URL 编码,要在文本格式里嵌入二进制数据用 Base64。

使用技巧与相关工作流