Roundup

The Best Image Compressor for Mac in 2026

By the Smol team14 min read

Smol is the image compressor we would install on a Mac today: $29 once, it writes AVIF and WebP, and it takes a whole folder at a time. The more useful finding from two days of measurement is that the format matters far more than the app. Moving one photo from JPEG to AVIF saved more bytes than any swap between tools we tested.

We make Smol, so treat the ranking as an opinion and the numbers as the argument. Several tools below beat us at something specific and we say so: ImageOptim is the only one here that is provably lossless, Squoosh still has the best visual A/B comparison anyone has built, sips is already installed on your Mac and matched our JPEG output almost byte for byte on a standard test set, and Zipic writes JPEG XL and SVG, which Smol cannot.

What we tested, and how

Everything below was measured on 25–26 September 2026 on an Apple M2 Pro Mac with 16 GB of RAM running macOS 27.0 (build 26A428), using Smol 1.0.34, ImageOptim 1.9.3 downloaded from imageoptim.com, and the system sips (version sips-316). File sizes are exact byte counts from the filesystem.

Comparing image compressors on file size alone is meaningless, because any tool can win by throwing away more picture. So every output was scored with SSIM against its original, computed in NumPy with a Gaussian window (sigma 1.5) and averaged across the red, green and blue channels. Where we claim one tool beat another, the two files scored within a few thousandths of an SSIM point of each other. Where they did not, we say which one was measurably worse.

The corpus is deliberately public so the test is reproducible. Three images come from the Kodak Lossless True Color Image Suite, the set image-codec developers have benchmarked against for three decades. One is a camera JPEG from Wikimedia Commons with its original Sony EXIF intact. Two we made on the test machine.

Test fileWhat it isPixelsBytes
kodim07.pngKodak suite. Shutters and flowers, moderate detail.768 × 512566,322
kodim08.pngKodak suite. Dense high-frequency texture, the hard case.768 × 512788,470
kodim23.pngKodak suite. Parrots: smooth gradients plus fine feathers.768 × 512557,596
photo.jpgA Sony DSC-R1 photograph from Wikimedia Commons, CC BY-SA 4.0, 4:4:4 chroma, EXIF intact. The already-compressed case.3,840 × 2,5254,639,294
screenshot.pngA Retina screen grab taken with screencapture -x. Flat panels, antialiased type, 183,434 unique colors.3,024 × 1,9642,293,996
logo-alpha.pngA synthetic RGBA badge: 177 unique colors, hard vector edges, real transparency.1,600 × 1,200101,316

Three of the eight tools produced numbers: Smol, ImageOptim and sips. We also installed Squoosh’s command-line build and it refused to run, which is itself a finding and is reported below. TinyPNG, Compresto, Zipic and Optimage were assessed on published capability, their own pricing pages, and in Optimage’s case a first-hand inspection of the shipped binaries. We did not run them, and we do not publish numbers we did not measure.

What did the numbers actually say?

Start with the lossless question, because it is the one people get wrong. ImageOptim rewrites a file without changing a single pixel. We checked, rather than assuming: magick compare -metric AE returned an absolute error of 0 on all six outputs. A batch of the whole corpus took 99.26 s and cut 8,946,994 bytes to 7,945,239, an 11.2% saving with nothing thrown away. The savings are wildly uneven:

FileBeforeAfter ImageOptimSaved
logo-alpha.png101,31645,62655.0%
screenshot.png2,293,9961,509,11434.2%
kodim08.png788,470742,2295.9%
kodim07.png566,322548,3443.2%
photo.jpg4,639,2944,562,5001.7%

Read that table as a rule: lossless optimization pays on flat graphics and screenshots, and barely registers on photographs. If your images are photographs, the only way to make them meaningfully smaller is to throw something away, and then the question becomes who throws away the least for the bytes they save.

That question is where quality numbers start lying to you. Smol’s quality 75 is not sips’ quality 75. On kodim07, Smol at 75 scored 0.95490 SSIM while sips at 75 scored 0.97588 and produced a file 84% larger. Once we tuned both to the same measured quality, the gap mostly disappeared:

Filesips (formatOptions 70)Smol (quality 90)Verdict
kodim0791,654 B · SSIM 0.9732991,868 B · SSIM 0.97292Dead heat
kodim08168,344 B · SSIM 0.97425165,509 B · SSIM 0.97191Dead heat
screenshot716,970 B · SSIM 0.99089712,388 B · SSIM 0.99062Dead heat
photo.jpg2,071,821 B · SSIM 0.976881,869,648 B · SSIM 0.97465Smol 9.8% smaller

