Products
Compresso
Make images lighter, without uploading them anywhere.
In one paragraph
Forms ask people to upload a photo “under 2 MB” and leave them to work out how. That processing is the system’s job, pushed onto the person. Compresso does it in the browser, offline, and never uploads the file.
The distance
“Upload a photo under 2 MB.” The form knows what it needs. The person holding a 3 MB phone photo has no idea what a megabyte is, where to shrink it, or whether an app will keep a copy. My paper on document submission systems calls this externalised processing: work the system should do, handed to the user. Compresso is that paper turned into a tool.
The working
Three rules shaped every decision.
- Nothing leaves the device. Compression runs in the browser, across CPU cores with Web Workers, and keeps working offline once installed.
- Never return a bigger file. If compressing would grow an image, you get the original back. A regression test pins it.Receiptnever biggerOutput guaranteeMethodIf compression would grow a file, the original is returned. Pinned by a regression test.Sourcecompresso test suiteChecked
- The photograph is the only colour. The interface stays black and quiet so your image is the loudest thing on screen.
What shipped
An offline web app in 7 languagesReceipt7 languagesCompresso interface languagesMethodLocales shipped in the app.Sourcecompresso.izaias.xyzChecked that takes HEIC, JPEG, PNG, WebP and AVIF and batches up to 100 images,Receiptup to 100 imagesBatch sizeMethodMaximum batch in the app, processed across CPU cores.Sourcecompresso.izaias.xyzChecked and the library underneath it: compresso.js, zero required dependencies, 3.6 KB gzipped.Receipt3.6 KBcompresso.js, gzipped coreMethodGzipped size of the published library build.Sourcecompresso READMEChecked
Drag to compress
3.3 MBside 100% of the original · drawn to scale by area
One measured run: 3.3 MB to 93.5 KB. Not an average.
Receipts
- 3.6 KB gzipped core.Receipt3.6 KBcompresso.js, gzipped coreMethodGzipped size of the published library build.Sourcecompresso READMEChecked
- One measured run: 3.3 MB to 93.5 KB. One run, not an average.Receipt3.3 MB to 93.5 KBOne measured runMethodA single photo compressed once in the live app. One run, not an average.Sourcecompresso.izaias.xyz; résumé fact baseChecked
- Never returns a bigger file, pinned by a regression test.Receiptnever biggerOutput guaranteeMethodIf compression would grow a file, the original is returned. Pinned by a regression test.Sourcecompresso test suiteChecked
- MIT licensed. 7 languages.Receipt7 languagesCompresso interface languagesMethodLocales shipped in the app.Sourcecompresso.izaias.xyzChecked
Lessons paid for twice
- Publish the one run you measured, not the average you hope for.
- A guarantee is only real when a test fails without it.
- The best upload is the one that never happens.