Shrink a photo or image to 200KB or less for upload limits on forms, shops and communities.
"200 KB" allows up to 200 × 1,024 = 204,800 bytes. When a file already fits and is a JPG, PNG or WebP, it wins with a perfect score and comes back untouched — a 127,956-byte PNG texture stayed a lossless PNG. Larger files are re-encoded at the level's quality and searched down only if needed: the 791,555-byte NASA PNG became a 45,813-byte JPG. At full phone-camera resolution 200 KB is tight; about 1.2–2.7 megapixels fit at the quality levels measured here. Forms that count 200,000 bytes need 195.
Drop image files hereProcess many files at onceNo upload · processed on this device
Making a game?
Nerulio is a 2D game asset studio first: draw pixel art, cut sprite sheets into animations, pack texture atlases, check autotile tilesets and export them for Godot, Unity, Phaser and other engines. It runs in your browser; files stay on your device.
200 KB: lossless when possible, lossy when necessary
The candidate list always includes the dropped file itself when it fits the target and is a format Auto can write. It scores 1.0, so it beats every lossy re-encode, and a PNG under 200 KB stays pixel-exact. Only files above 204,800 bytes are actually compressed.
The budget is 1,638,400 bits. On the test photo, 0.62 bits per pixel scored 0.96 (WebP) and 1.40 bits per pixel scored 0.98 (JPG). Divided into the budget that is 2.66 or 1.17 megapixels — about 1882 × 1411 or 1249 × 937 at 4:3. A 12.2-megapixel phone photo would get 0.13 bits per pixel, far below both, so expect a very low quality or "Target size not reached" unless the dimensions go down.
204,800 bytes
200 × 1,024, the preset's exact ceiling.
Original as a candidate
A dropped JPG, PNG or WebP that already fits competes with a score of 1.0.
Bits per pixel
Size in bits ÷ pixel count; used here only as a rough guide.
200 KB on three real files (measured)
Balanced level, Auto format, Chromium 153, 2026-09-28.
Target 200 KB = 204,800 bytes
bricks_Color.png 256 x 256 127,956 bytes -> original PNG kept (lossless)
astronaut.jpg 512 x 512 75,758 bytes -> original JPG kept
astronaut.png 512 x 512 791,555 bytes -> JPG q0.80 45,813 bytes SSIM 0.9785
(lossless PNG re-encode: 575,694 bytes, too big)
4032 x 3024 photo: 1,638,400 bits / 12,192,768 px = 0.13 bits per pixel
For the brick texture a lossy WebP of 14,214 bytes also existed, but under a 200 KB limit the exact original scores higher and is kept.
Entering the right limit
The form says
Target size to enter
Largest file you get
200 KB, counted as 1,024 bytes
200 (preset)
204,800 bytes
200 KB, counted as 1,000 bytes
195
199,680 bytes
200 KB, keep the phone photo usable
200 + Max width about 1,800
Fewer pixels, higher quality
200 KB, JPG only
200 + Output format JPG
Transparency filled with the JPG background
Check the result
If the result line says the original was kept, the file already met the limit — check that its format is one the portal accepts.
Compare the exact byte count with the portal's limit.
Open the result at 100 % before uploading.
Troubleshooting
Symptom
Likely cause
How to check
Fix
The PNG came back unchanged, but the portal wants JPG
The PNG fitted, so it won with a perfect score
Result line says original kept
Advanced → Output format → JPG
A phone photo misses the target
0.13 bits per pixel is not reachable at full size
Warning under the file
Allow smaller dimensions or set Max width to about 1,800 px
Rejected although it shows 200 KB
The portal counts 200,000 bytes
Exact bytes in file properties
Enter 195
The photo looks worse than expected at 200 KB
A large photo forced the quality search low
Compare with a version resized to 1,800 px
Fewer pixels at higher quality often look better; resize first
A file that already fits is not re-encoded, so its format may not be the one the portal wants — set the output format.
Megapixel figures are estimates from one photo, not guarantees.
Versions and sources
Measured on 2026-09-28 in Playwright Chromium 153 by calling src/compression.js with the options src/task/compress.js passes for ?kb=200, on tests/fixtures/astronaut.png, its Pillow JPG (quality 92) and tests/fixtures/texture/bricks_Color.png (ambientCG CC0).
Several quality and format candidates are encoded until one fits 200KB; each result is decoded again and compared (SSIM) so the best-looking one wins. You see the real file size before downloading.
Resolution is kept by default. Only if the target cannot be reached, opt in to shrinking the dimensions.
Your file is never uploaded — it is processed inside this browser.
Example generated with this tool. ZIP tools show their preview; inspect the downloaded archive for every file.
Compress image
Set a size limit, then check the actual result.
How it works
Open the source file
Choose the processing mode and settings
Run, inspect the result and download
Supported formats
PNG / JPG / WebP / AVIF / HEIC → PNG / JPG / WebP — Input decoding and output encoding depend on browser support. Animated inputs are rejected; select a still frame first.
What this tool does
Auto compares actual browser codec outputs using a sampled visual metric and target-size search. Alpha-aware format selection; optional dimension reduction.
Implementation and verified quality
advanced · browser codecs / proxy SSIM candidate search. Quality qualification is in progress. Pro/Flagship quality has not been established.
Before you export
Actual device memory, storage and codec support. Tested examples are evidence, not a guarantee for every file.
Frequently asked questions
What determines the supported size?
Actual device memory, storage and codec support. Tested examples are evidence, not a guarantee for every file.
Are my files uploaded?
This tool processes the files you open on your device without uploading them. Images you explicitly attach to community posts are uploaded separately. Optional engines and models are downloaded from third parties; those requests expose connection information such as your IP address.
Will my work be saved automatically?
No. Images and editing state stay in this tab; media output can use local temporary storage. Changing language preserves your work; reloading, closing the tab, or following a link to another page can clear it.