Resize and compress your images to any target size in KB or MB. Tweak quality factors automatically to fit under a maximum size, or pad the file structure to hit an exact size requirement. 100% client-side.
Images stay in your browser. Nothing is uploaded to any server.
How It Works
Many online portals (such as government job portals, university application forms, or visa web servers) enforce strict limitations on uploaded photo file sizes. They may require files to be strictly under 50KB, or exactly between 20KB and 50KB. Our client-side resizer solves this problem easily and securely.
If you select "Under Size", the tool performs a binary search algorithm in your browser. It renders the image to a canvas, adjusts the JPEG compression quality, and tests the size. If reducing quality is not enough, it scales down the dimensions slightly and repeats the quality search until the file fits your target limit.
If you select "Exact Size", the tool compresses the image to just under the target size. Then, it reads the resulting binary stream and appends safe, non-rendering padding bytes (null values) to the end of the file structure. Decoders read the image perfectly, but the OS counts the full padded byte size.
All resizing operations are computed directly in your device's browser window using the HTML5 Canvas API and JavaScript. Your photos are never sent to any server, keeping your ID scans and headshots completely secure.
Yes. Appending bytes after the End-Of-File marker is fully compatible with JPEGs, PNGs, and WEBP formats. Standard web browsers, Photoshop, and OS preview tools simply ignore the padding, reading the image correctly.
JPEG (JPG) is highly recommended for size compression. PNG is a lossless format and does not compress files easily without significant quality adjustments. We convert input images to JPG during resizing for the best results.
If the target size is set too low (e.g. 5KB for a heavy 10MB photo), the quality reduction and scaling down reach their limit to prevent rendering the photo completely unreadable. Try setting a slightly higher target size.