oLoveTools

SVG Optimizer — 在浏览器里运行真正的 svgo

用 svgo 全部 45 个插件压缩 SVG,逐个自行开关,并查看真正传输的 gzip 体积。全部在你本机的后台 worker 中运行——无需上传、无需排队、无需注册。

SVG 矢量文件拖动 SVG 文件到这里,或点击浏览文件
示例 Demo

工作原理

三个步骤,中间那步由你决定。

  1. 1

    放入文件

    拖入 .svg 或 .svgz、粘贴代码,或从其他工具传过来。此时不会执行任何操作,文件只是等待。

  2. 2

    决定如何处理

    选择一个配置,或打开控制项自行设置全部 45 个插件。每个插件都标明它是否会改变可见效果。

  3. 3

    带走结果

    下载文件,或复制为 SVG、React 组件、CSS data URI,也可以不经下载文件夹直接送往下一个工具。

功能

真正的 svgo,全部 45 个插件

与整个行业构建时所用的同一引擎,只是跑在你的浏览器里而不是终端。均衡配置与 `npx svgo` 完全一致,你在这里看到的就是构建产出的结果。

打开别家拒收的文件

各类编辑器经常导出无效 XML:未声明的 inkscape: 前缀、孤立的 & 符号、BOM 标记。严格的解析器会拒收整份文档。本工具会修复缺陷、完成优化,并明确告诉你修了什么。

看得见的精度

可放大到 4000%、自由平移,按住 Alt 即可在同一倍率下切回原图。舍入造成的损伤会先以可见的抖动暴露出来,远早于反映在百分比上。

真正传输的体积

原始字节数与 gzip 后字节数并排显示。二者讲的是不同的故事:去掉空白在原始体积上效果惊人,压缩后却几乎没有变化,因为 gzip 早已处理过了。

数据不会离开你的设备

优化在你浏览器内的后台 worker 中运行,文件不会被上传。预览更进一步,会剥离脚本、事件处理器与远程引用,因此恶意 SVG 无法在你查看时执行代码或对外通信。

直接送往下一个工具

把优化后的文件直接送到 favicon 生成器、格式转换器、二维码工具或打包工具,无需下载再上传。

常见问题解答

我的 SVG 会被上传吗?

不会。svgo 运行在你浏览器内的 worker 线程中,文件始终不会离开你的设备。预览更进一步:在绘制任何内容之前,就已剥离脚本、事件处理器以及对远程文件的引用,因此打开别人发来的文件是安全的。

为什么我的文件在别的工具里被拒收,在这里却能用?

因为编辑器经常导出无效的 XML。最常见的元凶是使用了却未声明的命名空间前缀——比如写了 <g inkscape:groupmode="layer">,却没有对应的 xmlns:inkscape。包括 svgo 和你的浏览器在内的严格解析器会拒收整份文档。本工具会在优化前修复它(还有 BOM 标记、孤立的 & 符号和 DOCTYPE 内部子集),并明确告诉你修了什么。

精度最低能调到多少?

取决于图形本身,建议用眼睛看而不是靠猜。降低精度会对坐标取整,在大幅或精细的图形上,这种取整会以曲线抖动的形式显现,而此时文件往往还没小多少。放大后按住 Alt,即可在同一倍率下在结果与原图之间切换比对。

为什么原始体积和 gzip 体积的百分比差这么多?

因为它们衡量的是不同的东西。删空白、缩短属性名在原始字节上看着效果惊人,但 gzip 本就在合并这些重复,所以压缩后的体积几乎不动。几何层面的改动——尤其是 convertPathData——才会同时减小两者。如果你的服务器启用了压缩响应(几乎所有服务器都启用了),真正重要的是 gzip 那个数字。

结果会和我构建里的 svgo 一致吗?

在均衡配置下会:那就是 svgo 自身的 preset-default,插件顺序和默认值完全相同。只要你改动任何一个开关就偏离了它,界面上的"手动"标签会提示你这一点。

某些插件标注的"改变行为"是什么意思?

意思是该插件不只是把文件变小,而是改变了文件的行为本身。removeViewBox 会让 SVG 不再缩放。removeDimensions 会让它填满容器而不是使用自身尺寸。removeTitle 会删掉屏幕阅读器朗读的无障碍名称。它们默认全部关闭,"全部启用"按钮也不会开启其中任何一个。

oLoveTools 套件的一部分
oLoveTools

真正的 svgo,在你的浏览器中本地运行。

后台 worker,而非服务器

svgo 运行在浏览器内的 worker 线程中,因此对精细地图做多轮处理也不会卡住页面,而且可以中途取消。没有上传步骤、没有排队,也就意味着除了你自己的内存之外没有体积上限。

每一个开关,以及它的代价

全部 45 个插件均可单独开关,按作用对象分组,并标注风险等级:安全、重绘、改变行为。坐标精度与变换精度是两个独立滑块,因为旋转比普通坐标需要更多小数位。

