Convert & Compress

Convert &
Compress

An open source, small, and native tool for macOS that converts, compresses, and resizes images in batches.
All in one pipeline. With a live preview. Native, local & private. Written in swift for macOS.
2.000Downloads
4,9Stars
22Reviews
100GitHub Stars
Swift
Xcode
Figma
Git
Star
Star
Star
Star
Star
Download from App Store

Product Demo

Motivation

Anyone working in web design, app development, or marketing knows the struggle. Some formats are better for the web, others compress better, some support transparency, and others are simply mandatory requirements. Often, you have multiple assets that need adjustment simultaneously. While existing tools can handle these tasks, I couldn't find one that handled everything in a single pipeline. I found myself using one tool to convert, another to compress, and a third to resize. This disrupted my workflow, so I started designing Convert & Compress.

Concept

The goal was a single pipeline combining all the transformations I previously spread across different tools. Users needed a before-and-after comparison to find the right balance between file size and quality. Additionally, the tool had to run locally for privacy, performance, and legal reasons. This also eliminated the need for a backend.

Human-Centered Design

The design process was rooted in understanding real user workflows. I started by analyzing my own pain points as a designer, then validated these assumptions by engaging with communities on Reddit and gathering feedback from early testers.

Research & Discovery

Before writing any code, I documented the tasks I performed repeatedly: converting screenshots to WebP, compressing hero images, resizing assets for different breakpoints. I mapped out which tools I used for each step and identified the friction points: context switching, inconsistent quality settings, and lack of batch processing.

Continuous Feedback Loop

Rather than building in isolation, I shared progress publicly from early stages. Reddit became my primary channel for user research. Posts generated hundreds of comments with specific use cases I hadn't considered, like scaling by the shorter side for social media thumbnails, or the need for keyboard-only workflows.

Prioritizing Feedback

Not every suggestion made it into the app. I developed a framework for evaluating requests: Does this affect many users? Does it fit the app's scope? Can it be implemented without adding complexity? This helped maintain focus while still being responsive to the community.

Design

I wanted the app to feel native to macOS, so I chose Swift for development. This allowed for the implementation of physics-based animations, trackpad gestures, and haptic feedback.

The Pipeline

The interface reflects the pipeline concept: a toolbar containing all available adjustments. The file format sits at the start, as it dictates the available steps (e.g., JPEG vs. PNG options). This is followed by resizing, compression (quality), flipping, background removal, and metadata stripping.

Size Controls

Resizing presented a few challenges. Users needed to scale by height, width, or, based on feedback, the shorter side. I also needed to include cropping and size templates. The challenge was fitting these options into a compact, easy-to-understand control. Since cropping and scaling along a specific side are rarely done simultaneously, I used a switch to toggle between these two modes.

Sliders

I implemented sliders to let users quickly snap to common values. For image size, this includes powers of two up to 4K (16, 32... 3840) and standard resolutions like 1080p. Quality adjusts in increments of five. For precise control, clicking the slider converts it into a text input field.

File Management

To support different workflows, files can be loaded via the Finder, drag-and-drop (to the icon or window), or copy-paste. Once loaded, files are immediately transformed based on the current pipeline settings, showing the estimated export size in pixels and kilobytes. Users can remove individual images or copy the processed versions directly to the clipboard.

Comparison

A direct comparison view was a priority for me and the users. It helps estimate how much an image can be compressed without visible quality loss. I built a UI where a slider overlays the new version on top of the original. Both images zoom synchronously for close inspection, and a double-click resets the view to 100%. Parameters can be adjusted while viewing the comparison for immediate feedback.

Details

A few smaller details improved the user experience. I added keyboard shortcuts for changing formats, opening the comparison view, deleting, and saving. Users also requested templates, allowing them to save and reuse specific pipelines.

The save button also acts as a status indicator. It shows progress during import and export. After exporting, the app automatically reveals the saved images in the folder. If no specific destination is selected, it defaults to the source folder.

App Icon

For the app icon, I used Apple's new Icon Composer in Xcode, which allows layered, dynamic icons that adapt to light and dark mode. I prepared the individual layers in Figma, then imported them into Icon Composer. The tool limits you to 5 layers which required some fiddling to achieve the depth and hierarchy I had in mind while keeping the icon readable across both appearance modes.

Release

Preparing for the App Store involved creating assets and translating the app into over 17 languages. I released the app on October 1, 2025. The process wasn't entirely smooth; I initially requested permission to access the Downloads folder to streamline imports. This caused a rejection during review, so I had to remove that specific permission to get the app published.

Iterative Improvement

After the release, I shared my progress on Reddit. The community reception was positive, but posts also generated suggestions on how to make the app more useful. I kept a backlog of these ideas, considering how to integrate them without cluttering the interface. Features like the cropping tool and the zoomable comparison view came directly from this feedback. I am still working on the app, with plans to potentially add video/audio conversion and support for more formats.

Marketing

Marketing took place almost exclusively on Reddit, with additional launches on Product Hunt and BetaList. I also designed a landing page at convert-compress.com. Since the tool is open source, I could post in developer communities like r/SwiftUI and r/WebDev, though most users came from r/MacApps. My post in r/SwiftUI became the subreddit's top-voted post of all time. Collectively, over 300,000 people viewed the posts.

Development

As this was my first Swift project, using Xcode with Cursor helped significantly with understanding the syntax. I used Claude Sonnet 4.5 and Gemini 3 to assist with the code. The focus was on utilizing native macOS APIs, such as ImageIO and StoreKit.

What I Learned

Developing a product from start to finish, including feedback, marketing, and support, is a lot of work, but enjoyable. I learned that user feedback shouldn't always be implemented exactly as requested. It is better to evaluate if the issue affects many users and fits the broader context of the app before building a solution. Reddit proved to be an effective platform when engaging organically and putting effort into responses. The community is active and honest, providing exactly the kind of direct feedback needed to improve a product. And last, image processing is way harder than I thought.