Base64 编解码/ 纯前端

文本与 Base64 互转,支持 Unicode 中文、emoji,以及 URL 安全模式,内容不上传服务器。

原始文本
Base64 输出
输出结果将在此显示…
输入0 字符
输出0 字符

这个工具有帮到你吗?

什么是 Base64 编码

Base64 是一种基于 64 个可打印 ASCII 字符来表示二进制数据的编码方式。它将每 3 个字节(24 位)编码为 4 个字符,输出仅包含 A-Z、a-z、0-9、+、/ 这 64 个字符和 = 填充符。Base64 不是加密算法,而是一种编码格式 — 任何人都可以轻松解码,不提供任何安全性。

Base64 的常见用途

电子邮件附件:MIME 协议使用 Base64 编码二进制附件。Data URL:将图片、字体等资源嵌入 CSS 或 HTML 中,减少 HTTP 请求。API 传输:在 JSON 中传输二进制数据(如图片、PDF)时先做 Base64 编码。JWT 令牌:JWT 的 header 和 payload 部分就是 Base64 编码的 JSON。基本认证:HTTP Basic Auth 将用户名密码做 Base64 编码传输。

Base64 编码后体积会增加多少

Base64 编码会使数据体积增加约 33%。因为每 3 个原始字节被编码为 4 个字符,编码后的大小 = ceil(原始大小 / 3) × 4。因此对于大文件,直接传输二进制比 Base64 编码后传输更高效。但在必须使用纯文本通道(如 JSON、XML、URL)传输二进制数据时,Base64 是标准解决方案。

代码示例

JavaScript (Browser)
// Encode (ASCII only)
const encoded = btoa("Hello, World!");
// Decode
const decoded = atob(encoded);

// Encode Unicode (CJK, emoji, etc.)
function b64Encode(str) {
  const bytes = new TextEncoder().encode(str);
  const bin = String.fromCharCode(...bytes);
  return btoa(bin);
}
function b64Decode(b64) {
  const bin = atob(b64);
  const bytes = Uint8Array.from(bin, c => c.charCodeAt(0));
  return new TextDecoder().decode(bytes);
}
Python
import base64

# Encode
text = "Hello, 世界 🌏"
encoded = base64.b64encode(text.encode("utf-8")).decode()
print(encoded)

# Decode
decoded = base64.b64decode(encoded).decode("utf-8")
print(decoded)

# URL-safe variant
url_safe = base64.urlsafe_b64encode(
    text.encode("utf-8")
).decode().rstrip("=")
Go
import "encoding/base64"

// Encode
encoded := base64.StdEncoding.
    EncodeToString([]byte("Hello, World!"))

// Decode
decoded, err := base64.StdEncoding.
    DecodeString(encoded)

// URL-safe
urlSafe := base64.URLEncoding.
    EncodeToString([]byte("Hello, World!"))
Shell (curl / openssl)
# Encode
echo -n "Hello, World!" | base64

# Decode
echo "SGVsbG8sIFdvcmxkIQ==" | base64 -d

# URL-safe encode (GNU coreutils)
echo -n "Hello" | base64 | tr '+/' '-_' | tr -d '='

常见问题

Base64 是什么?
Base64 是一种将二进制数据编码为 ASCII 字符串的方案,使用 A–Z、a–z、0–9、+、/ 共 64 个可打印字符。常用于在 HTTP、电子邮件、JSON 等文本协议中传输二进制数据(如图片、文件)。
Base64 编码是加密吗?
不是。Base64 只是编码,不是加密。任何人都可以轻松解码,没有密钥的概念。如果需要保护数据安全,应使用 AES、RSA 等加密算法。
base64url 和标准 Base64 有什么区别?
标准 Base64 使用 + 和 / 字符,在 URL 中需要转义(变为 %2B 和 %2F),同时末尾有 = 填充。base64url 将 + 替换为 -,/ 替换为 _,并去掉末尾 =,因此可以直接用于 URL 和文件名,不需要额外转义。JWT 的 Header 和 Payload 部分就使用 base64url 编码。
为什么 Base64 编码后体积会增大?
Base64 用 4 个 ASCII 字符表示 3 个字节的二进制数据,因此编码后体积约为原始数据的 133%(增大约 1/3)。这是为了用纯文本传输二进制数据付出的代价。
如何在 JavaScript 中编解码 Base64?
浏览器内置 btoa()(编码)和 atob()(解码)函数。但这两个函数不原生支持 Unicode,处理中文时需要先用 TextEncoder 将字符串转为 UTF-8 字节数组,再进行编码。本工具已处理 Unicode 兼容性问题。
我的数据安全吗?
本工具完全在浏览器本地运行,不向任何服务器发送数据,内容不会离开你的设备。可以放心粘贴敏感文本进行测试。