✍️ Signature & Photo Resizer
Fit a signature or photo to exact pixel dimensions AND a KB range, not just a ceiling. Crops to the ink, cleans the paper, saves JPG. Runs in your browser.
Choose your signature or photo, or drop it here
Processed in this tab. Your signature is never uploaded.
These are starting points, not authorities. Requirements differ between forms and change between notification cycles, so type the numbers your own notice gives.
Written into the saved JPG. Only matters if your form checks it — many state 200 DPI.
What Signature & Photo Resizer Does
Application portals do not ask for a file under a size. They ask for one inside a window — "signature size should be between 10 kb and 20 kb" — and the validator checks both ends. A file at 25 KB is rejected, and a file at 6 KB is rejected too, with the same unhelpful message. The floor is there to stop blank or junk uploads, and it catches an enormous number of people whose signature simply compressed very well.
That is why an ordinary image compressor does not solve this. Compressors are built to chase a ceiling; ask one for 20 KB and it will cheerfully hand you 6 KB and consider the job done. On top of that the portal usually mandates exact pixel dimensions, so there is no downscaling left to trade against quality — the picture size is fixed and the encoder setting is the only lever.
The other half of the problem is the paper. A phone photo of a signature is mostly photographed sheet: noisy grey and beige mid-tones that JPEG spends nearly all its bytes describing, surrounding a signature that occupies a fraction of the frame. Squeeze that into 140 by 60 pixels and the strokes end up perhaps forty pixels wide — an illegible smudge which then gets printed on an admit card. Cropping to the ink and flattening the paper to white fixes the legibility and the file size at the same time, and it is the step every competing page leaves to you to do by hand somewhere else.
Everything runs in your browser. A signature is a sensitive identifying mark, and this site is a static export with no server that could receive one.
How to Use Signature & Photo Resizer
- Add your signature or photo — a phone picture of a signature on plain white paper is fine
- Type the pixel dimensions and the KB range your form asks for, or start from a preset
- Leave cropping and paper cleaning on unless your file needs to be bigger
- Check that the result reports "inside the range", then save the JPG
Formula Used by Signature & Photo Resizer
Fitting inside a mandated box without distorting the signature
scale = min( boxW ÷ inkW , boxH ÷ inkH ) — then centre on white
- inkW, inkH
- the bounding box of the strokes after the blank paper is trimmed away
- boxW, boxH
- the pixel dimensions your form demands
- min
- the tighter of the two axes, so the whole signature fits and its proportions survive
Worked example
A 3024 × 4032 phone photo whose ink occupies a 1600 × 520 region, target 140 × 60.
- Crop to the ink: 1600 × 520, discarding the rest of the sheet.
- Scale by width: 140 ÷ 1600 = 0.0875
- Scale by height: 60 ÷ 520 = 0.1154
- Take the smaller, 0.0875, so both axes fit.
- Drawn size: 140 × 46, centred vertically on white.
Result: The signature spans the full 140-pixel width. Stretching it to 140 × 60 instead would make it 30% taller than it really is.
Finding the quality that lands inside the window
binary search q ∈ [0.05, 1] for the highest q with bytes ≤ max; then check bytes ≥ min
- max
- the ceiling, e.g. 20 KB = 20,480 bytes
- min
- the floor, e.g. 10 KB = 10,240 bytes
Worked example
A cleaned 140 × 60 signature, window 10–20 KB.
- Encode at quality 1 first. If that already fits under 20 KB, no search is needed — and this is the case that usually lands short of the floor.
- If it overshoots, binary search downward: ten passes narrow the quality interval to under 0.001.
- Measure the winner against the floor and report which side of the window it fell on.
Result: Either a file inside the window, or a clear statement of which bound was missed and what to do about it — never a silent out-of-range result.
Why a general compressor fails this job
| What the form requires | A normal compressor | What is needed |
|---|---|---|
| A maximum, e.g. under 20 KB | Handles it | — |
| A minimum, e.g. at least 10 KB | Ignores it and often undershoots | Search must check the floor too |
| Exact pixels, e.g. 140 × 60 | Downscales freely to hit the size | Dimensions fixed; quality is the only lever |
| A legible signature in a tiny box | Shrinks the whole photo, paper included | Crop to the ink first |
| JPG specifically | Often keeps PNG or WebP | Always encode JPEG |
Why the file comes out too small, and what actually fixes it
The floor is the failure people cannot diagnose. Every one of these is a real change to the image, in the order worth trying.
| Fix | Effect on file size | Cost |
|---|---|---|
| Scan or photograph at a higher resolution | Large increase — more real detail to encode | None; this is the right answer |
| Turn off the paper cleaning | Often doubles it — the texture is what was costing bytes | Looks photographed rather than scanned |
| Crop less tightly | Moderate increase | The signature occupies less of the box |
| Pad the file with a JPEG comment segment | Exact — reaches the floor precisely | Adds blank bytes, not image; the picture is unchanged |
How to Read Your Result
Sign on plain white, unruled paper
Ruled lines and shadows survive cropping and cleaning, and at 140 by 60 pixels a blue rule can be as prominent as the signature itself. A dark pen on a plain white sheet in even light, photographed straight on, produces a file that needs almost no help from any tool.
Check the range before you upload, not after
The result line says outright whether the file landed inside the window. Portals typically report only that the upload was invalid, without saying which bound was missed, so knowing before you submit saves the guessing loop that this whole search term is made of.
Padding is a last resort, and it is padding
It adds blank bytes inside a JPEG comment segment. The image data is untouched, the file stays a completely valid JPEG that any viewer opens identically, and it is offered only after the genuine fixes have been tried. It is described plainly here rather than applied silently, which is what tools that quietly hit every target for you are doing.
Limitations & Accuracy Notes
- No table of per-exam requirements is published here. The figures circulating online disagree with one another and could not be verified against an official source, and requirements change between notification cycles. Use the numbers in your own notice.
- The paper cleaning is a brightness threshold, not background removal. A heavy shadow across the sheet or a photo taken in poor light may not lift cleanly — retake it in even light rather than fighting the slider.
- Cropping finds the darkest content in the frame. If your photo includes a printed line, a stray mark or a dark table edge, that will be treated as part of the signature; crop roughly by hand first in that case.
- Output is always JPG, because that is what portals require. There is no PNG option here by design.
- Colour is preserved but the paper cleaning pushes everything toward black on white, so a signature in light blue ink will darken noticeably.
Frequently Asked Questions
What does "signature size should be between 10 kb and 20 kb" mean?
My signature comes out under the minimum. What now?
Why crop to the signature instead of using the whole photo?
What does "clean the paper to white" actually do?
Will my signature be stretched to fit the box?
Do you have a table of the sizes each exam requires?
Is my signature uploaded anywhere?
Why does it always save as JPG?
References & Further Reading
- MDN — HTMLCanvasElement.toBlob() — The encoder and its quality argument, which the range search drives
- ITU-T T.81 — the JPEG specification — Defines the COM (comment) marker segment used for padding, and the JFIF density fields used for the DPI tag
- MDN — Image file type and format guide — Why a PNG renamed to .jpg is still a PNG, and will be rejected by anything that inspects the file