On three of four files, Apple’s free built-in encoder is as good as anything you can buy. The one file where Smol pulled ahead is the one that was already a JPEG, and the reason is a single decision rather than encoder magic: sips inherits the source file’s 4:4:4 chroma and keeps it, while Smol re-encodes to 4:2:0. That gap widened on larger photographic crops. Compressing three 1,600 × 1,200 crops of the same photo, Smol at quality 75 produced 315,812 bytes at SSIM 0.96214; to beat that score sips needed formatOptions 50, which cost 379,208 bytes, 20.1% more. At formatOptions 45 it was still bigger and measurably worse. The same pattern held on the other two crops, at 19.7% and 20.1%.

Then we changed format instead of app, and the picture stopped being close.

File & encoderBytesSSIM
kodim07 · Smol JPEG q9091,8680.97292
kodim07 · Smol WebP q9063,2060.97530
kodim07 · sips AVIF 7546,9670.97303
kodim07 · Smol AVIF q7548,2300.97408
screenshot · sips JPEG 70716,9700.99089
screenshot · Smol AVIF q75241,9430.99518

AVIF was 47% smaller than JPEG at identical measured quality on the Kodak photo, and 66% smaller on the screenshot while scoring higher. No tool on this page beats JPEG by 47% while staying JPEG. So the first question to ask a Mac image compressor is not “how good is your encoder”. It is “which formats can you write, how many files at a time, and what do you do with my EXIF”.

If you need X, pick Y

If you needUse
Smaller PNGs and JPEGs with literally zero quality lossImageOptim
To see the quality trade-off before you commit to itSquoosh
One image smaller, right now, nothing installedPreview or sips
A shell script or a cron job, no GUIsips
A folder of 300 photos as AVIF or WebP, EXIF removedSmol
JPEG XL or SVG outputZipic
To compress on a borrowed Windows PCTinyPNG or Squoosh
Compression inside a CI pipeline or a build stepTinyPNG’s API
Images and video and PDFs in one subscription you already pay forCompresto on Setapp

Smol

Writes AVIF, WebP and HEIC, takes whole folders, strips EXIF by default.

Best for: Batches, modern formats, mixed file types$29 one-time

Smol wins this list on coverage rather than on encoder heroics. It writes JPEG, PNG, WebP, AVIF, HEIC and GIF; it takes a folder instead of a file; and its defaults strip metadata. We checked that last one against the Sony camera file: every EXIF field was gone from Smol’s output and all of them survived sips’.

On rate-distortion it is good, not miraculous. Against Apple’s encoder it tied on three of four test files and won by 9.8% on the already-compressed camera photo, then by around 20% on larger photographic crops at matched SSIM. The real jump comes from format: the same screenshot went from 716,970 bytes as JPEG to 241,943 as AVIF at a higher SSIM, which is a 66% cut that no encoder tuning gets you.

One control nothing else here offers: a file-size target. We asked for an AVIF under 100 KB from a 352,861-byte JPEG and got 51,140 bytes, inside the requested band, reported as such. Two caveats worth knowing. The target is a band, not a ceiling, and the lower bound defaults to 40% of your maximum, so on an easy image you can get a file larger than necessary. And it is slow: 59.9 s for that single image on a cold engine, against 1.4 s per file for ordinary compression.

Honest limits: macOS only, no Windows or Linux build. No lossless mode, so if you need pixel-identical output use ImageOptim. No JPEG XL and no SVG. It reads RAW and HEIC happily, but the formats it writes are the list above and nothing else. Smol is $29 once for one Mac, $49 for a team pack, updates included, no subscription. The same window also handles PDFs, video and audio, which is the actual reason people stop keeping four utilities around; the document side is measured separately in our PDF compressor roundup.

ImageOptim

Free, open source, and the only tool here that changes no pixels at all.

Best for: Lossless PNG and JPEG optimizationFree (GPL-2.0)

ImageOptim is a GUI over the best open-source optimizers: it ships oxipng, zopflipng, pngout, advpng, pngquant, gifsicle, jpegoptim, guetzli, svgcleaner and a mozjpeg build of jpegtran. Drop files in, get the same pixels in fewer bytes. We verified the lossless claim rather than repeating it, and it holds: absolute error of zero on every one of our six outputs, including the JPEG.

Where it beats everything else on this page is flat graphics. Our transparent badge went from 101,316 to 45,626 bytes, a 55% cut, with nothing lost. If you ship UI assets, diagrams or logos, this is the tool and it costs nothing.

