TinyPNG 与 Squoosh 的替代方案,诚实对比
三个工具,三种不同的活儿。各自擅长什么、真正的差别在哪里,以及 tinyimg 目前还做不到什么。
三个工具,三种不同的活儿
搜索 TinyPNG 替代、Squoosh 替代,或者更口语的“图片压缩工具”时,结果容易把三件不同的事混在一起:把一张图压好、把一个文件夹的图压完、把压缩放进构建流程或 CMS。大多数“TinyPNG 对比”页面回答的是没人问的问题——谁更强——而不是你手头这件活该用哪个工具。这一页想回答后者。
三者都属于广义的浏览器图片压缩,或者紧挨着它。它们不能互换,而真正重要的差别,通常不在那些被列出来的功能表里。
TinyPNG 擅长什么
TinyPNG 很成熟。它做图片压缩已经很多年,结果稳定可预期,压缩率也高:它用的智能有损编码,通常能在相同观感下压出比朴素重编码更小的文件。
它更大的优势是集成。它提供 API、常见 CMS(包括 WordPress)的插件,也能接进构建工具。如果你想让压缩发生在已有的流程里——网站上传、CI 的静态资源步骤、设计工作流——TinyPNG 是接入成本最低的选择,对很多团队来说这就是决定因素。
这个取舍是事实,不是批评:TinyPNG 在自己的服务器上处理图片,所以文件会被上传。正是这一点让 API 和插件成为可能。如果你的图片可以离开设备,这个取舍通常没问题。
Squoosh 擅长什么
Squoosh 是 Google 的开源图片工具。它在浏览器里运行,文件留在设备上,而且它恰好擅长批量工具不擅长的事:仔细看一张图。你可以并排比较格式、拖动质量滑块同时观察体积和瑕疵的变化、改尺寸,还能调整大多数工具藏起来的编码器参数。
如果你要为某张照片在 AVIF 和 WebP 之间做决定,或者想知道某个质量档位到底付出多少代价,Squoosh 是更合适的仪器。它也是开源的,背后的编解码器与许多工具(包括本站)同源。
它不是为量设计的。Squoosh 围绕一张一张图来组织;如果你有三百个文件,它就是形状不对的工具,再怎么调参数也改变不了这一点。
最容易验证的那一个差别
在大家最在意的那条轴上——文件会不会离开我的设备——Squoosh 和 tinyimg 站在同一边:两者都在浏览器里压缩。TinyPNG 按设计站在另一边。人们常把这两个本地工具混为一谈;在这条轴上它们确实一致,尽管它们是为不同的活造的。
tinyimg 的主张很窄,也可以验证:压缩图片,不上传。打开页面,断网,把文件拖进去,它照样压缩——因为编解码器是已经在浏览器里的 WebAssembly 模块,计算发生在本地 worker。一分钟就能验证,这正是重点。
第二个差别是批量。tinyimg 是为文件夹而不是单个文件造的:队列、按机器核数设定的 worker 池、每个文件压缩前后的体积、最后一个 zip。Squoosh 有意不做这件事。TinyPNG 通过上传器和 API 做到了。
| TinyPNG | Squoosh | tinyimg | |
|---|---|---|---|
| 在哪里运行 | 他们的服务器 | 你的浏览器 | 你的浏览器 |
| 最擅长 | 集成、API、成熟的压缩 | 单图、格式实验、参数调节 | 不上传的批量压缩 |
| 批量处理 | 有,通过上传器和 API | 没有,一次一张 | 有,队列加 zip |
| API | 有 | 没有 | 没有 |
| 单图参数调节 | 有限 | 丰富 | 没有 |
| WordPress 插件 | 有 | 没有 | 还没有 |
| 使用年限与案例 | 长 | 长,开源 | 较短 |
tinyimg 没有什么
这是对比页通常会略过的部分,而略过它,正是这类页面读起来像营销的原因。
- 没有 API。没有可以调用的接口。如果你需要在服务端任务或 CI 步骤里压缩,tinyimg 做不到。
- 还没有 WordPress 插件。有 Figma 插件,但没有 WordPress 插件。如果 CMS 插件是硬性要求,今天该选 TinyPNG。
- 没有单图调节界面。你可以选输出格式,但没有每张图的质量滑块,也没有原始编码器开关。tinyimg 自己挑参数,追求一个合理的结果。想精细调节,Squoosh 做得更好。
- 积累更少。TinyPNG 和 Squoosh 背后有多年的各种奇怪文件。tinyimg 更年轻、用户更少,意味着被喂过的奇葩边界情况也更少。请把这当成真实风险,而不是脚注。
- 完全没有服务端方案。隐私设计同时也是限制:浏览器关掉,什么都不会运行。
我们自己的数字,以及它们说明不了什么
我们在 /benchmarks 公开 tinyimg 的实测:十个样本、每个五次、同一台机器(Apple M4,headless Chrome 155),走的是线上同一个 worker 路径。12 MP 照片:JPEG 从 4.92 MB 压到 444.4 KB(8.8%),中位数 677 ms;WebP 325.2 KB,997.5 ms;AVIF 121.8 KB(2.4%),1,983.2 ms。1.36 MB 的 PNG 截图无损压到 600.6 KB,用时 613 ms;同一张转 WebP 是 21.0 KB,151 ms。
这些是 tinyimg 在一台机器上的数字,不是横向对比。我们没有测过 TinyPNG 和 Squoosh。我们不知道它们在这些样本上会得到什么结果,暗示相反才是不诚实。TinyPNG 的编码器很成熟,在某些图片上完全可能压得更小;Squoosh 提供的控制项可以超过任何固定档位。如果这个决定重要,请拿你自己的图片把三个工具都跑一遍,自己比输出。
怎么选
- 要在现有系统里压缩,允许上传:TinyPNG。API 和插件就是它的功能。
- 一张图、格式实验、逐图控制:Squoosh。这里没有任何东西能替代它。
- 一个文件夹的图、不想上传、不想调参数:tinyimg。
诚实的版本就这些。tinyimg 是这些工具在某一件事上的替代方案,不是在所有事情上的替代品,也与两者都没有关联。TinyPNG 是 Tinify 的产品,Squoosh 是 Google 的开源项目,名称和商标属于它们各自的所有者。