KeptPix

Compress a passport photo to 50KB

Set the size, drop your files, get them back under the limit. Everything happens on your device — nothing is uploaded.

Files never leave this device · works offline

Drop JPG files here

or drop them anywhere here · or paste from clipboard

No upload caps · No sign-up · No watermarks

Processing locally · 0 bytes sentHow to verify this →

Why 50 KB?

Fifty kilobytes is the most common ceiling for passport, visa and identity photo uploads, and a properly prepared headshot clears it without looking soft. The order of operations is what decides the outcome: crop to the shape your application requires first, then compress. Do it the other way round and every byte you saved gets spent again the moment you trim the frame. A passport photo is also unusually kind to a compressor — one face, even lighting, a plain background — so if yours will not fit at a reasonable quality, the usual reason is that it is still a full phone photo with a room behind it.

Where this limit comes up

  • Passport applications and renewals with a 50 KB photo cap
  • Visa portals, which frequently specify both a pixel size and a file size
  • National identity and enrolment systems
  • Bank, KYC and employment onboarding document uploads

How the exact size is reached

Most tools give you a quality slider and leave you to guess. We search instead: encode, measure, adjust, repeat — usually landing within three passes and never more than eight. The result is accepted once it sits between 92% and 100% of your target, so you get a file that is comfortably under the limit rather than one balanced exactly on it.

When quality alone cannot get there — and for the smallest targets it cannot — the image dimensions are reduced as well, and you are told exactly what the final size became. A target that is genuinely unreachable returns the closest result we managed, clearly labelled, rather than a silent failure or an oversized file.

Frequently asked questions

Does this crop my photo to passport dimensions?

No, and that is worth knowing before you start. This page controls file size, not framing. Most countries want 35×45 mm and the United States wants a 2×2 inch square, so crop to your requirement first and compress second — a crop after compression changes the file size and undoes the work.

My photo is 4 MB. Can it really reach 50 KB and still be accepted?

Usually yes, because most of those 4 MB are resolution you do not need. Passport portals display the photo small, and a correctly cropped headshot at around 600×750 pixels looks sharp well under 50 KB. What does not survive is submitting a full-resolution phone photo untouched and hoping quality alone can carry it down.

The photo still looks blurry at 50KB. What now?

Check the background first. A plain, evenly lit wall costs almost nothing to encode, while a room full of furniture and shadow competes with your face for the same 50 KB. Re-shooting against a blank wall in soft daylight will usually do more for sharpness than any setting on this page.

What if my photo cannot reach the target?

You get the closest result we can produce, clearly labelled, plus a one-tap option to allow resizing so it can go further. You never get a silent failure or a file that quietly exceeds the limit. Physics applies: a 12 MP photo cannot become 20 KB at full resolution, so very small targets mean reducing the dimensions too.

Are my photos uploaded?

No. The compression runs entirely inside your browser, so your files never leave your device. You can check that yourself in your browser’s Network tab, and the page keeps working with your network disconnected.

Nothing is uploaded — and you can check

Conversion happens on your own device, inside this browser tab. There is no server to receive your files, which is a stronger guarantee than a promise not to look at them. Open your browser's developer tools, switch to the Network tab, and convert something: you will see no request carrying your image. The page keeps working with your network disconnected.

How to verify this yourself →