SVG 压缩
格式化所有处理都在浏览器本地完成,数据不上传服务器
把设计工具导出的 SVG 压小:去掉注释与 `<title>`/`<desc>`/`<metadata>`、折叠标签之间的空白与换行、把坐标的小数位降下来、删掉没人引用的 `id`。 体积的大头在坐标:路径数据(`d`)通常占整个文件一半以上,而它由一长串坐标组成。把 `M12.345678` 降到 `M12.35` 往往能省下两三成,而视觉上看不出来 —— 所以默认开 3 位小数。 ⚠️ 通用的「去掉一切空白、删掉一切无用属性」在 SVG 上会静默改坏图形,而 SVG 坏了往往只是「某一块不见了」,没有明确征兆。所以这里逐条写明哪些碰不得:`viewBox` 一个字符都不动(删了它 SVG 就不能缩放了,而固定尺寸下看着还是对的)、`<text>` 里的空格是内容(`Hello World` 折成 `HelloWorld` 是这类压缩最经典的事故)、被引用的 `id` 绝不能删(`url(#a)` 在引用它,删了渐变就没了)。
功能
- 去掉注释与 title / desc / metadata(块级的一起删,含嵌套)
- 折叠标签之间的空白与换行,而 `<text>` / `<tspan>` / `<style>` / `<script>` 里的一个字符都不动
- 坐标降精度:路径、points、transform 等数字属性可选 0–3 位小数,默认 3 位
- 只删没被引用的 id(`url(#a)`、`href="#a"`、SMIL 的 `begin="a.click"` 都算引用)
- viewBox 与 preserveAspectRatio 永不改动
- 颜色、类名、style 属性不做数字处理(`#ff0000` 不会被改成 `#ff0`)
- 可选去掉 xmlns —— 明确说明这只在「内联进 HTML」时才对
- 输出带语法着色,下方显示压缩后的字符数
使用方法
- 粘贴 SVG 源码
- 按需要开关几项:默认只做「注释 + 元数据 + 空白 + 3 位小数」这四件安全的事
- 要更小就降到 1–2 位小数,或打开「去掉未引用的 id」
- 复制压缩结果
常见问题
- 为什么 viewBox 不能删?
- 因为 `viewBox` 定义的是坐标系:它决定了图形的哪一块内容映射到多大的区域。删掉之后 `preserveAspectRatio` 也跟着失效,SVG 就失去了缩放能力 —— 而它在你设定的那个固定尺寸下看起来还是对的,问题只在别人拿去放到别处时才出现(图标变形、只剩一角)。省下的那十几个字符完全不值得这个风险,所以这个工具一个字符都不动它。
- 为什么 text 里的空格不能压?
- 因为那是内容。`<text>Hello World</text>` 里的空格删掉就变成一个词,而屏幕上只是「文字挤到一起了」,很容易当成字体问题。所以空白折叠只发生在标签之间,`<text>`、`<tspan>`、`<style>`、`<script>` 内部一律原样保留 —— 后两个甚至不是标记语言,里面的空白有自己的规则。
- 降精度会不会让图形变形?
- 3 位小数在绝大多数情况下看不出来(一个 24px 的图标上,0.001 的误差相当于屏幕上的 1/40 像素)。降到 1 位(0.1)在大尺寸渲染时会开始出现轻微的多边形棱角,尤其是曲线与斜线;0 位(整数)在小图标上问题不大,但放大后会有明显误差。所以默认是 3 位,激进的那两档要自己判断 —— 判据是「这个 SVG 会不会被放大到很大的尺寸显示」。
- xmlns 到底要不要删?
- 看你打算怎么用。内联进 HTML(把 `<svg>` 直接写在页面里)时可以删,几字节而已,而且父文档的命名空间会接管。但单独存成 `.svg` 文件、写在 CSS 的 `url()` 里、或者作为 `<img src>` 的目标时必须保留 —— 少了它浏览器不认这个文件,表现是「图不显示」,而文件本身看不出任何问题。所以这一项默认关,标签上也写明了适用条件。
相关工具
XML 格式化
格式化在线 XML 格式化、压缩与属性排序:按标签层级缩进,属性可按名字排序(对比两份 XML 时用)。全程在浏览器本地完成。
图片格式转换
图像把图片在 PNG、JPEG、WebP、AVIF、BMP、TIFF 之间互转,质量与尺寸上限可调。PNG 转 JPEG 时先铺背景色,透明区域不会变成黑色。全部在浏览器本地完成。
图片压缩
图像在线压缩图片,可以指定目标体积(如压到 200 KB 以下),工具用二分查找找出满足条件的最高质量。也支持按质量档与尺寸上限压缩。
JSON 格式化
格式化在线 JSON 格式化与校验工具:树形折叠浏览、搜索键值、逐节点改值与删除、语法错误定位到具体行列,输入框带行号与高亮。全部在浏览器本地完成。
JSON 转代码
格式化把 JSON 样本转成 TypeScript interface、Go struct、Java class 或 Rust struct:不齐的键标成可选、类型冲突退化为联合类型。全程在浏览器本地生成。
SQL 格式化
格式化在线 SQL 格式化:关键字统一大小写、按 SELECT / FROM / WHERE 等子句换行缩进、子查询逐层展开,压缩模式去掉多余空白与注释。语句不上传服务器。