Polyatic Image Resizer

Image Resizer

Resize JPG, PNG or WebP to exact pixels, a percentage or a longest-side target — one image or a whole batch, right in your browser. It never crops and nothing is uploaded.

Drop images here, or click to choose JPG · PNG · WebP · multiple files at once · nothing is uploaded
Widthpx
Heightpx
Output format
Quality0.85

Result

Drop one or more images on the left — each gets its own row here with the new dimensions, the new file size and a Download button.

Your images never leave your device. Decoding, resizing and re-encoding all happen in this tab with the Canvas API — no uploads and no server. Disconnect from the internet and it still works.

Three ways to say "smaller" (or bigger)

Every resize is really one question: what scale factor do I apply to both sides? The three modes are just three ways to derive it, and each preserves the aspect ratio unless you deliberately unlock it.

  • Exact pixels — you type a width (or height) and, with the lock on, the other side follows the source's proportions. A 4000×3000 photo set to width 1280 becomes 1280×960, because 1280 ÷ 4000 = 0.32 and 3000 × 0.32 = 960.
  • Percent — one slider scales both sides. 33% of a 1013×777 screenshot is 334.29 × 256.41, which rounds to 334×256. Rounding to whole pixels is unavoidable — screens have no fractional pixels — so the effective ratio can drift by a hair on small images.
  • Longest side — handy for mixed batches: every image is scaled so its longer edge hits the target, whether it is landscape or portrait. With a 1600 target, a 4000×3000 landscape becomes 1600×1200 and a 3000×4000 portrait becomes 1200×1600 — consistent visual weight without thinking about orientation.

Fit-within vs exact — and why this tool never crops

When you give both a width and a height, the box you asked for usually has a different shape than the image. There are three ways out, and this tool offers two of them:

StrategyWhat happensOffered?
Fit within (contain)Scale to the largest size that fits inside the box; aspect kept, one side may be smaller than the boxYes — the default
Exact stretchForce the image to the box's exact shape; distorts if the aspect differsYes — with the lock off
Fill and crop (cover)Scale until the box is covered, then cut off the overflowNo — never

Fitting a 4000×3000 landscape into an 800×1200 portrait box computes both candidate scales — 800/4000 = 0.2 and 1200/3000 = 0.4 — and takes the smaller one, giving 800×600. Nothing is cut away; the output is simply shorter than the box. If a tool instead silently took the larger scale and cropped, you would lose the top and bottom of the picture — which is exactly why cropping is not offered here.

Upscaling is allowed — with the honest caveat

Set 250% or a width above the source and the tool will do it, but a note appears on that row: the new pixels are interpolated from the old ones, so the enlarged image is softer, never sharper. Upscaling is still legitimately useful — matching a required canvas size, preparing a small logo for a print layout that will be viewed from a distance — as long as you know detail is not being created. If you need real detail, you need a higher-resolution original.

Pixels, then bytes

Resizing changes the file size through the pixel area: halving both sides keeps only a quarter of the pixels. A 4000×3000 JPEG around 4 MB resized to 1280×960 lands near 300 KB at quality 0.85 before you touch any other control. The quality slider (JPEG/WebP only — PNG is lossless) then trades visible detail for bytes. If your goal is mainly a smaller file at the same dimensions, the image compressor is built for exactly that.

Honest limits

HEIC/HEIF is not supported — browsers cannot decode Apple's HEIC format, so an iPhone photo saved as HEIC must be converted to JPEG first (on the phone: Settings → Camera → Formats → Most Compatible). The EXIF orientation tag is honoured during decode, so sideways photos come out upright — but the re-encoded output carries no metadata at all: EXIF, GPS and camera settings are stripped by the canvas, and wide-gamut photos are treated as sRGB. The browser's built-in encoder does the compression, so it will not match a dedicated optimiser like MozJPEG byte-for-byte. Animated GIFs are flattened to their first frame, and decoding a very large batch of multi-megapixel images needs a lot of memory — if the tab struggles, process a few at a time.