Exam photo and signature compression benchmarks
Measured data, not rules of thumb. We ran 6 real portraits and a real signature through ExamFitr's editor in Chrome 151.0.7922.169 on and recorded file size and quality at each setting. You can download every number below and cite this page.
Key findings
- At 200 × 230 px, the median photo was 17.8 KB at JPEG quality 95 (range 11.8–25.2 KB) and 47.7 KB at quality 100 (range 45.7–67.2 KB). For a 20–50 KB limit the right quality is at or between those two settings and differs from photo to photo, which is why the editor searches for it per photo.
- At 350 × 450 px, going from quality 95 to 100 multiplied the median size by 3.0 (47.5 → 142.8 KB) while PSNR rose from 41.9 to 50.9 dB.
- A 140 × 60 px signature reached only 5.6 KB even at quality 100, below the 10 KB minimum that IBPS-format forms set, so a minimum can only be met by padding the file.
- Replacing the background with white cut the median file size by 16.6% at quality 80 and 17.4% at quality 92. Busy backgrounds saved the most; plain walls almost nothing.
1. JPEG quality vs file size
Median, minimum and maximum over 6 photos; PSNR is the median against the lossless crop (higher is closer; above about 40 dB differences are hard to see).
200 × 230 px photo (IBPS-format banking forms)
| Quality | Median KB | Min KB | Max KB | Median PSNR |
|---|---|---|---|---|
| 50 | 5.4 | 3.6 | 8 | 32.1 dB |
| 60 | 6.2 | 4.1 | 9 | 32.7 dB |
| 70 | 7.3 | 4.7 | 10.5 | 33.8 dB |
| 80 | 9.1 | 5.7 | 13 | 35.2 dB |
| 90 | 12.8 | 8.2 | 18.4 | 37.9 dB |
| 95 | 17.8 | 11.8 | 25.2 | 40.2 dB |
| 100 | 47.7 | 45.7 | 67.2 | 50.6 dB |
350 × 450 px photo (NTA exams such as JEE Main)
| Quality | Median KB | Min KB | Max KB | Median PSNR |
|---|---|---|---|---|
| 50 | 14.1 | 8.2 | 22.5 | 34.4 dB |
| 60 | 15.8 | 9.3 | 25.8 | 35.1 dB |
| 70 | 18.6 | 11 | 30.6 | 36 dB |
| 80 | 23 | 14 | 38.6 | 37.2 dB |
| 90 | 33.4 | 21.2 | 56.3 | 39.6 dB |
| 95 | 47.5 | 32.6 | 77.6 | 41.9 dB |
| 100 | 142.8 | 127.6 | 204.9 | 50.9 dB |
550 × 550 px photo (UPSC)
| Quality | Median KB | Min KB | Max KB | Median PSNR |
|---|---|---|---|---|
| 50 | 21.7 | 11.9 | 37.6 | 36 dB |
| 60 | 24.7 | 13.5 | 43.4 | 36.6 dB |
| 70 | 29.3 | 16.2 | 52.3 | 37.6 dB |
| 80 | 36.8 | 21.3 | 66.8 | 38.9 dB |
| 90 | 54.8 | 34.8 | 99.1 | 41.2 dB |
| 95 | 80.3 | 56.6 | 139.1 | 42.9 dB |
| 100 | 257.1 | 205.2 | 352.2 | 51.2 dB |
2. Largest signature file at high quality
One cleaned phone photo of a signature (dark ink on white paper), resized with each exam preset.
| Size | Preset | Quality 90 | Quality 97 | Quality 100 |
|---|---|---|---|---|
| 140 × 60 px | ibps | 2.3 KB | 3.2 KB | 5.6 KB |
| 276 × 118 px | neet-pg | 4.7 KB | 6.8 KB | 12.1 KB |
| 350 × 150 px | jee-main | 6.3 KB | 9.1 KB | 16.3 KB |
| 472 × 157 px | ssc | 7.5 KB | 10.7 KB | 19.3 KB |
3. File size before and after background removal
Each photo cropped to 350 × 450 px, then the background replaced with white by the editor's “Best” model, running in the browser.
| Photo | Quality 80 (KB) | Saving | Quality 92 (KB) | Saving | Highest quality under 50,000 bytes | Removal time |
|---|---|---|---|---|---|---|
| p0.jpg | 25.1 → 17.3 | 31.1% | 39.4 → 27.2 | 31% | 0.94 → 0.97 | 1.9 s |
| p1.jpg | 14 → 14 | 0% | 23.5 → 22.6 | 3.8% | 0.97 → 0.98 | 1.9 s |
| p3.jpg | 18.2 → 17.8 | 2.2% | 28.6 → 27.8 | 2.8% | 0.97 → 0.97 | 1.8 s |
| p4.jpg | 20.8 → 11.6 | 44.2% | 33.7 → 18 | 46.6% | 0.95 → 0.99 | 2.0 s |
| p5.jpg | 38.6 → 21.6 | 44% | 61.7 → 34.9 | 43.4% | 0.87 → 0.96 | 1.9 s |
| p7.jpg | 29.1 → 29.1 | 0% | 45.3 → 44.8 | 1.1% | 0.93 → 0.93 | 1.9 s |
Median saving: 16.6% at quality 80, 17.4% at quality 92.
Methodology
- Tool: ExamFitr's own editor (the same code visitors use), driven by the script
tests/benchmarks.pyin headless Chrome 151.0.7922.169. - Pipeline: each photo is cropped and resized by the exam preset, exported losslessly as PNG, then encoded with the browser's JPEG encoder (
canvas.toBlob) at each quality. That is the encoder the editor uses for downloads. - Units: KB in the tables means 1,024 bytes. The “under 50,000 bytes” column uses a 12-step binary search over quality.
- Quality metric: PSNR in dB between the JPEG and the lossless crop.
- Timing: background removal ran on a CPU-only cloud machine without a GPU; a typical laptop may be faster or slower.
- Privacy: the run made 389 network requests, 0 to other websites and 0 carrying a request body. Nothing was uploaded.
Test photos
| File | Source |
|---|---|
| p0.jpg | The project's own test photo (phone portrait, 2687 × 3356 px) |
| p1.jpg | Wikimedia Commons |
| p3.jpg | Wikimedia Commons |
| p4.jpg | Wikimedia Commons |
| p5.jpg | Wikimedia Commons (1280 px thumbnail) |
| p7.jpg | Wikimedia Commons (1280 px thumbnail) |
Limits
- Six photos and one signature are a small sample. Treat the ranges, not just the medians, as the result.
- Other encoders (phone apps, Photoshop, other browsers) produce different sizes at the same quality number.
- These are measurements, not exam rules. Use your exam's official notice for the limits (see the editorial policy).
Download the data
- benchmarks.json: the complete raw output of the test run
- benchmarks-jpeg-quality.csv: JPEG quality vs file size and PSNR, 3 photo sizes
- benchmarks-signature.csv: Largest signature file at high JPEG quality, 4 sizes
- benchmarks-background.csv: File size before and after background removal, per photo
How to cite
ExamFitr. “Exam photo and signature compression benchmarks.” Measured 3 October 2026. https://examfitr.com/benchmarks/
A practical write-up of what these numbers mean for your upload is in the guide JPEG quality vs file size for exam photos.