DEV Community

Kyohei Taniguchi
Kyohei Taniguchi

Posted on

Why I Built a Native Mac Image Compressor That Never Uploads Your Photos

Image compression is one of those tiny tasks that should be simple.

You have a large JPEG, PNG, or HEIC file. You want to make it smaller. So you search for an image compressor, upload the file, wait for it to process, and download the result.

It works.

But I kept thinking:

Why should I upload an image somewhere just to make the file smaller?

That question eventually became SnapSlim, a small native macOS app for compressing images entirely on your Mac.

SnapSlim running natively on macOS.

The problem I wanted to solve

There are already many excellent online image compression services.

For occasional use, they are convenient.

But I wanted something slightly different:

  • No image uploads
  • No account required
  • No cloud processing
  • No complicated settings
  • Support for JPEG, PNG, and HEIC
  • Good compression without obviously damaging the image
  • A simple native Mac experience

The goal was not to build a giant image-processing suite.

I wanted something I could open, drop images into, compress them, and move on.

Everything stays on your Mac

SnapSlim processes images locally.

Your photos are not sent to a SnapSlim server because there is no image-processing server involved.

For me, this was important for two reasons.

First, privacy.

Images can contain personal information, screenshots, documents, client materials, or photos that simply do not need to leave your computer.

Second, speed and simplicity.

If the computer already has enough power to compress an image, sending that image across the internet and downloading it again feels unnecessary.

Local processing also means the app can keep working without depending on an external compression API.

Compression without chasing the smallest possible file

Making an image tiny is easy if you are willing to destroy enough quality.

That was not the goal.

SnapSlim tries to find a more practical balance: reduce file size while keeping visual degradation small.

For example, one of my JPEG tests produced:

13.7 MB → 9.9 MB

That is about a 28% reduction, while the measured SSIM was approximately 0.981.

The exact result depends on the image, of course.

Some images compress much better than others.

The important part for me was not maximizing the percentage shown in the UI. It was making the compressed image still look like the image I started with.

Why a native Mac app?

I deliberately built SnapSlim as a macOS application rather than another web app.

A native application fits the problem surprisingly well:

  1. The files already exist locally.
  2. Compression is CPU work that the Mac can perform itself.
  3. There is no need to upload the source images.
  4. Drag-and-drop fits naturally into a desktop workflow.
  5. The app can bundle the tools it needs and operate independently.

SnapSlim currently targets Apple Silicon Macs running macOS 14 or later.

Under the hood, different image formats require different approaches, but the user should not have to care about that.

The interface should remain simple even when the implementation is not.

Building the first version

The first version grew from a compression experiment into a real distributable Mac application.

The current Direct edition handles:

  • JPEG
  • PNG
  • HEIC

It bundles its compression components with the application, so users should not need to install Homebrew packages or configure command-line tools themselves.

A surprisingly large part of building the app was not image compression itself.

Distribution involved things like:

  • application signing
  • hardened runtime
  • bundled executable verification
  • notarization
  • Gatekeeper checks
  • license notices
  • release packaging
  • testing the final .app, not just the source code

That work made me appreciate how much engineering exists between:

“The program works on my Mac.”

and:

“Someone else can safely download and use this.”

Keeping the first version small

I am intentionally keeping SnapSlim focused.

The current goal is not to compete with Photoshop, Lightroom, or full image editors.

SnapSlim does one job:

make image files smaller with as little friction as possible.

The Direct version is the first public version.

I plan to keep improving it based on actual usage rather than adding a large list of features in advance.

A Mac App Store version is also planned later, but I wanted to ship the Direct version first and start learning from real users.

Try SnapSlim

If you use a Mac and regularly need to shrink JPEG, PNG, or HEIC images, I would love to hear what you think.

Especially:

  • What kinds of images do you usually compress?
  • Is local-only processing important to you?
  • What would make this workflow noticeably faster or easier?

You can try SnapSlim from the Flat Harbor website:

https://flatharbor.com/snapslim/

Feedback is very welcome.

Top comments (1)

Collapse
 
amitfeldman profile image
Amit Feldman

Congrats on the launch — "never uploads your photos" is exactly the right promise for this category, and it deserves infra that backs it up.

Quick public check of flatharbor.com/snapslim (headers + public config only):

  1. HSTS is missing — without Strict-Transport-Security: max-age=31536000; includeSubDomains, a first visit over a hostile network can still be downgraded before your on-device promise ever loads. One header fixes it.
  2. No Content-Security-Policy or X-Frame-Options — for a privacy-positioned tool these are the two headers users (and reviewers) increasingly check first; even a modest default-src 'self' CSP plus frame-ancestors 'none' closes clickjacking and most injection surface.

Everything else checked out: TLS 1.3, nosniff and a strict referrer policy are set, robots + sitemap live, and the page renders in under a second. Happy to re-run the scan free once the headers land. Good luck with Early Access!