本地运行,预览也安全

文件不会被上传到任何地方。此外,SVG 与其说是图片,不如说是文档:随意打开可能执行脚本并拉取远程资源。本预览会在渲染任何内容之前剥离脚本、事件处理器和跨源引用,因此查看别人发来的文件不构成风险。

常见问题解答

我的 SVG 会被上传吗?

不会。svgo 运行在你浏览器内的 worker 线程中,文件始终不会离开你的设备。预览更进一步:在绘制任何内容之前,就已剥离脚本、事件处理器以及对远程文件的引用,因此打开别人发来的文件是安全的。

为什么我的文件在别的工具里被拒收,在这里却能用?

因为编辑器经常导出无效的 XML。最常见的元凶是使用了却未声明的命名空间前缀——比如写了 <g inkscape:groupmode="layer">,却没有对应的 xmlns:inkscape。包括 svgo 和你的浏览器在内的严格解析器会拒收整份文档。本工具会在优化前修复它(还有 BOM 标记、孤立的 & 符号和 DOCTYPE 内部子集),并明确告诉你修了什么。

精度最低能调到多少?

取决于图形本身,建议用眼睛看而不是靠猜。降低精度会对坐标取整,在大幅或精细的图形上,这种取整会以曲线抖动的形式显现,而此时文件往往还没小多少。放大后按住 Alt,即可在同一倍率下在结果与原图之间切换比对。

为什么原始体积和 gzip 体积的百分比差这么多?

因为它们衡量的是不同的东西。删空白、缩短属性名在原始字节上看着效果惊人,但 gzip 本就在合并这些重复,所以压缩后的体积几乎不动。几何层面的改动——尤其是 convertPathData——才会同时减小两者。如果你的服务器启用了压缩响应(几乎所有服务器都启用了),真正重要的是 gzip 那个数字。

结果会和我构建里的 svgo 一致吗?

在均衡配置下会:那就是 svgo 自身的 preset-default,插件顺序和默认值完全相同。只要你改动任何一个开关就偏离了它,界面上的"手动"标签会提示你这一点。

某些插件标注的"改变行为"是什么意思?

意思是该插件不只是把文件变小,而是改变了文件的行为本身。removeViewBox 会让 SVG 不再缩放。removeDimensions 会让它填满容器而不是使用自身尺寸。removeTitle 会删掉屏幕阅读器朗读的无障碍名称。它们默认全部关闭,"全部启用"按钮也不会开启其中任何一个。

© 2026 oLoveTools关于

下一步

从 SVG 创建网站图标 FaviconBolt

SVG Optimizer | 免费在线SVG压缩与精简工具

100% 在线本地优化、清理并压缩 SVG 矢量图文件,有效减小文件体积并提升网页加载性能。

常见问题解答

我的 SVG 会被上传吗?

不会。svgo 运行在你浏览器内的 worker 线程中,文件始终不会离开你的设备。预览更进一步:在绘制任何内容之前,就已剥离脚本、事件处理器以及对远程文件的引用,因此打开别人发来的文件是安全的。

为什么我的文件在别的工具里被拒收,在这里却能用?

因为编辑器经常导出无效的 XML。最常见的元凶是使用了却未声明的命名空间前缀——比如写了 <g inkscape:groupmode="layer">,却没有对应的 xmlns:inkscape。包括 svgo 和你的浏览器在内的严格解析器会拒收整份文档。本工具会在优化前修复它(还有 BOM 标记、孤立的 & 符号和 DOCTYPE 内部子集),并明确告诉你修了什么。

精度最低能调到多少?

取决于图形本身,建议用眼睛看而不是靠猜。降低精度会对坐标取整,在大幅或精细的图形上,这种取整会以曲线抖动的形式显现,而此时文件往往还没小多少。放大后按住 Alt,即可在同一倍率下在结果与原图之间切换比对。

为什么原始体积和 gzip 体积的百分比差这么多?

因为它们衡量的是不同的东西。删空白、缩短属性名在原始字节上看着效果惊人,但 gzip 本就在合并这些重复,所以压缩后的体积几乎不动。几何层面的改动——尤其是 convertPathData——才会同时减小两者。如果你的服务器启用了压缩响应(几乎所有服务器都启用了),真正重要的是 gzip 那个数字。

结果会和我构建里的 svgo 一致吗?

在均衡配置下会:那就是 svgo 自身的 preset-default,插件顺序和默认值完全相同。只要你改动任何一个开关就偏离了它,界面上的"手动"标签会提示你这一点。

某些插件标注的"改变行为"是什么意思?

意思是该插件不只是把文件变小,而是改变了文件的行为本身。removeViewBox 会让 SVG 不再缩放。removeDimensions 会让它填满容器而不是使用自身尺寸。removeTitle 会删掉屏幕阅读器朗读的无障碍名称。它们默认全部关闭,"全部启用"按钮也不会开启其中任何一个。