It is also the tool with the strangest release situation in this category. The shipped build is 1.9.3, and its own Sparkle feed dates it to 29 October 2023. The repository is not dormant: the most recent commit to main landed 13 July 2026. That commit is PR #466, which stops ImageOptim pinning its worker processes to Apple Silicon efficiency cores, and it has never shipped in a release. We confirmed the underlying behavior on our own machine. The bundled defaults.plist sets RunLowPriority to true, and sampling ps -axo pid,nice,args during a run showed every optimizer at nice 10.

The advertised workaround is defaults write net.pornel.ImageOptim RunLowPriority -bool false. On 1.9.3 it changes nothing measurable, because the shipped build still lowers priority unconditionally: the helpers stayed at nice 10with the preference off, and three timed trials came out at 5.23 s median with it on versus 5.52 s with it off. The honest read is that the fix exists in source and you cannot have it yet. Speed is the practical cost: our six-file batch took 99.26 s. Its bundled oxipng is 9.0.0 against an upstream v10.2.1 released 2 September 2026. More on the trade-offs in our ImageOptim alternatives page.

macOS Preview and sips

Already installed, scriptable, and it writes AVIF.

Best for: One-offs, shell scripts, zero budgetFree, built into macOS

For a single image, File → Export in Preview with the quality slider is a perfectly good answer and we are not going to pretend otherwise. For anything repeatable, sips is the underrated one: sips -s format jpeg -s formatOptions 60 in.png --out out.jpg works in any script, on any Mac, with nothing installed. On the Kodak set it matched our encoder at equal SSIM.

On macOS 27 it also writes AVIF, which almost nobody knows. sips -s format avif -s formatOptions 75 produced a valid 46,967-byte AVIF from kodim07, competitive with anything here. Run sips --formats and read the Writable column yourself.

Three sharp edges. First, WebP is listed as readable but not writable, and asking for it fails silently: sips -s format webp prints the file paths, exits 0, and writes no file at all. Second, the quality scale is its own thing. The named presets are exact aliases we confirmed byte for byte, low = 25, normal = 50, high = 75, best = 100, and best switches to 4:4:4 chroma, which made our test file three times larger than formatOptions 95. Third, it keeps your EXIF. Camera model, timestamp and GPS all survived in our output, which matters if you are about to upload holiday photos.

The thing it does not do is a folder. You write the loop yourself, and there is no progress, no summary, and no protection against clobbering an original.

Squoosh

The best quality comparison interface ever built for image compression.

Best for: Deciding what quality setting you can live withFree (Apache-2.0)

Nothing else here lets you drag a divider across the image and watch the artifacts appear in real time, with two different codecs either side and a live byte count. When you are deciding whether a hero image can survive AVIF at quality 45, Squoosh answers the question in ten seconds and every desktop app on this list answers it in export-and-check cycles. It runs entirely in the browser, so nothing is uploaded, and it works on any machine you can open a browser on.

The maintenance picture needs stating precisely rather than dramatically. The last commit to the default branch was 19 August 2024. In issue #1472, opened 18 May 2026 and titled “Abandoned?”, Jake Archibald replied the same day: “The problem is the folks who built it left Google, and Google refused to hand the project over, or maintain it. That said, I still have commit & publish access, so I was planning on updating the JPEG XL and AVIF codecs some point soon.” As of today the site is up and works.

The command-line build is a different story, and it is the reason Squoosh cannot be your batch tool. @squoosh/cli was last published on 3 January 2023 and declares support for Node 12, 14 and 16 only. We installed it on Node v26.7.0 and it threw before encoding anything: TypeError: Cannot set property navigator of #<Object> which has only a getter. So the web app has no batch mode and the batch tool does not run. Alternatives are laid out in our Squoosh alternatives comparison.

TinyPNG

The web tool everyone already knows, and a genuinely good API behind it.

Best for: A borrowed machine, or a build pipelineFree web tool; API 500/month free, then $0.009 each

TinyPNG earned its reputation on PNG quantization, and the free web tool remains the fastest way to make an image smaller on a computer that is not yours. Drop files on the page, download the results. Its current limits, from its own page, are up to 20 images at a time, 5 MB each, with format conversion limited to 3 images. It compresses AVIF, JXL, WebP, PNG and JPG.

The part worth paying for is the API. Tinify gives 500 compressions a month free with no payment method, then charges $0.009 per compression for the next 9,500 and $0.002 for the 10,000 after that. If you want compression inside a deploy step rather than on a laptop, that is a reasonable way to buy it, and it is genuinely better than shelling out to a desktop app from CI.

