Resize an image

Change an image's dimensions free, with no signup and no watermark. Set a width, a height or both, keep the aspect ratio, and pick the output format.

Drop files here (up to 50)

or paste from the clipboard

Preview

Choose an image and the result appears here as you change the options.

Shows the framing and geometry exactly. Compression quality is not simulated.

Options
px

Leave empty to work the width out from the height and keep the proportions.

px

Leave empty to work the height out from the width and keep the proportions.

When both dimensions are set, the image fits inside them instead of being stretched.

%

Applies to JPG and WebP only. PNG is lossless and ignores it.

Results appear here. Nothing is uploaded.

    How it works

    The image is decoded with createImageBitmap and drawn into an OffscreenCanvas of the target size inside a Web Worker, with the browser's image smoothing set to high quality so downscaling does not alias. If only one dimension is given, the other is derived from the source ratio so the picture is never distorted by accident. When both are given and the ratio is kept, the image is fitted inside that box rather than filled, so nothing is cropped. No wasm module is downloaded.

    Measured results

    These figures come from running this exact tool over a fixed set of sample files on every build, not from an estimate.

    Sample fileSettingsBeforeAfterChange
    logo-transparent.avifto 1280px wide, WebP3 KB53 KB+1484%
    logo-transparent.pngto 1280px wide, WebP19 KB30 KB+63%
    logo-transparent.webpto 1280px wide, WebP8 KB31 KB+274%
    photo-gradient.avifto 1280px wide, WebP15 KB47 KB+206%
    photo-gradient.jpgto 1280px wide, WebP504 KB219 KB−57%
    photo-gradient.pngto 1280px wide, WebP3.36 MB210 KB−94%
    photo-gradient.webpto 1280px wide, WebP519 KB201 KB−61%
    screenshot-text.pngto 1280px wide, WebP219 KB82 KB−63%
    logo-transparent.avifto 640px wide, JPG3 KB16 KB+377%
    logo-transparent.pngto 640px wide, JPG19 KB15 KB−20%
    logo-transparent.webpto 640px wide, JPG8 KB15 KB+77%
    photo-gradient.avifto 640px wide, JPG15 KB21 KB+37%
    photo-gradient.jpgto 640px wide, JPG504 KB29 KB−94%
    photo-gradient.pngto 640px wide, JPG3.36 MB29 KB−99%
    photo-gradient.webpto 640px wide, JPG519 KB29 KB−94%
    screenshot-text.pngto 640px wide, JPG219 KB44 KB−80%

    Benchmark run 2026-08-02.

    What to watch out for

    Enlarging cannot invent detail

    Scaling a 400 pixel wide image up to 1600 gives you a larger, softer version of the same information. There is no detail in the file to recover, so upscaling is best avoided when the original can be found instead.

    Animated GIFs come out as a single frame

    The canvas pipeline decodes one frame, so an animation is reduced to its first image. Resizing animation while preserving it needs a frame-by-frame encoder, which this tool does not use.

    EXIF metadata including orientation is dropped

    Only pixels pass through the canvas, so camera data and GPS coordinates do not survive. Rotation stored purely as an EXIF tag is applied during decode and then discarded, which is usually the desired outcome.

    Limits

    Files up to about 50 MB work reliably. Beyond that, the ceiling is your device's memory rather than any rule we impose — the work happens on your own machine. Tested in Chrome 140, Firefox 143, Safari 18.

    Setting one dimension is usually the right move

    The most common mistake with resizing is specifying both dimensions and accidentally distorting the picture. Leaving one at zero avoids this entirely: give a width of 1280 and the height follows from the original proportions, whatever they were. That is what you want for a batch of mixed portrait and landscape photos, where no single pair of numbers suits all of them.

    When both dimensions are set with the ratio kept, the image is fitted inside that box. A 4000×3000 photo constrained to 1280×1280 comes out 1280×960 — inside the limit on both axes, with nothing cropped and nothing stretched. Turning the ratio option off forces the exact dimensions and will squash the image, which is occasionally what you need for a fixed-size slot.

    Why downscaling quality varies between tools

    Reducing an image means throwing away pixels, and how you throw them away decides whether the result looks crisp or fuzzy.

    The naive approach samples one source pixel per destination pixel. Fine detail then either survives intact or vanishes depending on where it happens to land, which produces the shimmering, jagged look familiar from cheap resizers, especially on text and thin lines.

    Good downscaling averages across all the source pixels that contribute to each destination pixel. This tool asks the browser for high-quality smoothing, which is the same well-optimised native path used to render images throughout the browser. For ordinary photographs and screenshots it is visually equivalent to a dedicated resampling library at a fraction of the download.

    Choosing the output format

    The three options are genuinely different tools rather than preferences.

    PNG is lossless and keeps transparency. Right for logos, screenshots, diagrams and anything with text or sharp edges. Files are larger.

    JPG is lossy with no transparency. Right for photographs, where it is dramatically smaller at quality 85 or above with no visible difference.

    WebP is lossy but does support transparency, and is typically 25 to 35% smaller than JPG at comparable quality. Right for the web, and supported by every current browser. Its one drawback is that some older desktop software still will not open it.

    Your files never leave your browser. Last updated 2026-07-31.