Skip to content

Base64 解码与编码工具

免费在线 Base64 解码编码工具。实时转换,支持中文和 Emoji,100% 浏览器端运行,数据不离开设备,无需注册。

无追踪 浏览器中运行 免费
文本
Base64
已审核 RFC 4648 合规性和 UTF-8 正确性 — Go Tools 工程团队 · 2026年3月22日

什么是 Base64?

Base64 是由 RFC 4648 定义的二进制到文本编码方案,使用 64 个可打印 ASCII 字符将任意二进制数据转换为安全的文本表示。它是互联网基础设施中使用最广泛的编码方式之一,支撑着从电子邮件附件到 JSON Web Token 和 TLS 证书的各种应用。

正如 RFC 4648 第 1 节所述:「Base64 编码旨在将任意八位字节序列表示为不需要人类可读的形式。」

Base64 将输入的每 3 个字节(24 位)分成 4 组,每组 6 位,再映射到 64 个可打印字符之一:A-Z(0-25)、a-z(26-51)、0-9(52-61)、+(62)、/(63),输入长度不是 3 的倍数时用 = 填充。Base64 编码会使数据体积增加约 33%(RFC 4648)——这是为了让二进制数据能在纯文本信道中安全传输所做的权衡。

Base64 最常见的应用场景包括:电子邮件附件(MIME 编码)、在 HTML/CSS 中嵌入小文件(数据 URI)、JWT 令牌、API 认证头(Basic Auth)以及在 JSON/XML 等文本格式中存储二进制数据。需要注意的是,Base64 不是加密——它只是一种编码方式,任何人都可以轻松解码。

本工具的所有编码和解码操作均完全在浏览器中运行——你的数据不会上传到任何服务器,因此可以安全地用于处理 API 密钥、令牌和其他敏感数据。

使用这个免费在线 Base64 转换工具,可以在浏览器中即时将 Base64 解码为文本,或将文本编码为 Base64。

Base64 经常与其他编码和数据工具配合使用。例如,你可能需要先用 JSON 格式化工具整理 JSON 数据,再对其进行 Base64 编码以用作 API 载荷;或者用 URL 编码工具对 Base64 字符串进行 URL 编码后再放入查询参数;或者在解码 Base64 编码的下载文件后,使用 MD5 或 SHA-256 校验工具验证文件完整性。刚接触 Base64?阅读我们的Base64 入门指南。想深入了解 MIME、Data URL 和性能优化等进阶话题?请参阅Base64 完整指南

// Encode plain text to Base64
const encoded = btoa('Hello, World!');
console.log(encoded); // → 'SGVsbG8sIFdvcmxkIQ=='

// Decode Base64 back to text
const decoded = atob('SGVsbG8sIFdvcmxkIQ==');
console.log(decoded); // → 'Hello, World!'

// UTF-8 safe encode (handles Chinese, emoji, any Unicode)
function encodeBase64(str) {
  const bytes = new TextEncoder().encode(str);  // to UTF-8 bytes
  return btoa(String.fromCharCode(...bytes));
}
console.log(encodeBase64('你好')); // → '5L2g5aW9'

核心功能

实时编解码

输入即转换,编码和解码同时进行,无需点击按钮,毫秒级响应。

完整 UTF-8 支持

正确处理中文、日文、韩文、Emoji 等所有 Unicode 字符,不会出现乱码。

双向转换

在文本和 Base64 之间自由双向转换,在任一输入框中输入即可。

100% 浏览器端处理

所有处理均在浏览器本地完成,数据绝不离开你的设备——无需上传服务器,无任何追踪。

错误检测

自动检测无效的 Base64 输入,提供清晰的错误提示。

一键复制

点击复制按钮即可将编码或解码结果复制到剪贴板。

示例

纯英文文本

Hello, World!
SGVsbG8sIFdvcmxkIQ==

将简单的英文文本编码为 Base64 格式

中文文本

你好,世界!
5L2g5aW977yM5LiW55WM77yB

正确处理 UTF-8 编码的中文字符

含 Emoji 的文本

Hello 🌍🚀
SGVsbG8g8J+MjfCfmoA=

支持 Emoji 等多字节 Unicode 字符的编码

JSON 数据

{"name":"Alice","age":30}
eyJuYW1lIjoiQWxpY2UiLCJhZ2UiOjMwfQ==

编码 JSON 字符串,常用于 API 令牌和数据传输

使用方法

  1. 1

    输入文本或 Base64

    在左侧的「文本」框中输入要编码的文本,或在右侧的「Base64」框中输入要解码的 Base64 字符串。也可以点击「加载示例」快速体验。

  2. 2

    实时转换

    工具会在你输入时实时进行编码或解码转换,无需点击任何按钮。

  3. 3

    复制结果

    点击「复制」按钮即可一键将转换结果复制到剪贴板。

常见使用场景

