A desktop application for compressing JPEG and PNG photos without visible quality loss. Built with Python and customtkinter.
- Drag & drop support (not yet)
- Batch compression (multiple files at once)
- Adjustable quality slider (1–95%)
- Progress bar with live feedback
- Savings summary (before / after)
- Saves compressed files next to originals — originals are never overwritten
- Settings menu with custom output folder and adjustable thumbnail size
- Python 3.10+
- Pillow
- Clone the repository:
git clone https://github.com/Sebian12/SnapPress.git
cd SnapPress- Install dependencies:
pip install Pillow customtkinter CTkMessagebox- Run the app:
python main.py- Download .exe file from current release
- Download the Linux binary from current release
- Make it executable
chmod +x SnapPress - Run:
./SnapPress
A native Linux binary is available starting from v1.8.1. It was built and tested on Zorin OS 18.1 GNOME (Ubuntu-based), v1.8.4 built and tested on Fedora Linux 44 KDE.
Since v1.9.0, every release comes with an .exe file for Windows (oldest tested Windows version is Windows 7), a binary for Ubuntu-based systems, and a binary for Fedora-based systems.
Note: the binary may not run on distributions with an older glibc version or on minimal/non-glibc systems (e.g. Alpine). It may also have issues on pure Wayland sessions without XWayland.
If the binary doesn't work on your system, you can run from source:
pip install Pillow customtkinter CTkMessagebox
python3 main.py- Click Choose photos to select files
- Adjust the quality slider (default: 80%)
- Click Compress and save
- Compressed files are saved in the same folder as the originals with a
_compressedsuffix or saved in selected folder
- Switch from tkinter to customtkinter
- Dark mode (1.2.0)
- Settings menu (1.3.0)
- Custom output folder (1.4.0)
- Settings saver (1.5.0)
- File counter (1.5.0)
- Button to clear photo list or single photo (1.5.0)
- Compressed file size next to file name (1.6.0)
- Thumbnails of photos (1.7.0)
- App logo (1.7.1)
- User set thumbnail size (1.7.2)
- Optimization (1.8.0)
- EXIF metadata preservation (1.9.0)
- Granular metadata control in settings (sliders/checkboxes to choose which EXIF tags to keep) (1.10.0)
- Drag & Drop support (1.11.0)
- Multithreading (1.12.0)
- New file format support (1.13.0)
- Pack compressed photos to zip (1.14.0)
- Android port (2.0.0)
- Python 3.14
- customtkinter — GUI
- Pillow — image processing
- CTkMessageBox
MIT




