Base64 Files
工具 + 指南

Base64 Data URI

解析 Data URI 提取 MIME、大小和预览;或从 MIME Type + Base64 生成完整 Data URI。

什么是 Data URI?

Data URI(也叫 Data URL)是一种 URI 格式,它把文件的完整内容直接写进 URI 字符串里,而不是指向一个外部文件地址。这样,图片、字体、PDF 等任何文件都可以内嵌在 HTML、CSS 或 JSON 中,无需额外的 HTTP 请求。

Data URI 由 RFC 2397 定义,所有现代浏览器均支持,也是 HTML 邮件嵌入图片的标准方案之一。

Data URI 语法

data:image/png;base64,iVBORw0KGgo…
data:固定前缀
image/pngMIME Type
;base64编码标识(可选)
,分隔符
iVBORw0KGgo…数据内容
部分是否必须说明
data:必须固定前缀,声明这是一个 Data URI
mediatype可选MIME Type,如 image/png。省略时默认为 text/plain;charset=US-ASCII
;base64可选声明数据为 Base64 编码。省略时数据以 URL 编码的文本形式出现
,必须分隔符,头部与数据之间的边界
data必须实际内容,Base64 字符串或 URL 编码文本

典型示例

PNG 图片1×1 透明 PNG,最小合法图片 Data URI
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
SVG 图片SVG 圆形,可直接作为 CSS background-image
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48Y2lyY2xlIG…
纯文本"Hello, World!" 的 Base64 编码
data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==
HTML 页面可作为 iframe src,实现沙箱内嵌 HTML
data:text/html;base64,PCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGgxPkhlbGxvPC9oMT48L2JvZHk+PC9odG1sPg==

什么时候用,什么时候不用

适合用 Data URI

  • 小图片内嵌到 CSS / HTML(< 5 KB)
  • HTML 邮件中嵌入图片
  • @font-face 内联小字体
  • favicon 直接写在 <link>
  • JSON API 传递小附件
  • 单文件 HTML 需要自包含资源

不适合用 Data URI

  • 大文件(> 10 KB),体积膨胀明显
  • 需要被浏览器独立缓存的资源
  • 多个页面共用的图片(缓存失效)
  • 需要 CDN 分发或懒加载
  • 大量图片(每个都内联会撑大 HTML)
  • 需要服务端流式传输的场景

常见问题

什么是 Data URI?

Data URI 是一种将文件数据直接写进 URL 字符串的格式,格式为 data:[mime][;base64],[数据]。它让图片、字体、文本等资源可以内嵌在 HTML、CSS 或 JSON 中,不需要额外的 HTTP 请求。

Data URI 和普通 URL 的区别是什么?

普通 URL(如 https://example.com/image.png)是指向外部资源的指针,浏览器需要发请求获取内容。Data URI 直接包含内容本身,不需要网络请求,但也无法被独立缓存。

Data URI 可以用在 HTML 邮件中吗?

可以,而且是 HTML 邮件嵌入图片的常用方案。很多邮件客户端默认屏蔽外部图片,但 Data URI 把图片内嵌在邮件 HTML 里,不依赖外部请求,可以确保图片始终显示。缺点是邮件体积会增大。

为什么 Data URI 不能被浏览器缓存?

Data URI 是 HTML/CSS 文档的一部分,浏览器缓存的是包含它的整个文档,而不是 Data URI 本身。如果多个页面都用同一张图片,用外部 URL 只需下载一次,而 Data URI 每个页面都需要包含一份。

如何从 Data URI 中提取 MIME Type?

Data URI 格式为 data:[mime];base64,[data],取 data: 和第一个 ; 或 , 之间的部分就是 MIME Type。例如 data:image/png;base64,xxx 的 MIME Type 是 image/png。

没有 ;base64 的 Data URI 是什么格式?

如果省略 ;base64,数据部分是 URL 编码的文本,而不是 Base64。例如 data:text/html,<h1>Hello</h1> 是一个合法的 Data URI(浏览器会 URL 解码后渲染)。这种格式只适合文本内容,二进制文件必须用 Base64。

相关工具