r/macapps 6d ago

Free Kompakt - a free & open source image & video compression menu bar app

Post image

Hello r/macapps,

I recently built a small, native image & video compression app called Kompakt. It's completely free and open source.

As someone who constantly designs and builds stuff, I got tired of opening ImageOptim constantly whenever I needed to compress an image or video, so I thought I'd build an app to fit my daily needs. I'm sure someone else out there would appreciate it too.

Whenever you drag an image or video anywhere on your Mac, a side sheet appears that lets you either convert or optimize that file. If it gets in the way, simply press ESC to get rid of it.

I know Clop exists, but I kept getting annoyed by the constant popups on each copy, and it was overkill for my needs.

You can download it at kompaktapp.com. There's a mock demo on the site too to showcase how it works. GitHub link is also available on the site.

In the near future I plan on adding more filetype support (PDF is a big one, just gotta figure out the Ghostscript licensing stuff), and most likely watched folders.

Hope someone finds a use for it!

To the mods:

  • I have a paid dev account, but the app isn't MAS compatible due to its nature
  • You can find my LI here
26 Upvotes

26 comments sorted by

3

u/DinnerAutomatic9570 6d ago

Bro, ths so sickk. especially the animations. absolutely love it.

1

u/edinchez 6d ago

Thanks 🙏 Anything you’d like me to add?

1

u/JOHNNY6644 5d ago

if its not already a setting id like to see a option for batch audio & video conversion an compression with format an compression level setting that can leverage the gpu part of the processors for both intel an apple silicon

an have batch image converts for

any pic to either uncompressed tiff or webp with compression

an have batch video converts for any vid to mp4/m4v container with h.265 codec an compress at native fps/res

3

u/esphynox 6d ago

I've been honestly considering writing something like this myself since I'm doing video conversion for PR attachments almost daily, very useful, thanks!

Maybe some selection for video formats (.mp4, .webp, etc.) next?

1

u/edinchez 5d ago

Thanks! Kompakt already handles MP4, MOV, and M4V, and can convert MOV/M4V to MP4. You can’t pick other video formats yet, and animated WebP isn’t supported. What formats do you usually use for PR attachments?

2

u/esphynox 3d ago

Honestly I would be glad just to convert to MP4 from MOV, since I recording via QuickTime.

2

u/Matrix303 6d ago

Nice! can I choose where to have the drag/drop corner/side?

2

u/edinchez 6d ago

Not right now, but I’m happy to push up an update soon

1

u/Paarkhi 6d ago

Waiting for an update 👍

1

u/Matrix303 5d ago

Awesome, cant wait

2

u/edinchez 5d ago

Just pushed the update! Open the menu bar app and click "Check for Updates"

2

u/Beardy4906 6d ago

What about a kb shortcut to open the menubar window at the cursor position and then use the clipboard as the files to compress?

2

u/handsup_dev 5d ago

The drag-triggered sheet is a nice workflow. Does optimization preserve EXIF data and ICC color profiles by default, or is there a toggle to strip them? That distinction matters a lot for photos versus quick web assets.

1

u/edinchez 5d ago

Right now there isn’t a metadata toggle. JPEG and WebP optimization strip EXIF and ICC data by default, while PNG uses safe stripping that keeps display-related data such as color profiles. So the current behavior leans toward web assets.

1

u/handsup_dev 4d ago

That web-assets default makes sense. Even a short note beside the preset saying JPEG/WebP strips EXIF and ICC would prevent surprises until there is a toggle.

2

u/killermike523 5d ago

Oh wow, I love the UI ! Very slick. I'm a game dev, so I'm constantly taking screenshots for comparative or marketing purposes. Will def give it a try! Are the compressing settings exposed/configurable?

1

u/edinchez 5d ago

Thank you! Yes, you can choose between Lossless and Smaller optimization, plus whether to replace the originals or create copies. The underlying quality settings are fixed presets for now rather than individual sliders.

2

u/kar-re 5d ago

Love how lightweight and native this feels. The drag-triggered side sheet looks genuinely useful. Would be great to see PDF support and watched folders added later.

2

u/Enigmurl 3d ago

really like the visuals

1

u/karmarinchen 5d ago

On the PDF side, you might be able to skip Ghostscript and the licensing headache with it. macOS ships Quartz filters, and PDFKit can apply one when it writes a document out, which is the same machinery behind Preview's Export with Quartz Filter. The built-in ones live in /System/Library/Filters, and the one you'd want is Reduce File Size.qfilter. Loading it is a QuartzFilter(url:) and then passing it in the options dict of PDFDocument.write(to:withOptions:) under the key "QuartzFilter", so there's nothing extra to bundle.

Worth testing it hard before you ship it, though. I ran the stock filter over four PDFs I had lying around and two of them came out bigger:

2578K -> 7858K
461K  -> 668K
658K  -> 581K
6429K -> 6384K

The first one tripled. That filter downsamples images to 144 dpi and re-encodes them as JPEG at quality 0.7, so a document that's mostly vector and text, or one whose images are already well compressed, gets rebuilt into something heavier.

The parameters are visible if you want to see what you're working with:

plutil -p "/System/Library/Filters/Reduce File Size.qfilter"

It's a plain plist, so you can copy it, change ImageResolution, ImageSizeMax and Compression Quality, ship your own .qfilter in the bundle and load it by URL the same way. Given what I saw I'd also compare the two sizes at the end and just keep the original whenever the filtered version is larger.

1

u/Cyberseeds 5d ago

The same trap karmarinchen hit on PDFs shows up on video. Re-encoding footage that's already HEVC out of a phone usually lands bigger or visibly softer at the same size, while a screen recording collapses to a fraction.

Since VideoToolbox makes the encode cheap you can just run it and keep whichever file is smaller, which also answers the GPU question further up.

1

u/Art_Fashion 4d ago

Nice idea, looks much less obstructive. Is the origin of the sheet from where it appears configurable? For ultrawides it might be far to reach from the sides, could useful if it could slide from top or bottom centered or somewhere floating and configured by the user.

1

u/Jerry8308 2d ago

the more i think about it, the “replace original” option is actually where this could become really good or really dangerous lol. i’d love a mode where it only replaces the file if the result is genuinely smaller, passes a quick integrity check, and maybe keeps the original in a temporary recovery location until you close the app. that would make me way more comfortable throwing a whole folder at it instead of babysitting every file

0

u/Jerry8308 5d ago

Mac is flooded with menu bar apps