Base64 Files
HTML · Data URL · iframe · 下载链接

HTML 转 Base64

将 HTML 代码编码为 Base64 Data URL。即时生成 iframe 嵌入代码、浏览器下载链接和 JavaScript 示例——无需服务器,直接在浏览器中嵌入或分发 HTML。

输出

典型应用场景

iframe 沙箱嵌入

在网页中嵌入一段独立的 HTML 内容,无需额外的 HTML 文件或服务器端点。常用于代码预览、在线编辑器、文档内嵌演示。

<iframe src="data:text/html;base64,…" sandbox></iframe>

浏览器端文件下载

利用带 download 属性的链接标签和 Data URL 在浏览器中生成 HTML 文件并触发下载,无需任何服务器。适合在线编辑器的"导出"功能。

<a href="data:text/html;base64,…" download="page.html">Download</a>

邮件内嵌 HTML

某些邮件客户端支持在邮件中嵌入 Base64 编码的 HTML 内容,不依赖外部服务器,适合离线阅读场景。

Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64

Chrome 扩展 / Electron

在 Chrome 扩展 popup 或 Electron 应用中动态插入 HTML 内容,使用 Data URL 可以避免文件系统访问权限问题。

webContents.loadURL(`data:text/html;base64,${b64}`)

四种输出格式

工具使用 TextEncoder 将 HTML 字符串转为 UTF-8 字节,再编码为 Base64,正确处理中文、emoji 等 Unicode 字符。

Data URL

完整的 data:text/html;base64,… 字符串,可直接用于任何接受 URL 的 HTML 属性。

iframe 嵌入

含 sandbox 属性的完整 iframe 标签,直接粘贴到页面中即可嵌入 HTML 内容。

下载链接

带 download 属性的链接标签,用户点击后浏览器直接下载 HTML 文件,无需服务器。

JS 代码

包含 UTF-8 安全编码函数、动态创建 iframe、触发下载和 Node.js 版本的完整代码示例。

iframe sandbox 属性参考

sandbox

最严格,禁止所有脚本、表单、弹窗

sandbox="allow-scripts"

允许 JavaScript 执行

sandbox="allow-same-origin"

允许当前 origin 的资源访问

sandbox="allow-forms"

允许表单提交

sandbox="allow-popups"

允许打开新窗口

常见问题

HTML Data URL 可以直接用在 iframe src 里吗?

可以,data:text/html;base64,… 是合法的 iframe src。但现代浏览器(尤其 Chrome 60+)已限制导航到 data: URL,嵌套在非顶层帧中的 data: URL 可能被拦截。推荐添加 sandbox 属性并只开启必要权限(如 allow-scripts allow-same-origin)以提升安全性和兼容性。

HTML Base64 Data URL 有长度限制吗?

URL 本身理论上没有硬性限制,但浏览器和操作系统会有实际约束。Chrome 对 data: URL 的限制约为 2 MB,过大的 HTML 可能导致页面加载缓慢或被截断。建议小于 512 KB 的 HTML 使用 Data URL,更大的文件应通过服务器传输。

为什么要把 HTML 编码为 Base64 而不是直接使用文件链接?

当你需要在没有服务器的环境中分发 HTML(如邮件内嵌、Chrome 扩展、Electron 应用内部)时,Data URL 非常有用。它可以将完整 HTML 页面嵌入为单个字符串,无需任何文件系统访问或网络请求。

HTML 中含有中文或特殊字符时编码正确吗?

工具使用 TextEncoder 将 HTML 字符串转为 UTF-8 字节,再进行 Base64 编码,完全支持中文、emoji 和其他 Unicode 字符。记得在 HTML 中包含 charset=UTF-8 的 meta 声明,以确保浏览器正确解码。

下载链接(download attribute)在所有浏览器都有效吗?

download 属性在所有现代浏览器(Chrome、Firefox、Edge、Safari 14+)中都支持。对于 data: URL,Safari 在早期版本中支持有限,但 Safari 14 及以后版本可以正常使用。IE 11 不支持此属性。

如何在 Node.js 中将 HTML 编码为 Base64?

const b64 = Buffer.from(htmlString, "utf-8").toString("base64")。生成 Data URL:const dataUrl = "data:text/html;base64," + b64。解码:const html = Buffer.from(b64, "base64").toString("utf-8")。