KeptPix

Compress a PAN card photo

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 30 KB?

The two PAN portals do not agree, which is why a single number is hard to find. NSDL wants a JPEG between 20 KB and 50 KB; UTIITSL wants one under 30 KB. Only 20 to 30 KB satisfies both, so that is what this page aims at — and it is why compressing to the 50 KB most guides mention can still be rejected if you are on the UTIITSL form. The more surprising part is NSDL's lower bound: it refuses a photo under 20 KB. Every other upload limit you will meet punishes a file for being too large, and this one also punishes it for being too small, so squeezing it as hard as possible is the wrong instinct here.

Where this limit comes up

  • NSDL (Protean) PAN applications, which want 20-50 KB
  • UTIITSL PAN applications, which want under 30 KB
  • PAN correction and reprint forms, which use the same uploader
  • e-KYC flows that ask for the same photo alongside a signature

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

Which portal am I on?

Look at the address bar. NSDL applications sit on tin.tin.nsdl.com or onlineservices.nsdl.com, and UTIITSL on pan.utiitsl.com. If you are unsure, aim for 20 to 30 KB — that band is accepted by both, which is what this page targets.

My photo was rejected for being too small. Is that possible?

Yes, and it is unusual. NSDL sets a floor of 20 KB as well as a ceiling of 50 KB, so a heavily compressed photo fails for the opposite reason to normal. If that happened, raise the target rather than lowering it — this page aims at 30 KB precisely to stay clear of the floor.

Does this crop to 3.5 x 2.5 cm for me?

No, and it is worth knowing before you start. This page controls file size, not framing. NSDL specifies 3.5 cm tall by 2.5 cm wide at 200 DPI — about 276 x 197 pixels — while UTIITSL wants a 213 x 213 pixel square. Crop to whichever your form asks for first, then compress, because cropping afterwards changes the file size and undoes the work.

Both portals say JPEG. Does that matter?

Yes. Neither accepts PNG, and a PNG renamed to .jpg is still a PNG inside — the uploader reads the file, not the extension. This page always writes a real JPEG, so a screenshot or a PNG export becomes one on the way through.

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 →