API 认证
编码 HTTP Basic Auth 凭证和 API 令牌,这是许多 API 认证方案的基础。
数据 URI 嵌入
将小图片和文件 Base64 编码后嵌入 HTML/CSS 中,减少 HTTP 请求。
JWT 令牌调试
解码 JWT(JSON Web Token)的 payload 和 header 部分,快速检查令牌内容。
邮件附件处理
理解和调试 MIME 编码的邮件附件,邮件系统使用 Base64 传输二进制文件。
配置文件处理
编码和解码 Kubernetes Secrets、环境变量等配置中的 Base64 值。
数据传输
在 JSON 和 XML 等文本格式中安全传输二进制数据。

技术细节

符合 RFC 4648 标准
完整支持标准 Base64 编码规范,包括正确的填充处理。
浏览器端处理
使用浏览器原生的 btoa()/atob() 和 TextEncoder/TextDecoder API 进行编解码。
完整 Unicode 支持
通过 UTF-8 编码正确处理所有 Unicode 字符,包括多字节字符和代理对。

最佳实践

勿用于加密
Base64 是编码而非加密,任何人都可以轻松解码。敏感数据请使用正式的加密算法。
注意体积增加
Base64 编码后数据增大约 33%,大文件不建议使用 Base64,请选择直接的二进制传输方式。
正确处理 UTF-8
编码非 ASCII 文本时,先使用 TextEncoder 转换为 UTF-8 字节,避免出现乱码问题。

常见问题

什么是 Base64 编码?
Base64 是一种将二进制数据转换为 ASCII 字符串的编码方案。它使用 64 个可打印字符(A-Z、a-z、0-9、+ 和 /)加上填充字符 = 来表示二进制数据。Base64 广泛用于在仅支持文本的环境中传输二进制数据,例如电子邮件附件、数据 URI 和 API 令牌。
使用这个工具时我的数据安全吗?
完全安全。所有编码和解码操作都在你的浏览器本地使用 JavaScript 原生的 btoa()/atob() 和 TextEncoder/TextDecoder 完成——数据绝不会离开你的设备。没有服务器上传,没有 Cookie,没有任何形式的数据存储。因此可以安全地用于处理 API 密钥和敏感数据。
这个工具支持中文和 Emoji 吗?
支持。本工具使用 TextEncoder/TextDecoder API 正确处理 UTF-8 编码,完美支持中文、日文、韩文、Emoji 以及其他多字节 Unicode 字符。许多在线 Base64 工具无法正确处理非 ASCII 字符,但本工具可以。
Base64 编码安全吗?它是加密吗?
不是,Base64 不是加密。它是一种编码方案,任何人都可以轻松解码。Base64 的目的是将二进制数据转换为文本安全的格式,而不是保护数据。永远不要使用 Base64 来保护敏感信息——如果需要安全性,请使用 AES 等正式的加密算法。
什么是数据 URI?Base64 在其中起什么作用?
数据 URI(data:)是一种将小文件直接嵌入 HTML 或 CSS 中的方式,格式为 data:[媒体类型];base64,[编码数据]。例如,可以将小图片 Base64 编码后直接嵌入 HTML,避免额外的 HTTP 请求。这对于小图标和简单图形特别有用,但对于大文件不建议使用,因为 Base64 会增加约 33% 的体积。
Base64 和 Base64URL 有什么区别?
标准 Base64 使用 + 和 / 字符,在 URL 中 + 表示空格、/ 是路径分隔符,因此需要进行百分号编码。如果需要在 URL 中使用标准 Base64,可以用 URL 编码工具对其进行百分号编码。Base64URL 是一种变体,用 - 替换 +,用 _ 替换 /,并且通常省略尾部的 = 填充。Base64URL 常用于 JWT(JSON Web Token)和 URL 参数中。本工具使用标准 Base64 编码。
为什么 Base64 编码后的数据会更大?
Base64 编码后的数据比原始数据大约 33%。这是因为 Base64 将每 3 个字节的二进制数据转换为 4 个 ASCII 字符。这种体积增加是在文本安全传输与数据大小之间的权衡。对于大文件,建议使用实际的文件传输方式而非 Base64 编码。
如何在命令行中进行 Base64 编解码?
在 macOS/Linux 中,可以使用 base64 命令:编码用 echo -n 'Hello' | base64,解码用 echo 'SGVsbG8=' | base64 -d(macOS 用 -D)。在 Windows PowerShell 中,可以使用 [Convert]::ToBase64String() 和 [Convert]::FromBase64String()。本在线工具提供了一个更方便的可视化界面来完成同样的操作。
Base64 可以用在 HTML 和 CSS 中吗?
可以。Base64 常用于数据 URI(Data URI)将小资源直接嵌入 HTML 或 CSS 中,避免额外的 HTTP 请求。HTML 中用法:。CSS 中用法:background-image: url('data:image/svg+xml;base64,PHN2Zy...')。适合小图标和 SVG(5 KB 以下),大文件不建议使用,因为 Base64 会增加 33% 体积且无法利用浏览器缓存。
如何在 Python 中进行 Base64 编解码?
Python 内置 base64 模块:编码用 import base64; base64.b64encode(b'Hello').decode(),结果为 'SGVsbG8='。解码用 base64.b64decode('SGVsbG8=').decode(),结果为 'Hello'。处理中文时需注意编码:base64.b64encode('你好'.encode('utf-8')).decode()。在 JavaScript 中使用 btoa()/atob(),在 Java 中使用 java.util.Base64 类。
Base64 编码使用哪些字符?
标准 Base64 字母表(RFC 4648)由 64 个字符组成:大写字母 A-Z(值 0-25)、小写字母 a-z(值 26-51)、数字 0-9(值 52-61)、加号 +(值 62)和斜杠 /(值 63)。等号 = 用作填充字符。URL 安全变体(Base64URL)将 + 替换为 -,将 / 替换为 _,以避免与 URL 保留字符冲突。
我需要在 HTML 邮件模板中嵌入一张小图片——应该使用 Base64 数据 URI 还是在外部托管图片?
对于 HTML 邮件,Base64 数据 URI 实际上是嵌入小图片(如 Logo 和图标)的推荐方式。许多邮件客户端(Outlook、Gmail)默认会积极拦截外部托管的图片,要求用户点击「显示图片」才能看到它们。将图片作为 Base64 数据 URI(data:image/png;base64,...)嵌入可以完全绕过这个问题——图片就是邮件本身的一部分。代价是邮件体积增大:Base64 会增加约 33% 的开销,所以 10 KB 的 PNG 在邮件中变成约 13 KB。为了最佳兼容性,建议嵌入的图片保持在 20 KB 以内。较大的图片或背景图建议使用外部托管方式。
为什么我的 Base64 编码字符串包含 + 和 / 字符,导致 URL 参数出错?
标准 Base64 使用 + 和 / 作为 64 个字符中的两个,而这两个字符在 URL 中有特殊含义(+ 表示空格,/ 是路径分隔符)。如果不进行编码就将标准 Base64 字符串放入 URL 查询参数,这些字符会破坏参数值。解决方案是使用 URL 安全 Base64(也称 Base64URL,RFC 4648 中定义),它将 + 替换为 -,将 / 替换为 _。这种变体用于 JWT 令牌、OAuth 流程以及任何出现在 URL 中的 Base64 值。转换时只需将输出中的所有 + 替换为 -,/ 替换为 _,并可选地去掉 = 填充字符。
我在尝试解码 JWT 令牌——Base64URL 解码如何工作?它与标准 Base64 有什么区别?
JWT(JSON Web Token)由三部分组成,以点分隔:header.payload.signature。header 和 payload 分别使用 Base64URL 编码——而不是标准 Base64。Base64URL 与标准 Base64 有两点不同:使用 - 代替 +,使用 _ 代替 /,并省略 = 填充字符。要手动解码 JWT,需将令牌按点分割,取第一或第二段,将 - 替换回 +,将 _ 替换回 /,如有需要添加 = 填充使长度为 4 的倍数,然后进行 Base64 解码。理解 Base64URL 编码在代码中实现令牌处理或调试原始令牌值时非常有帮助。

