Base64 编解码工具 — 在线转换文本和数据
把文本编码成 Base64,或者把 Base64 解码回可读文本。支持 UTF-8,离线可用,数据不会发到任何地方。调试 JWT token、生成 Data URI、处理 API 认证头的时候特别好用。
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% 的开销是值得的。
使用方法
- 在顶部选编码或解码模式。
- 粘贴你的文本(编码用)或 Base64 字符串(解码用)。
- 点按钮,结果立刻出来。
- 复制输出。如果要做 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 断言)。把编码字符串粘贴进来看看里面到底是什么,不用写解码脚本。
需要知道的事
Base64 不是加密
这是最常见的误解。Base64 可以被任何人轻松还原,零安全性可言。永远不要用它来"隐藏"密码、API 密钥或敏感数据。如果你看到配置文件里密码存成 Base64,那是安全漏洞,不是安全措施。
注意 URL-safe 和标准 Base64 的区别
标准 Base64 用 + 和 /,这两个字符在 URL 里会出问题。URL-safe Base64(RFC 4648 §5)用 - 和 _ 替代。JWT 用 URL-safe,大多数 API 用标准版。如果解码出来是乱码,可能是用错了变体。
大文件别用 Base64
100KB 的图片做成 Base64 放在 CSS 里 = 133KB 的文本,不能单独缓存,不能懒加载,还会撑大样式表。Base64 只用于小资源(< 5KB)。其他的都应该是正常文件从 CDN 加载。
UTF-8 编码很重要
Base64 编码的是字节,不是字符。"Hello" 在 ASCII 里是 5 字节。"你好" 在 UTF-8 里是 6 字节。编码文本时两端要约定好字符编码(UTF-8 是安全默认值)。编码不匹配 = 乱码输出。
实际示例
解码 JWT payload
JWT token 的中间部分,解码后看到用户信息。
Input
eyJ1c2VySWQiOjQyLCJyb2xlIjoiYWRtaW4iLCJleHAiOjE3MTY5OTIwMDB9Output
{"userId":42,"role":"admin","exp":1716992000}编码 Basic Auth 凭据
HTTP Basic 认证需要 base64("用户名:密码")。
Input
admin:my-secret-passwordOutput
YWRtaW46bXktc2VjcmV0LXBhc3N3b3Jk功能特点
- 编码和解码一个工具搞定,切换模式即可
- 支持中文、日文、emoji 等所有 UTF-8 字符
- 多行输入没问题
- 完全在浏览器运行,不走服务器
- 除了浏览器内存没有大小限制
- 免费,不用注册,不追踪
常见问题
为什么 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。
使用技巧与相关工作流
- 解码出来是 JSON?可以直接丢进JSON 格式化工具.
- URL 里有特殊字符需要编码的话,试试URL 编解码工具.
- 如果要验证编码前后的数据完整性,Hash 生成器.
- Base64 数据要做成二维码?二维码生成器.