Compress and resize photos without uploading them
Drop a batch of photos, choose a size, and download files that stay upright — camera and GPS metadata removed, pixels rotated the right way up.
🔒 100% client-side · zero server upload
On by default. Portrait photos are rotated upright first, so removing EXIF never turns them sideways.
Results
Everything runs in this browser tab. Nothing is uploaded.
Malaysian rules & edge cases
What is removed, per format. Metadata is stripped at the container level, so the image data itself is never touched by the strip:
| Format | Blocks removed | What stays |
|---|---|---|
| JPEG | APP1 Exif/XMP, an MPF preview index, other vendor APPn blocks, COM comment, and the second image some phones append after the end of the file | JFIF (APP0, with its embedded thumbnail cut out), the ICC colour profile, the quantisation/huffman tables and the compressed image data |
| PNG | eXIf, tIME, tEXt / iTXt / zTXt, private vendor chunks | IHDR, PLTE, tRNS, IDAT, IEND and the colour chunks (iCCP, sRGB, gAMA, pHYs), so the file still opens and still prints at the right size |
| WebP | EXIF (camera, date, GPS), XMP | The ICCP profile and the image data; the VP8X flags are rewritten to match what survives, so readers do not look for blocks that are gone |
Orientation is applied to the pixels, not just deleted. EXIF orientation runs 1–8; 6 is the common "phone held upright" case and means "rotate 90° clockwise to display". This tool rotates the pixels on the way in and then drops the tag, so a portrait photo stays portrait. That is the one bug every "remove EXIF" script ships with.
Size rules. The longest-edge presets never upscale, and every canvas is capped at 16.7 megapixels — a 48 MP photo is scaled down before it is drawn, because mobile Safari refuses a larger canvas. Target-size mode bisects a quality range of 0.32–0.92 — about four encodes instead of nine — and says so when the file still misses the number. PNG ignores the quality setting because it is lossless.
Honest limits. WebP output needs a browser that can actually encode it; when it cannot, the file is saved as JPEG and named .jpg — never a PNG renamed .webp. HEIC is not decoded here: set the iPhone camera to Most Compatible, or convert the HEIC to JPEG first. The colour profile is kept, not stripped: deleting it would quietly turn a Display P3 photo into washed-out sRGB. A re-compressed file does come back without one, because the browser's encoder writes none — that, not the strip, is where a very wide-gamut photo loses a little saturation.
Before and after
Before
IMG_2481.jpg — 4032×3024 — iPhone 15 Pro — 2026-10-18 09:41 — GPS 6.3521, 99.8021 — orientation 6
produk-shopee-01.png — 1080×1080 — Photoshop 25.0 — no camera, no GPS After
IMG_2481-min.jpg — 1200×1600 portrait — camera, GPS and date removed — orientation applied to pixels
produk-shopee-01-min.jpg — 1080×1080 — metadata removed, pixels untouched How it works
- Drop your photos into the box, or press "Load sample data" for a Langkawi photo that really carries camera, GPS and orientation tags.
- Choose the format, the longest edge and either a quality or a target size in KB. Portrait photos are rotated upright before anything is saved.
- Press Run, check the before/after size for every file, then download them one by one — the files never left this tab.
FAQ
Are my photos uploaded to a server?
No. The file is read with the browser File API and re-encoded by the canvas in this tab. You can open the Network panel and press Run: no request is made, which matters because holiday photos usually carry GPS coordinates.
Why is the file not exactly 100 KB?
Encoders accept a quality, not a byte count, so target-size mode bisects the quality range and keeps the smallest result that fits. When even 0.32 is too big, the tool says the target was missed instead of pretending otherwise — resize the longest edge as well and it will get there.
Does it remove the GPS location?
Yes, together with the camera model, lens, software and timestamps. The EXIF orientation is read first and baked into the pixels, so removing the tag does not turn a portrait photo sideways.
Why did it save a JPEG when I chose WebP?
Safari on iOS and older macOS cannot encode WebP in a canvas: asking for image/webp silently returns a PNG. This tool checks the type of the bytes it actually got, and when it is not WebP it re-encodes as JPEG and says so. A PNG named .webp would be the worse outcome.
Can it open HEIC photos from my iPhone?
Not yet. A HEIC decoder is a 9–26 MB download with its own licence, so it is planned as a separate opt-in page. For now, set the iPhone camera to Formats → Most Compatible, or share the photo as JPEG.