Base64 编码器
在浏览器中将文本或十六进制字节编码为 Base64。完整支持 UTF-8(表情符号、中日韩文字、重音字符),可选 URL 安全字母表、填充和每 76 字符换行。
24 个字符 · 28 字节(UTF-8)
0 个字符 · 0 字节(UTF-8)
完全在浏览器中运行,您的数据不会被上传。
什么是 Base64 编码?
按照 RFC 4648 将文本转换为 Base64。文本会先转换为 UTF-8 字节,因此表情符号、中文、阿拉伯文或越南文字符都能正确编码,随后再用 64 个字符的 Base64 字母表写出这些字节。你也可以不输入文本,而是粘贴十六进制形式的原始字节。
如何使用 Base64 编码
- 在输入中键入或粘贴文本(或将输入格式切换为十六进制字节以编码原始字节)。
- 按需勾选 URL 安全字母表(- 和 _),取消勾选添加 = 填充,或启用每 76 个字符换行(MIME)。
- Base64 结果会立即显示在输出中。
- 点击复制,或点击用作输入切换到解码,验证往返结果是否一致。
示例
Hello, World! Xin chào 👋
SGVsbG8sIFdvcmxkISBYaW4gY2jDoG8g8J+Riw==
默认选项:UTF-8 输入,标准字母表并带填充。
何时使用 Base64 编码
当二进制或非 ASCII 数据必须通过纯文本通道传输时使用 Base64,例如 JSON 字段、data URI、HTTP Basic 认证头、电子邮件(MIME)或配置文件。不要用它来保护数据——Base64 只是一种编码,任何人都能解码;对于体积较大的文件也应避免使用,因为会增加约 33% 的体积(文件请使用 Base64 文件编码工具)。
Base64 编码 的工作原理
输入会被转换为字节(通过 TextEncoder 得到 UTF-8,或从十六进制解析)。每 3 个字节(24 位)被拆分为四个 6 位分组,每组映射为 A–Z a–z 0–9 + / 中的一个字符。如果最后一组只有 1 或 2 个字节,输出会用 = 补齐到 4 个字符的整数倍。URL 安全变体(RFC 4648 第 5 节,即“base64url”)将 + 替换为 -、/ 替换为 _,通常不带填充。每 76 个字符换行遵循 MIME 的行长度规则。
常见用例
- 用
user:password构建 HTTPAuthorization: Basic请求头 - 在 JSON 或 YAML 中嵌入较短的字符串或令牌
- 为 JWT 的头部和载荷生成 base64url 值
- 对非 ASCII 文本编码,使其能通过仅支持 ASCII 的旧系统
- 查看一个 UTF-8 字符串实际产生了哪些字节
安全提示
编码在你的浏览器本地完成,不会上传任何内容。请记住,Base64 不提供任何保密性。
常见问题
为什么对于非英文文本,我的 Base64 结果和其他工具不一样?
有些工具会把文本按 Latin-1 或 UTF-16 编码。本工具始终使用 UTF-8,这也是浏览器、btoa(unescape(encodeURIComponent(s)))、Python 的 base64.b64encode(s.encode()) 以及大多数 API 所期望的方式。
Base64 和 base64url 有什么区别?
base64url 使用 - 和 _ 代替 + 和 /,因此结果可以直接放入 URL 和文件名而无需百分号编码。JWT 使用不带 = 填充的 base64url。
Base64 是加密吗?
不是。它只改变数据的表示形式,任何人都可以解码。如果数据需要保密,请使用真正的加密(例如 AES-GCM)。
Base64 输出会大多少?
每 3 个输入字节对应 4 个输出字符,因此大约增大 33%;如果启用换行,还要加上换行符。