Resize an image to exact pixel dimensions
Change an image's pixel size by typing the exact width and height you need. Ask for 800×600 and get 800×600 — not a “close enough” substitute.
Choose images or drag & drop
JPG, PNG, or WebP · processed on this device · nothing is uploaded
Choosing a fit mode
When you set both a width and height that don't match your photo's original proportions, something has to give. Crop to fill keeps every pixel sharp by trimming the edges, which suits profile photos and thumbnails. Fit inside keeps the entire photo visible with padding added, for when nothing can be cropped out. Stretch forces an exact fit at the cost of distorting proportions. It's rarely what you want, but it's there when a form strictly requires an exact size regardless.
Pixel size or file size in KB?
Forms often state two different limits, and they're easy to mix up. A pixel size, such as “600×600 pixels” or “at least 1080px wide”, is the image's width and height, which is what this resizer changes. A file size, such as “under 100KB” or “between 20KB and 50KB”, is how much storage the file takes up, and shrinking the pixel dimensions alone won't reliably hit a KB number. For that, turn on Limit file size in the tool above (it works together with resizing), or use the image compressor. Not sure what size your photo is now? Add it above: the tool shows its current width × height right away.
Need a different format as well? Head to convert formats.
Nothing you process is ever uploaded.
A lot of online image tools upload your file, work on it on a server, and promise to delete it afterwards. The tools here open the file with your browser's own image APIs and do the work in this tab, whether that's compressing, cropping, or reading pixel colors. The image is never sent over the network, so there's no server copy to keep or delete. That matters most for passport photos, ID scans, and visa forms.
Read how it works// what happens to the file you add
const bitmap = await createImageBitmap(file);
// decoded in this tab: no fetch(), no upload
ctx.drawImage(bitmap, 0, 0, width, height);
// then resize, crop, or read pixels, depending on the tool
const blob = await canvas.toBlob(format, quality);
// your download is a blob: URL made in this tab
Frequently asked questions
How do I change an image's pixel size to exact dimensions?
Turn on “Resize” in the tool above and type the exact width and height you need in pixels. If you only enter one value with aspect ratio locked, the other is calculated automatically; if you enter both, choose whether to crop, fit, or stretch the image to that exact size.
If I lock the aspect ratio, do I still get exact dimensions?
You get the exact value you typed for whichever dimension you set, and the other is calculated to preserve the original ratio. Entering only a width of 800px with aspect lock on gives you exactly 800px wide, at the correct height for your photo.
What's the difference between the three fit options?
“Crop to fill” fills your exact width and height by cropping any excess from the edges. “Fit inside” shows the whole image at the largest size that fits your box, padding the rest. “Stretch” forces the image to your exact dimensions even if that distorts the proportions.
Why does another tool call this “maintain aspect ratio” but change my numbers?
Some resizers treat your typed width and height as maximum bounds, then quietly pick different final numbers to preserve the ratio, so what you asked for isn't what you get. Here, if you set both width and height, you get that exact pixel size; we tell you plainly if a size-limit you also set forced a further adjustment.
Can I resize and compress an image at the same time?
Yes. Turn on both “Resize” and “Limit file size” above, and IMAGE SIZE PRO applies your exact pixel dimensions and file-size target in a single pass, then checks the result against both requirements at once, so you don't need to process the image twice or use two different tools.