SVG 优化器

纯本地处理的在线 SVG 优化器,覆盖 SVGO 常用插件核心能力: 去除 XML 声明 / DOCTYPE / 注释 / metadata, 清理 Inkscape / Sketch / Adobe 编辑器残留属性与无意义 id, 简化数字精度0.5 → .51.000 → 1), 去除默认值属性fill="black" stroke="none"), 压缩空白与换行。内置保守 / 标准 / 激进3 套预设与 11 条规则独立开关,实时预览优化前后效果,一键复制下载。 所有处理在浏览器本地完成,SVG 内容不离开浏览器,零广告零追踪。

优化规则
等待输入 SVG 文本
请在左侧输入 SVG 文本以查看优化结果

常见问题

SVG 优化器是否在本地处理?会上传 SVG 内容吗?

是的,全部在浏览器本地处理,SVG 内容不离开浏览器
- 优化逻辑由 JavaScript 在浏览器执行,不调用任何后端 API
- 文件上传通过 FileReader 读取为文本,不上传到服务器
- 历史输入仅保存在当前浏览器内存中(关页即清,不持久化不上传)
- 无 Cookie 追踪、无第三方统计、无广告
隐私建议:处理敏感图标(如内部产品 logo)时可放心使用, 拔网线也能正常优化。如需进一步验证,可在浏览器开发者工具 Network 面板确认无任何请求。

为什么 SVG 需要优化?编辑器导出的 SVG 有哪些冗余?

编辑器(Inkscape / Illustrator / Sketch / Figma)导出的 SVG 通常含大量冗余:
- XML 声明与 DOCTYPE<?xml version="1.0"?><!DOCTYPE> 在 HTML 内联场景下不必要
- metadata 元素:含 RDF 版权信息、编辑器元数据,体积可观且不影响渲染
- 编辑器命名空间xmlns:sodipodi xmlns:inkscape 及相关属性(如 inkscape:label sodipodi:nodetypes
- 无意义 id:如 Layer_1 _x2C_ rect-1,编辑器自动生成,无引用价值
- 多余精度50.00000 2.00000 可简化为 50 2
- 默认值属性fill="black" stroke="none" 是 SVG 默认值,可移除
- 换行缩进:编辑器为可读性添加的空白,对渲染无影响
优化收益:典型 Inkscape 导出 SVG 可压缩 30%-60%, 减少首屏加载体积与内联 HTML 体积。

保守 / 标准 / 激进 3 套预设有什么区别?

3 套预设对应不同场景的优化强度:
- 保守:仅去除 XML 声明、DOCTYPE、注释与编辑器残留, 保留所有结构、数字精度、默认值与空白。适合需要保留可读性与调试信息的场景, 体积压缩 10%-20%
- 标准(默认):在保守基础上额外去除 desc、简化数字精度、 去除默认值属性、压缩空白。平衡体积与可读性,适合大多数场景, 体积压缩 30%-50%
- 激进:在标准基础上额外去除 title 元素(影响无障碍), 适合 SVG 内联到 HTML / CSS 的极致压缩场景,体积压缩 40%-60%
建议:先用标准预设优化,若仍需更小体积再切激进; 需要保留无障碍语义(如 logo 图标的 title)时用保守或标准。

优化后的 SVG 会破坏渲染吗?如何验证?

本工具的优化规则均为安全规则,不破坏 SVG 结构合法性,但仍建议验证:
- 预览对比 Tab:本工具内置「预览对比」面板,左右并排渲染优化前后 SVG, 视觉一致即说明优化安全
- 不优化 path 数据:path 的 d 属性含复杂指令(M/L/C/Z/Q/A), 重新编码易引入渲染差异,本工具不触碰 path 数据,留给 SVGO 的 convertPathData 插件
- 保留 text 内容:压缩空白时用占位符保护 <text><tspan> 内容,避免影响文字渲染
- 保留被引用的 id:仅移除未被 url(#id) href="#id" xlink:href="#id" 引用的编辑器 id, 不破坏 <use> <clipPath> <mask> 引用
异常排查:若预览发现渲染异常,可逐条关闭规则定位问题(建议先关闭 removeEditorIds 与 removeDefaultAttrs),并在 GitHub 反馈具体 case。

为什么不优化 path 数据?SVGO 的 convertPathData 有什么不同?

path 数据优化复杂度高且易引入渲染差异,本工具基于字符串与正则的轻量方案 无法安全处理:
- 坐标相对化:将 M/L 绝对坐标转为 m/l 相对坐标可减小体积, 但需解析前一个点的位置
- 指令合并:连续的 L 指令可合并为隐式指令(如 L 1 2 3 4), 需语义分析
- 曲线平滑:C 三次贝塞尔可转为 S 平滑贝塞尔,需控制点共线判定
- 精度损失:path 坐标精度简化可能引入亚像素级渲染差异, 对像素级精确的图标(如 favicon)不可接受
本工具的定位:轻量、安全、零依赖,覆盖 80% 通用优化场景。 如需 path 级优化,建议使用 svgo CLI(Node.js 工具)或 SVGOMG 在线工具(基于 SVGO 完整插件链)。

removeTitle 默认关闭,什么时候应该开启?

title 元素影响 SVG 无障碍语义,移除后屏幕阅读器无法读出图标含义:
- 保留 title(默认):适合独立 SVG 文件、需要无障碍支持的场景 (如网站 logo、导航图标)
- 移除 title(激进预设):适合 SVG 内联到 HTML / CSS 的场景, 此时 HTML 上下文已提供语义(如 <button aria-label="保存">), SVG 内的 title 反而冗余
无障碍最佳实践:若 SVG 作为独立文件被 <img src> 引用,建议保留 title;若内联到 HTML,可移除 title 并在父元素提供 aria-label

数字精度简化规则(0.5 → .5)会不会破坏渲染?

不会,SVG 数值精度简化是安全的
- SVG 规范允许省略前导零0.5.5 在 SVG 所有属性中语义完全等价
- 尾随零去除1.501.51.01,数值不变
- 精度截断:保留 3 位小数(1.234561.235), 对屏幕渲染(DPI 通常 96-192)几乎无影响,仅在像素级精确的印刷场景可能可见差异
- 不处理颜色 hex#3b82f6 不含小数点,不会被匹配
边缘场景:若 SVG 用于高精度印刷(如 PDF 矢量图), 可在「保守」预设中关闭此规则,保留原始精度。

优化后的 SVG 如何内联到 HTML?有什么注意事项?

SVG 内联到 HTML 的常见方式
- 直接嵌入:将 <svg> 整段粘贴到 HTML 中, 可用 CSS 控制颜色(fill: currentColor
- 使用 use 引用:将 SVG 放入 <symbol> 定义,通过 <use href="#icon"> 引用
- data URI:编码为 data:image/svg+xml,... 用于 CSS background-image<img src>
内联优化注意事项
- 移除 xmlns="http://www.w3.org/2000/svg" 命名空间声明(HTML 内联不需要)
- 使用「激进」预设移除 title 与 desc,避免屏幕阅读器重复读出
- 保留 viewBoxfill="currentColor",便于 CSS 控制尺寸与颜色
- data URI 场景需 URL 编码 # % 等特殊字符, 可配合本站 Base64 工具进一步编码