The trade-off is the obvious one and it is not a small one: your images go to somebody else’s servers. For product photography that is fine. For client work under NDA, medical images, unreleased designs or anything with faces and GPS coordinates in the EXIF, it is a policy decision rather than a technical one. Those 5 MB and 20-file ceilings also rule out a folder of camera RAW exports. The head-to-head is in Smol vs TinyPNG.

Zipic

The closest direct rival at the price, and it writes formats we do not.

Best for: JPEG XL, SVG and ICNS output$29.99 one-time (2 devices)

Zipic sits at almost exactly our price and covers almost exactly our ground: drag and drop, batch, presets, local processing. Its pricing page lists Personal at $29.99 for two devices and a Team license at $129.99 for ten, both one-time with lifetime updates, and a free tier that runs a seven-day Pro trial then settles at 25 images a day.

It beats us on format breadth in one direction that matters to some people. Its Pro formats include JPEG XL, SVG, APNG and ICNS. Smol writes none of those. If you are producing app icons, optimizing SVG, or experimenting with JXL, Zipic covers cases we do not, and we would rather say so than pretend the list stops where ours does.

It also ships a Windows build, which we do not. We have not benchmarked its encoders, so we are not going to claim we beat it on bytes; treat this entry as a capability comparison, because that is all we can honestly offer. macOS 13 or later.

Compresto

Images, video and PDFs in one Mac app, and it is on Setapp.

Best for: People already paying for Setapp$49 one-time (1 Mac), $69 for 2

Compresto covers the same span we do: images, video, GIFs and PDFs, with a drop zone and folder monitoring, processed locally. Its pricing page lists Personal at $49 for one Mac and Standard at $69 for two, one-time with lifetime updates. macOS 13 or later, Intel and Apple Silicon.

The genuinely useful reason to choose it is Setapp. If you already pay that subscription, Compresto is included, and paying $29 or $49 again for a second app that does the same job is hard to justify. We would not.

The published image format list is PNG, JPEG, HEIC, WebP, TIFF and GIF. We did not run it, so there are no Compresto numbers above and there will not be any until we can test it properly. What we can compare is the stated surface area, and on images the two apps land in much the same place.

Optimage

Clever quality targeting, on binaries that stop running after macOS 27.

Best for: Nothing we can recommend starting today$15 one-time; free tier 24 images/day

Optimage’s idea is good: rather than a quality slider, it targets a perceptual quality level and finds the smallest file that meets it, which is roughly the right way to think about compression. At $15 one-time, with a free tier capped at 24 images a day, it is also the cheapest paid app here.

The problem is architectural and it has a date on it. We downloaded the current build from optimage.app today, unpacked it, and ran lipo -archs across every Mach-O binary inside. All thirteen, including the main app and its bundled ffmpeg, Ghostscript, node and cwebp, report x86_64 and nothing else. There is no arm64 slice, so on every Apple Silicon Mac it runs under Rosetta.

Apple announced on 1 September 2026 that “macOS 27: Final release to support Rosetta”, and that Intel-only apps will no longer run on Apple Silicon Macs after that update. The app’s own version history page has no entry newer than 26 November 2021. Buy it if you want, but you are buying software with a published expiry date. We go through the migration options in our Optimage alternatives comparison.

Why does changing the format beat changing the app?

Because JPEG is thirty-four years old and AVIF is not. JPEG divides the image into 8 × 8 blocks and quantizes each one independently. AVIF inherits intra-frame prediction from a modern video codec, so it can describe a block as a variation on its neighbors instead of from scratch. On flat gradients, sky and UI panels, that difference is enormous.

Our numbers, at matched SSIM: 91,868 bytes of JPEG became 48,230 bytes of AVIF on the Kodak photo, and 716,970 bytes of JPEG became 241,943 of AVIF on the screenshot while scoring higher. WebP landed between the two at 63,206 bytes. No encoder on this page produces a 47% saving inside the same format, so if your images are going on the web and your audience is on browsers from the last four years, the format decision is worth more than the app decision by an order of magnitude.

One interoperability wrinkle we ran into, and it cuts against the free option. Apple’s AVIF encoder writes large images as a tiled grid. Pillow 12.1.0 refused to decode the 3,840 × 2,525 AVIF that sips produced, reporting “Invalid image grid”, and libavif’s own avifdec logged the same error before recovering. ImageMagick read it without complaint and so did sips itself. Every AVIF Smol produced decoded everywhere we tried. If you are generating AVIF for a pipeline that other software has to read, test your decoder before committing to Apple’s encoder.

What happens when you have 500 images, not five?

This is where the tools separate, and where most roundups stop paying attention. We built 30 distinct 1,600 × 1,200 JPEGs totalling 15,790,158 bytes and ran the same folder through three of them.

