The fast way
Drop the photo into the compress image to 100 KB page. It tries the highest JPG quality first, searches down for the best quality that still fits, and only scales the picture down when even a low quality is too big. Nothing is uploaded; your browser does the work. For any other limit, the compress image to target size tool takes a number you type in.
The rest of this guide is for when you want to control the result yourself, or understand why one photo fits easily and another refuses to.
Why pixels matter more than quality
A JPEG spends a certain number of bits on every pixel. 100 KB is 100,000 bytes, or 800,000 bits. Spread over a 600 × 600 photo, that is 2.2 bits per pixel, plenty. Spread over a 12 megapixel phone photo of 4,032 × 3,024 pixels, it is 0.07 bits per pixel, which is far too little for any quality setting to look good.
Gregory Wallace, who wrote the standard reference on JPEG in 1991, gave these guideline levels for color photos: 0.25 to 0.5 bits per pixel is moderate to good quality, 0.5 to 0.75 good to very good, 0.75 to 1.5 excellent, and 1.5 to 2.0 usually indistinguishable from the original. He also noted that these are guidelines only and that quality and compression vary with the content of the picture. Treat the numbers as a floor; encoders have improved since 1991.
How much picture fits into 100 KB
| Pixel size | Pixels | Bits per pixel | Expected JPG quality |
|---|---|---|---|
| 600 × 600 Passport-style photo | 360,000 | 2.2 | Hard to tell from the original |
| 800 × 600 Small web photo | 480,000 | 1.7 | Hard to tell from the original |
| 1,024 × 768 Forum or shop listing | 786,432 | 1.0 | Excellent |
| 1,280 × 960 Large web photo | 1,228,800 | 0.65 | Good to very good |
| 1,600 × 1,200 2 megapixels | 1,920,000 | 0.42 | Moderate to good |
| 1,920 × 1,080 Full HD | 2,073,600 | 0.39 | Moderate to good |
| 4,032 × 3,024 12 megapixel phone photo | 12,192,768 | 0.07 | Below the rated range: resize first |
Bits per pixel = 800,000 ÷ pixels. Quality bands after Wallace (1991), section 4.5. Simple scenes need fewer bits, busy ones more.
Read the table from the bottom up and the rule appears: anything around 1,000 to 1,300 pixels on the long side fits into 100 KB at excellent quality. Full HD still looks good to moderate. A straight-from-the-phone photo does not fit, and no quality slider will change that. So resize first.
Step 1: resize to the pixels you need
Ask what the photo is for. Many forms name their own dimensions, like the UK passport service's 600 by 750 pixels minimum. If the form does not say, the table above is your guide: around 1,000 to 1,300 pixels on the long side keeps excellent quality inside 100 KB. Resize to that, with a little headroom, and no more. The image resizer does it by percent or to exact pixels, and can crop to fill a fixed shape.
Halving the width and height removes three quarters of the pixels, so the file shrinks by roughly three quarters at the same quality. That is the biggest lever you have. A 4,032 × 3,024 photo resized to 1,280 × 960 has 1.2 million pixels instead of 12.2 million, and 100 KB now gives it 0.65 bits per pixel: good to very good.
Step 2: lower the quality, and stop around 50
JPG quality is a number from 1 to 100 that controls how much detail is thrown away. The example in Wikipedia's JPEG article shows how uneven the savings are. The same picture is 81,447 bytes at quality 100 with "extremely minor artifacts", 14,679 bytes at quality 50 with "initial signs" of block artifacts, 9,407 bytes at quality 25 with stronger artifacts, and 4,787 bytes at quality 10 with obvious blocking. The step from 100 to 50 removed 82% of the bytes and cost almost nothing visible. The step from 50 to 25 saved another third and started to show.
So work down from the top and stop around 50. If the file is still over 100 KB there, go back to step 1 and take off more pixels; a lower quality would only make it ugly.
The image compressor shows the size at each quality live. The target size tool finds the highest quality under your limit on its own, which saves the back and forth.
Step 3: pick the format the form accepts
- JPG is the safe choice. Every form that takes photos takes JPG, and it is the smallest of the formats that open everywhere.
- WebP is 25 to 34% smaller than JPG at the same visual quality in Google's measurements. If the form lists WebP, it buys you a larger picture inside the same 100 KB. The WebP converter makes one.
- PNG is lossless, so a photo as PNG is usually far bigger than 100 KB. Use PNG only when the form demands it or the image is a logo or a screenshot with flat colors.
- HEIC, the format iPhones have used since iOS 11, is not on the list of a form that takes only JPG and PNG. Convert it with the HEIC to JPG tool first, or set the phone's camera to "Most Compatible" so it saves JPG from now on (Apple).
One more small saving: photos carry metadata like the camera model and GPS location. The EXIF viewer and remover shows it and saves a clean copy, which is also a good idea for privacy before you upload a photo anywhere.
What the upload form actually checks
A web form checks the size in bytes, not in the rounded KB you see in your file browser. In the browser, a script reads the file's size property, which returns the exact number of bytes (MDN), and compares it with the limit. The server checks again when the file arrives. The file picker's list of allowed types is only a hint to the picker; MDN notes it does not validate the file, which is why a form that says "JPG only" may still reject a renamed file once the server looks inside.
Limits are stricter than they look because two conventions coexist. The metric prefix makes 100 KB equal 100,000 bytes, but Windows divides by 1,024 (Wikipedia), so a 100,000-byte file shows as 97.6 KB there and a file that Windows calls 100 KB is 102,400 bytes. If a form was written with the metric number, that file is over the limit. Aim below 100,000 bytes and you pass under both readings. The tools on this site count that way.
Server limits are separate and often bigger. A default PHP installation stops uploads at 2 MB per file and 8 MB per request (php.net), so a photo well under those can still fail the form's own, lower rule. The form's number wins.
Checklist
- Find out the pixel size and formats the form wants. If it only names a file size, 1,000 to 1,300 pixels on the long side is a safe target.
- Convert HEIC or PNG to JPG if needed.
- Resize to those pixels with the image resizer.
- Compress to under 100,000 bytes with the 100 KB compressor, or set your own quality in the image compressor.
- Check the exact byte count before you upload, then keep the original photo somewhere safe.
Frequently asked questions
Does compressing to 100 KB make the photo blurry?
Not if the pixel size fits the budget. At 1,024 × 768 pixels, 100 KB gives about 1 bit per pixel, which the JPEG standard's author rates as excellent. Blur and blocks appear when you keep a 12 megapixel photo at full size and force the quality down to reach 100 KB. Resize first and the quality stays high.
Is 100 KB 100,000 bytes or 102,400 bytes?
Both conventions exist. The metric prefix means 100 KB = 100,000 bytes; Windows divides by 1,024 and shows 100,000 bytes as 97.6 KB, while macOS counts in thousands. Aim for under 100,000 bytes and the file passes either way.
What if the form wants a minimum size as well?
Some do. The UK passport service asks for a digital photo of at least 50 KB and at most 10 MB, at least 600 pixels wide and 750 tall. Resize to the required pixels first, then adjust the quality until the size sits inside the window.
Can I compress a HEIC photo from an iPhone to 100 KB?
Convert it to JPG first. iPhones have saved photos as HEIF since iOS 11, and most forms only accept JPG or PNG. The HEIC to JPG tool converts in your browser; then the target size compressor takes the JPG under 100 KB.
Why does my photo stay at 300 KB no matter what quality I pick?
Because it has too many pixels. In Wikipedia's JPEG example, quality 50 already compresses 15:1 and going down to 25 only saves another third while the artifacts get stronger. Cut the width and height in half instead: that removes three quarters of the pixels, and the file drops by about as much at the same quality.
Sources
- The JPEG Still Picture Compression Standard, Gregory K. Wallace, 1991 (bits per pixel quality levels, section 4.5)
- Kilobyte: 1,000 vs 1,024 bytes and how Windows and macOS show sizes, Wikipedia
- Blob: size property, MDN Web Docs
- HTML attribute: accept, MDN Web Docs
- PHP core configuration: upload_max_filesize and post_max_size defaults
- Rules for digital photos, UK passport service
- Using HEIF or HEVC media on Apple devices, Apple Support
- An image format for the Web (WebP): size compared with JPEG, Google