JSON 格式化与验证工具

编码和格式化

在浏览器中即时格式化、验证和美化 JSON。免费在线工具,支持语法验证、错误检测、压缩和一键复制,100% 隐私保护。

JSON 转 YAML 转换器

编码和格式化

粘贴 JSON 即时获得 YAML,浏览器端实时转换。支持 Kubernetes、Docker Compose 和 Terraform,提供 2/4 空格缩进、Norway 安全自动引号,100% 隐私保护,数据不离开设备。

URL 编码解码在线工具 — 内置 URL 结构解析

编码和格式化

粘贴 URL 即时编码或解码,实时显示结果。内置 URL 解析器将协议、域名、路径、查询参数拆解为可编辑字段。支持 encodeURI 和 encodeURIComponent 双模式切换,检测双重编码问题。纯浏览器端运行,数据不离开设备。

YAML 转 JSON 转换器

编码和格式化

粘贴 YAML 即时获得 JSON,浏览器端实时转换。支持 K8s 清单、OpenAPI 规范、Helm values 和 Ansible playbook,完整展开锚点/别名,100% 隐私保护,数据不离开设备。

进制转换器 — 二进制、十六进制、十进制、八进制互转

转换工具

在线免费进制转换工具,支持二进制、八进制、十进制、十六进制及 2-36 任意进制互转。无需注册,数据不离开浏览器,即时获取结果。

在线压缩 JPEG、PNG、WebP 图片 — 免费批量处理

转换工具

免费在线压缩 JPEG、PNG、WebP 图片,体积缩小高达 80%。浏览器本地处理、图片不上传服务器。支持批量压缩 20 张、质量调节、前后对比预览。无需注册。