ToolWall clockOutputSaved
sips loop, formatOptions 503.29 s8,064,198 B48.9%
ImageOptim, defaults (lossless)6.79 s14,874,193 B5.8%
Smol, quality 7543.0 s6,577,213 B58.3%

Read that honestly. A sips loop is thirteen times faster than we are and costs nothing. We produced a file 18% smaller than it did and stripped the metadata while doing it, but 1.4 s per image against 0.11 s is a real difference, and if you are processing thousands of files on a schedule the shell loop is the better engineering answer. Those crops are mostly sky, so treat this as a throughput comparison rather than a quality one. The matched-quality numbers earlier in this article are the ones to cite.

If your batch is part of something repeatable, Smol also exposes a Model Context Protocol server, so Claude Code, Codex and Google Antigravity can drive it as a tool call rather than you dragging folders. Every Smol measurement in this article was produced through that interface, which is reasonable evidence that it works. It is a developer feature and most readers will never need it.

When Smol is not the right answer

Five cases, and all five came out of the testing above rather than out of modesty.

You need the pixels untouched. Smol has no lossless mode. ImageOptim does, it is free, and we verified it returns byte-different, pixel-identical files. For archival masters, print-ready artwork or anything you will re-edit later, use ImageOptim and keep your $29.

You compress an image once a month. Preview’s export dialog is right there, it has a quality slider, and on a single file it is genuinely fine. Nobody should buy an app to do something twelve times a year.

You want a shell script. sips is installed, scriptable, writes AVIF and HEIC, and matched us on three of four test files at equal SSIM. Just remember it cannot write WebP and it keeps your EXIF.

You need JPEG XL, SVG or ICNS. We do not write any of them. Zipic does.

You are compressing screenshots of colored text. Our default re-encode drops to 4:2:0 chroma, which is the right call for photographs and the wrong one for saturated type on a colored background. sips preserves 4:4:4 from the source. If you are shipping annotated UI screenshots with red text on blue panels, look closely at the output before you batch a hundred of them, or use PNG.

One more that is about expectations rather than apps: if your photographs are already JPEGs from a phone, no lossless tool will help. Our camera file lost 1.7% to a full ImageOptim pass. The bytes you want back are the picture, and getting them means choosing what to discard.

Frequently asked questions

What is the best image compressor for Mac?

For regular work, Smol: it writes AVIF, WebP and HEIC, takes whole folders, strips EXIF by default, and costs $29 once. For lossless optimization of PNGs and JPEGs, ImageOptim is free and it is the only tool we tested that produced pixel-identical output, verified at absolute error zero. For one image right now, Preview or sips is already installed and perfectly adequate.

Does the compression app really matter, or is it all the same?

Less than you would think. At matched SSIM, Apple’s built-in sips tied our encoder on three of four test images and lost by about 20% on large photographic crops. Changing format mattered far more: the same Kodak photo was 91,868 bytes as JPEG and 48,230 bytes as AVIF at the same measured quality, a 47% cut no encoder swap delivered.

Is ImageOptim still worth using in 2026?

Yes, for lossless work. It is free, open source, and its output is pixel-identical to the input. The shipped build is 1.9.3, dated 29 October 2023 in its own Sparkle feed, but the repository is active: a fix that stops it pinning workers to Apple Silicon efficiency cores was merged on 13 July 2026 and has not shipped yet. It is slow, taking 99 seconds for our six-file corpus.

Can macOS compress images without installing anything?

Yes, two ways. Preview exports JPEG, PNG and HEIC with a quality slider. The sips command does the same from Terminal and, on macOS 27, also writes AVIF. Two warnings: sips cannot write WebP and fails silently if you ask, and it preserves EXIF including camera model, timestamp and GPS, so strip metadata separately if you are publishing the images.

Should I use AVIF or WebP for my website?

AVIF if your audience is on recent browsers. On our Kodak test image at matched SSIM, AVIF was 48,230 bytes, WebP 63,206 and JPEG 91,868. On a Retina screenshot AVIF was 66% smaller than JPEG while scoring higher. WebP is the safer fallback with wider support and faster encoding, which is why most sites serve AVIF with a WebP or JPEG fallback.

Is Optimage safe to buy in 2026?

We would not. Optimage is $15 one-time and its quality-targeting approach is sound, but we downloaded the current build and checked every Mach-O binary inside with lipo: all thirteen are x86_64 only, with no arm64 slice. Apple stated on 1 September 2026 that macOS 27 is the final release to support Rosetta, so the app has a published expiry date on Apple Silicon.

Keep reading