免费Base64文件编码器

将任意文件转换为Base64数据URL · 所有操作均在浏览器中完成。

将文件拖放到此处

请选择或拖放文件进行编码。

使用方法

  1. 上传文件:将任意文件(图像、PDF、字体、音频或二进制文件)拖放到拖放区域或点击浏览。
  2. 获取Base64字符串: 文件在浏览器中即时读取并编码为Base64。
  3. 复制并使用: 复制Base64字符串以嵌入HTML、CSS、JSON负载、数据URI或其他文本格式。

为什么使用Base64文件编码器?

二进制文件无法直接嵌入HTML、CSS、JSON、XML等文本格式。Base64编码将任意二进制文件转换为安全的ASCII字符串,可嵌入到允许文本的任何位置。这对于在HTML中直接嵌入图像(数据URI)、在CSS中包含字体、无需文件上传端点即可通过邮件或JSON API发送文件、以及创建自包含HTML文档至关重要。

功能特点

常见问题

Base64比原始文件大多少?

Base64编码会将文件大小增加约33%。100 KB的图像经过Base64编码后约为133 KB。这是将二进制内容嵌入文本的代价。

可以在HTML中使用Base64图像吗?

可以。使用数据URI,如 <img src="data:image/png;base64,[您的Base64]"> 。这样可以无需外部HTTP请求将图像直接嵌入HTML,但会增加页面大小。

有文件大小限制吗?

本工具没有强制限制,但非常大的文件(10 MB以上)可能编码较慢,结果字符串会非常长。对于大文件,建议考虑服务器端解决方案。

Base64 的来历,以及为什么我们仍在使用它

Base64 旨在通过 7 位 ASCII 管道传输 8 位二进制数据。第一个正式规范是用于隐私增强邮件的 RFC 989(1987 年 2 月)RFC 1341(1992 年 6 月),特别是 RFC 2045「MIME 第一部分」(1996 年 11 月),使其成为将二进制文件附加到电子邮件的标准方式。当前的权威文档是 RFC 4648(2006 年 10 月),它还定义了 URL-safe 变体。机制很简单:取 3 个字节的输入(24 位),分成四个 6 位组,在 64 字符字母表 A-Z a-z 0-9 + / 中查找每一个,附加 = 填充以使输出长度为 4 的倍数。输出大小恰好是输入的 4 ÷ 3 ≈ 133 %。对于嵌入到 URL 中(JWT、OAuth、S3 预签名 URL),RFC 4648 §5 的 URL-safe 变体用 - 替换 +,用 _ 替换 /;通常省略填充。

data: URL:HTML 和 CSS 中的 Base64

data: URL 方案在 RFC 2397(1998 年 8 月)中指定。格式:data:[<mediatype>][;base64],<data>。示例:<img src="data:image/png;base64,iVBORw0KGgo..."> 内联嵌入 PNG 而无需额外的 HTTP 请求。WHATWG URL Living Standard 管理现代浏览器如何解释这些 URL,HTML Living Standard 确认它们在允许 URL 的任何地方都有效,包括 <img><link><iframe> 和 CSS url() 函数。实用指南:对于小于约 4 KB 的资产使用 data URL,节省一次 HTTP 请求胜过 33% 的负载膨胀。超过 10 KB,使用浏览器缓存的常规文件引用几乎总是获胜,特别是在 HTTP/2 多路复用上。

驱动此工具的浏览器 API

此页面使用来自 HTML Living Standard 的 FileReader API(最初是 2009 年 11 月的 W3C File API 首个公开工作草案;在 Chrome 13 / Firefox 3.6 / Safari 6 / Internet Explorer 10 中发布)。FileReader.readAsDataURL(blob) 用一次调用返回完整的 data:<mime>;base64,<...> 字符串。遗留替代方案是 btoa()(以历史 Unix「binary-to-ASCII」命令命名,是 JavaScript DOM Level 0 的遗留物),但它在非 Latin-1 输入上抛出,除非您首先通过 UTF-8 转码。现代替代品是 Uint8Array.prototype.toBase64(),在 TC39 Stage 4 添加到 ECMAScript 2025。它在 Chrome 132(2025 年 1 月)、Firefox 133(2024 年 11 月)和 Safari 18.2(2024 年 12 月)中发布。对任何新代码使用新 API;为与旧浏览器的兼容性保留 btoa

此工具的输出实际去向

常见错误

更多常见问题

Base64 的确切大小开销是多少?

恰好是输入的 4 ÷ 3 ≈ 1.333 倍,加上 1-2 字节的 = 填充。999 字节的输入变为 1332 个 Base64 字符(没有填充,因为 999 ÷ 3 = 333 正好)。1000 字节的输入变为 1336(一字节填充)。对于 data URL,添加前缀字节(例如 data:image/png;base64, 是 23 个字符)。

如何为 JWT 或 S3 预签名 URL 获取 URL-safe Base64?

从此工具获取标准 Base64 输出并应用两个替换:+-,/_。JWT 特别去除尾随的 = 填充;S3 保留它。RFC 4648 §5 记录了该变体。

我可以通过 Base64 往返一个文件而不损坏吗?

可以。Base64 是无损编码。编码为 Base64 然后解码回来产生与原始字节完全相同的原件。丢失数据的唯一方法是截断 Base64 字符串(例如限制存储字符)或在解码时混淆标准与 URL-safe 字母表。

此工具可以处理的最大文件大小是多少?

没有硬限制;实际上浏览器内存是上限。编码 100 MB 文件大约需要 100 MB 的输入加 133 MB 的输出,加上结果字符串的 DOM 开销,可能总共 400 MB。在移动设备上,预计 30 MB 以上会失败。编码在主线程上运行,因此 UI 在处理过程中冻结;对于超过 20 MB 的文件,服务器端或 Web Worker 解决方案更舒适。

我的文件会上传到任何地方吗?

不会。文件使用浏览器的 FileReader.readAsDataURL API 读取,完全在您的浏览器中运行。不发出网络请求,不存储您文件的任何副本在任何服务器上。打开 DevTools 中的网络选项卡并放入文件:您将在编码期间看到零个出站请求。

相关工具

免费在线 Base64 编码器与解码器 图片 → Base64 转换器,免费 Base64 图片解码器,免费 免费 URL 编码器/解码器