I kept running into the same annoying problem.
A website or application form would ask for an image under 100KB, 50KB, or even 20KB, but most image compressors just give you a quality slider and leave you guessing.
So I built CompressMyPhotos.
https://compressmyphotos.com/?utm_source=devto&utm_medium=community&utm_campaign=showdev
The idea is simple: instead of repeatedly changing the quality and checking the file size, you can choose the target size you actually need.
Right now it supports JPG, PNG, and WebP images, with exact target sizes from 20 KB up to 1 MB.
It also supports batch compression, ZIP downloads, before-and-after file size information, image dimensions, and EXIF metadata inspection and removal.
One thing that was important to me was privacy.
The images are processed locally in the browser, so the actual photos are not uploaded to a remote server for processing.
That can be useful when someone is working with personal photos, application images, client files, or pictures that may contain metadata such as camera information or GPS data.
The exact-size compression part was also an interesting challenge.
Making an image “smaller” is easy, but trying to get it under a specific target while keeping as much usable quality as possible requires adjusting encoding settings and, when necessary, the image dimensions.
For very small targets, there will obviously be a quality trade-off, so I tried to make the result transparent by showing users what changed.
The project is live now and completely free to use. No account is required.
I am still improving it and would genuinely appreciate feedback.
I am especially interested in knowing:
Does the exact-size compression work well on your images?
Is the mobile experience clear?
Does the EXIF removal workflow make sense?
What image tool would you actually want added next?
I have resizing and format conversion in mind, but I would rather build based on what people actually need instead of adding features just for the sake of it.
Would love to hear what you think.
Top comments (0)