xjmani / image-compressor
private · offline · zero uploads

Compress images.
Strip the metadata.

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.

drop images_

JPEG · PNG · WebP — up to 50 files at once

higher = bigger file

downsizes only, never enlarges

Format keep

"keep" matches the input

EXIF on

removes camera & GPS

verify it yourself

Privacy as an instrument, not a claim.

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.

01

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.

02

No telemetry, no analytics

No Google Analytics, Plausible, Sentry — nothing reports back. The header counter would tick if it did. CSP is locked down to the origin.

03

No tracking

No cookies, no localStorage of file content, no fingerprinting. Settings stick on this device only. Refresh and the queue clears.

run it offline

Don't trust the page. Take it home.

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.

single file

Standalone HTML

One self-contained index.html. No internet required. Drop it on a thumb drive, double-click, work offline forever.

download (.html, ~340 KB) →
command line

Local CLI

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
copied to clipboard