No uploads
Compression and EXIF stripping run in your browser using the Canvas API and a tiny EXIF parser. The bytes never leave the tab.
Shrink JPEGs, PNGs, and WebPs and remove every embedded GPS coordinate, camera serial, and timestamp without a single byte leaving your device. Drag a file in. Watch the network counter stay at zero.
JPEG · PNG · WebP — up to 50 files at once
higher = bigger file
downsizes only, never enlarges
"keep" matches the input
removes camera & GPS
There's a counter in the header showing every network request the page has made since you opened it. After load, it stays at zero. Forever. If it ever ticks, the privacy claim is wrong — and you'll see it before we do.
Compression and EXIF stripping run in your browser using the Canvas API and a tiny EXIF parser. The bytes never leave the tab.
No Google Analytics, Plausible, Sentry — nothing reports back. The header counter would tick if it did. CSP is locked down to the origin.
No cookies, no localStorage of file content, no fingerprinting. Settings stick on this device only. Refresh and the queue clears.
A single HTML file you can drop on a USB stick. A CLI you can pipe into your image folder. The full source under MIT. Pick your level of paranoia.
One self-contained index.html. No internet required. Drop it on a thumb drive, double-click, work offline forever.
For batch jobs, build pipelines, and folks who never touch a mouse. Reads a directory, writes optimized files, exits clean.
npx xjmani-image-compressor ./photos
Every line of code, MIT-licensed, on GitHub. Fork it, audit it, extend it. Issues and PRs welcome.
github.com/xjmani/image-compressor →