Image Resizer

Resize an image to exact pixel dimensions, with or without locking the aspect ratio — free and watermark-free.

The result downloads automatically when ready.

100% free No signup No watermark Processed in memory, never stored

How it works

  1. Upload. Choose the image to resize (up to 25 MB).
  2. Enter size. Type a width and/or height in pixels. Keep "aspect ratio" ticked to scale proportionally.
  3. Download. The resized image downloads automatically using a high-quality Lanczos filter.

About this tool

Resize an image to the exact width and height you need. Enter just a width (or just a height) and keep the box ticked to scale the other side proportionally, or set both and untick it to force precise dimensions. Resizing uses a high-quality Lanczos filter, so downscaled images stay crisp rather than jagged. The output keeps the original format where possible. As always: no watermark, no signup, processed in memory and discarded.

What people use it for

  • Fit an image to a forum or marketplace pixel limit
  • Make a profile or avatar image a required square size
  • Downscale a huge photo for the web without jagged edges
  • Standardize a set of images to the same width

Developer API

Automate this tool from your own code. Send a POST request to the endpoint below and get the same result the web tool produces. It is rate-limited per IP and needs no signup — API keys for higher limits are coming.

POST https://best.free/api/tools/image-resizer/
Parameter Example Required Notes
file (file) photo.jpg Yes Any common image, ≤25 MB.
width 800 No Target width in px.
height 600 No Target height in px.
keep_aspect True No Lock aspect ratio.
curl -X POST https://best.free/api/tools/image-resizer/ \
  -F 'file=@photo.jpg' \
  -F 'width=800' \
  -F 'height=600' \
  -F 'keep_aspect=True' \
  -o resized.png
import requests

files = {"file": open("photo.jpg", "rb")}
data = {"width": 800, "height": 600, "keep_aspect": True}

r = requests.post("https://best.free/api/tools/image-resizer/", files=files, data=data)
with open("resized.png", "wb") as out:
    out.write(r.content)
const fd = new FormData();
fd.append("file", fileInput.files[0]);
fd.append("width", 800);
fd.append("height", 600);
fd.append("keep_aspect", true);

const r = await fetch("https://best.free/api/tools/image-resizer/", { method: "POST", body: fd });
const blob = await r.blob();  // the resized.png

Response: The resized image (same format where possible).

Frequently asked questions

Yes. Enter a width and a height in pixels and untick "keep aspect ratio" to force those exact dimensions.

Leave "keep aspect ratio" ticked and enter just one dimension; the other side is scaled proportionally so nothing distorts.

Resizing uses a high-quality Lanczos filter, which keeps downscaled images smooth and sharp rather than pixelated.

It keeps the original format where possible (PNG stays PNG, JPG stays JPG). To change format, use the image converter afterwards.

No to both. No account is needed and nothing is added to the image.

Up to 25 MB per image, with output capped at 10000 pixels per side.

No. It is resized in memory and discarded as soon as the result is returned.

Yes. POST your file as multipart/form-data to /api/tools/image-resizer/ and the processed file streams straight back — the same engine the web tool uses, so results are identical. It is rate-limited per IP like the web version and needs no signup; API keys for higher limits are coming. See the API section above for ready-to-run curl, Python and JavaScript examples.