Compress an image to 100 KB
For job portals, exam systems and government forms with a hard 100 KB limit — the tool steps the quality down until the file fits, and says so when it cannot.
🔒 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
Why does my 100 KB file sometimes come out at 130 KB?
Quality steps are discrete: 0.4 might give 130 KB and 0.32 might give 92 KB, with nothing in between. The tool keeps the smallest file it produced and tells you the target was missed, so you can lower the longest edge as well.
Will the photo still look acceptable at 100 KB?
A 1600-pixel JPEG at that size is usually fine for a form photo or a profile picture, and visibly soft for print. Keep the longest edge at 1600 or below; a 4000-pixel photo squeezed to 100 KB loses detail no matter which encoder does it.
Is the photo uploaded while it is compressed?
No. The file is decoded and re-encoded inside this browser tab. Open the Network panel and press Run to confirm that no request leaves the page — the 100 KB file you get back never touched a server.