免费转换器

Base64 编码器 / 解码器

在浏览器中即时将文本或文件编码为Base64,或解码Base64字符串。免费、私密,无需上传。

关于此工具

Base64 是一种编码方案,使用 64 个可打印字符将二进制数据表示为 ASCII 文本:A-Z、a-z、0-9、加号 (+) 和斜杠 (/),并使用等号 (=) 进行填充。该格式最初旨在使二进制附件能够在 7 位干净的电子邮件传输中幸存,但如今已扩展到数十种用途:HTML 中的数据 URL、包含图像数据的 JSON、JWT 有效负载、基本身份验证标头以及任何需要携带字节的基于文本的协议。

编码需要 3 个字节的输入并产生 4 个 ASCII 字符的输出。因此,输出比输入长 33%,这是将二进制转换为文本安全格式的成本。解码正好反转该过程,从编码文本中恢复原始字节。

该工具可处理两个方向。编码模式采用文本输入(或通过上传的二进制文件)并生成 Base64 文本。解码模式采用 Base64 文本并生成原始文本或可下载的二进制文件。令牌和标识符支持 URL 安全变体(使用 - 和 _ 代替 + 和 /)。

为什么使用 Base64

Base64 是在纯文本上下文中嵌入二进制数据的标准方法。 HTML 中的内联图像使用数据 URL(data:image/png;base64,...),因此小图标可以随页面一起提供,无需单独的请求。携带图像、证书或签名的 JSON 有效负载将它们编码为 base64 字符串。 JWT 令牌是三个以点分隔的 Base64 编码段。

Base64 还规范了错误处理 8 位二进制的协议的字符处理。身份验证标头(基本身份验证使用 Base64)、电子邮件附件、包含密钥的配置文件以及许多 API 都需要 Base64,因为二进制文件无法可靠地通过其管道。

使用方法

粘贴数据,选择方向。

  1. 选择编码或解码: 编码从二进制或文本输入生成 Base64 文本。解码则反转该过程。
  2. 添加输入: 对于编码,粘贴文本或上传二进制文件。要进行解码,请粘贴 Base64 文本。该工具自动检测 URL 安全变体。
  3. 转换: 浏览器使用 btoa 进行编码,使用 atob 进行解码(对非 ASCII 文本使用 UTF-8 处理)。输出是精确且确定的。
  4. 复制或下载: 编码文本可以嵌入 URL、JSON、HTML 数据 URL 或任何基于文本的协议中。将二进制下载解码为文件,并根据检测到的文件类型猜测适当的扩展名。

常见用例

技术细节

Base64 将每 6 位输入映射到 64 个输出字符之一。三个输入字节(24 位)产生四个输出字符。当输入长度不是 3 的倍数时,编码器会附加一两个等号以将输出填充为 4 个字符的倍数。

URL 安全的 base64(在 RFC 4648 第 5 节中定义)将 + 替换为 - 并将 / 替换为 _,以生成可在 URL 和文件名中安全使用的字符串,而无需进一步转义。在 URL 安全上下文中,填充等号有时会被省略;解码器通常接受这两种形式。

JavaScript 的 btoa 和 atob 直接处理 ASCII,但无法处理非 ASCII 字符串。对于 UTF-8 文本,转换器使用 TextEncoder/TextDecoder 在文本和二进制之间进行转换,然后对二进制进行 Base64 编码。这可以正确处理表情符号、重音字符和非拉丁脚本。

最佳实践

常见问题

Base64 编码有什么用?
Base64 将二进制数据转换为 ASCII 文本。常见用途包括在 HTML(数据 URI)中嵌入图像、对电子邮件附件进行编码、在 JSON API 中传输二进制数据以及在基于文本的数据库中存储二进制 blob。
Base64 编码会加密我的数据吗?
不。Base64 是一种编码,而不是加密。任何人都可以解码 Base64 字符串。它是为安全数据传输而不是安全而设计的。对敏感数据使用实际加密(AES、RSA)。
为什么 Base64 会增加文件大小?
Base64 将每 3 个字节的输入表示为 4 个 ASCII 字符,导致大小增加约 33%。这是能够安全地将二进制数据嵌入文本格式的权衡。
我可以将图像编码为 Base64 吗?
是的。上传图像文件,该工具将生成一个 Base64 字符串,您可以将其用作 HTML 或 CSS 中的数据 URI (data:image/png;base64,...)。
JWT 令牌是 base64 吗?
是的 — JWT 由三个以点分隔的 base64url 编码段组成。第一个是标头,第二个是有效负载,第三个是签名。
我的数据是否上传到服务器?
不会。编码和解码在浏览器中使用 btoa、atob、TextEncoder 和 TextDecoder 进行。
最大尺寸是多少?
最大 50 MB。浏览器内存限制了非常大的输入的实际大小。
为什么我的解码输出看起来像垃圾?
源很可能是二进制的,而不是文本。切换到文件下载模式以获取二进制文件,或检查输入是否实际上是 Base64 编码的文本而不是二进制文件。