What “under 200 KB” actually means

The number on a government upload, a job portal, or an ad network is almost always the size of the file after you press Save — the blob.size you see in the row. It is not the pixel count, not the quality percent, and not the size of the email that will later carry the file. If the field says 50 KB, a 51 KB JPEG fails even if it looks identical to a 49 KB one. This tool loops until that integer is low enough, or it admits it cannot get there.

WhatsApp-safe on this page is the 200 KB and 1 MB presets — same route, not a second URL. That is a size you choose before the chat recodes the photo. Recode after send is a different story: the WhatsApp guide. Gmail’s 25 MB send cap plus MIME bloat is the email guide. Do not mix those sentences into this control.

How the loop works

Crush already has a single encoder: createImageBitmap, Canvas, toBlob. The homepage calls it once with your quality and optional max width. Here the same function is called in a ladder copied from the idea in browser-image-compression (MIT): start JPEG quality near 0.90, step down toward 0.36, then drop the long edge from 2560 toward 720. Fourteen encodes is the hard stop so a 48 MP PNG cannot melt the tab. There is no extra wasm, no oxipng, no second codec.

  1. Drop JPG, PNG or WebP. HEIC is refused on purpose — wrong codec.
  2. Pick 50 KB, 200 KB, 500 KB, 1 MB, 2 MB, 5 MB, 10 MB, 18 MB, or type a custom number.
  3. Prefer JPG unless the destination named WebP. PNG under 500 KB is switched to JPEG and the row says so.
  4. Read before bytes, after bytes, how many encodes, and whether the edge moved.
  5. If the row still says over cap: crop the subject or pick another format. Do not tap the button again hoping for magic.

50 KB portals and why PNG dies there

A camera JPEG at 12 megapixels is often 3–8 MB. Quality 80 at full size still misses a 50 KB field. The loop will shrink the long edge. Faces get soft. That is honest: 50 KB of a portrait is a thumbnail, not a print. A PNG screenshot of a form is worse. PNG is lossless. Canvas cannot “compress PNG” the way oxipng does with filters. Under 500 KB this page converts that PNG to JPEG and tells you. If you needed sharp UI chrome, a 50 KB JPEG of a screenshot will look blocky — the portal asked for that trade, not Crush.

18 MB is not 25 MB of mail

The 18 MB preset is a file-on-disk budget for people who still have to attach several photos to one Gmail draft. Gmail’s documented send ceiling is about 25 MB for the whole message, and MIME encoding inflates binaries by roughly a third. This control does not implement MIME and does not open Drive. It only tries to make this still ≤ 18 MB (or whatever you typed). If four 8 MB originals must travel together, cap each one here, then read the email page for the draft math.

What a miss after 14 encodes means

A 48 megapixel phone PNG of a whiteboard, or a screenshot already saved as a huge PNG, can still sit above a 50 KB cap after quality 0.36 and a 720 px edge. The encoder did not fail silently. The row keeps the smallest blob it made and says it is still over. Next levers this page will not pull: cutting the frame (a resizer), turning a photo into 16 colors, or running a PNG optimizer. Lying that the file is under the cap would break the portal anyway.

WebP vs JPEG on a cap

WebP often wins the same look at fewer bytes, so a 200 KB WebP can look better than a 200 KB JPEG. Many chats and almost every visa form still want .jpg. If the uploader lists extensions, obey the list. Compare one hero on JPG vs WebP before you batch. This page will not rename a WebP to .jpg to trick a form.

What this page will not do

  • It will not decode HEIC/HEIF from iPhone Camera.
  • It will not open PDF or compress a scan that is already a document.
  • It will not raise WhatsApp’s own recode or Gmail’s 25 MB send rule.
  • It will not guarantee a hit. Fourteen encodes and a miss is a finished answer.
  • It will not upload the bytes. Closing the tab drops the bitmaps.

For a look-first pass with a quality slider, use the homepage compressor. Button-by-button UI: How to. Safari download quirks: iPhone.