SVG 转 DataURI
把 SVG 转成 DataURI 与 CSS 背景用法。
URL 编码 (data:image/svg+xml,...)
data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%2210%22%20fill%3D%22%230866ff%22%2F%3E%3C%2Fsvg%3EBase64 编码
data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiIGZpbGw9IiMwODY2ZmYiLz48L3N2Zz4=CSS 用法
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiIGZpbGw9IiMwODY2ZmYiLz48L3N2Zz4=");什么是SVG 转 DataURI?
这个工具把 SVG 矢量图代码转换为 Data URI 格式(如 data:image/svg+xml;base64,xxxx 或 data:image/svg+xml,xxxx 的 URL 编码形式),使得一段 SVG 代码可以像普通图片地址一样,直接用在 CSS 的 background-image、HTML 的 img 标签 src 属性,或内联进 JSON/JS 字符串中,而不需要额外引用一个独立的 .svg 文件。
为什么使用SVG 转 DataURI?
对于体积小、数量多的图标(比如网站里几十个小图标),每个都单独发一个 SVG 文件请求会增加 HTTP 请求数;转换成 Data URI 后可以直接内嵌进 CSS 或 HTML 里,减少网络请求、避免额外的文件依赖,常用于 CSS 背景图标、字体图标替代方案、邮件模板(很多邮件客户端限制外链图片)等场景。 工具支持两种编码方式:Base64 编码体积更大但兼容性最好,URL 编码在现代浏览器下通常体积更小且转换后字符串还能保持一定可读性,两者都是纯字符串转换,整个过程是浏览器本地处理,SVG 内容不会上传到服务器。
使用示例
转换一个简单图标用作 CSS 背景
输入 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2L2 22h20z"/></svg>,用 URL 编码方式转换后得到 data:image/svg+xml,%3Csvg xmlns='...'...%3E,可直接写进 CSS 的 background-image: url("生成的DataURI"); 中。
生成 Base64 版本用于 img 标签
同一段 SVG 用 Base64 编码后得到 data:image/svg+xml;base64,PHN2ZyB4bWxucz0i...,可以直接放进 <img src="..."> 里,兼容一些不支持 URL 编码格式的场景。
内联进 JSON 配置或 JS 变量
把生成的 Data URI 字符串赋值给 JS 变量(如 const iconUrl = "data:image/svg+xml,...";)或写进图标配置的 JSON 文件里,实现"零额外请求"加载图标,适合图标库、按需生成图标的场景。
使用提示
大体积或含有复杂路径、渐变、滤镜的 SVG 编码成 Data URI 后字符串会很长,写进 CSS 文件会显著增加文件体积,建议只对小图标使用这种方式,复杂或大尺寸矢量图仍建议作为独立文件引用并走 HTTP 缓存。
常见问题
URL 编码和 Base64 编码该用哪种?
为什么预览不显示?
数据会上传吗?
为什么转换后在 CSS 里用不了,报错或不显示?
URL 编码和 Base64 编码该选哪个?
转换后的 SVG 还能通过 CSS 改颜色吗?
我的 SVG 文件会被上传到服务器吗?
相关工具
← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。