About this tool
Resizing means changing the pixel dimensions of an image — a photo that is too large to upload, too big for the slot on a form, or the wrong proportion for a product listing. This tool does exactly that in your browser: upload or paste an image, type a width and height in pixels, and download the resized file. It is built for the jobs that come up constantly in Cambodia — a portrait that must fit the pixel limit stated on a scholarship or ministry application, product shots for a Facebook page or Telegram shop, a photo for the corner of a CV, a receipt that needs to be small enough to attach to an expense form. Two honest limits deserve stating up front. The tool resizes the whole frame to the numbers you enter — it does not crop, and there is no percentage box or quality slider. And it always saves PNG: a photo that arrives as JPEG comes back out as PNG, which for photos is often a larger file than the original. The image itself is never uploaded — it is decoded and drawn on a canvas on your own device, so a document scan or a personal photo does not leave the machine.
How it works
Everything happens in image-resizer-client.tsx with standard browser APIs — there is no server round-trip. Picking a file (the picker accepts image/*, and pasting works too) creates a local object URL with URL.createObjectURL, and an HTMLImageElement decodes it on your device; the form is then prefilled with the image's natural width and height in pixels. The Maintain aspect ratio checkbox recomputes the opposite dimension from the original ratio whenever you edit one — untick it and the two fields are independent, which allows deliberate stretching. The preview canvas redraws with drawImage at the chosen size on every change. Download calls canvas.toBlob('image/png') and saves a file named resized-widthxheight.png. Width and height must be positive whole numbers; anything else fails validation before the download runs. The page records one anonymous usage event containing only the output dimensions — never the image itself. Any format your browser can decode can be resized — JPEG, PNG, WebP, GIF and AVIF work on current browsers; camera RAW formats cannot be decoded, and phone HEIC works only where the browser supports it.
Use cases
- A job or scholarship applicant shrinking a portrait photo to the exact pixel dimensions a ministry or school application form demands before upload.
- A Facebook or Telegram shop owner resizing every product photo to the same width so listings line up neatly on a phone screen.
- A student or worker producing a small photo for the corner box of a CV so the finished document stays light enough to email.
- A driver or market seller shrinking a receipt photo until it fits under the upload limit of an expense or accounting form.
- An NGO field worker reducing phone photos to smaller pixel dimensions before sending them over a weak connection.
- An office assistant downscaling a scanned document page so a government or bank portal accepts the file.
- Someone reducing a large phone photo before posting it to a family group chat or community page.
Frequently asked questions
Which image formats can I resize here?
Anything your browser can decode and display — on current browsers that means JPEG, PNG, WebP, GIF, AVIF and SVG. Camera RAW formats (DNG, CR2, NEF and similar) cannot be opened because browsers do not decode them, and iPhone HEIC works only where the browser supports it, so export those to JPEG first. Whatever goes in, the download is always a PNG file — the tool does not offer a JPEG or WebP output option.
Is my photo uploaded to a server?
No. The file is opened through a local object URL and drawn onto a canvas inside your browser tab — no request carries the image anywhere. You can check this yourself: open the browser developer tools, watch the network tab while you load and resize a photo, and you will see no upload. The page does record an anonymous event when you download, containing only the chosen pixel dimensions, never the picture or its contents.
Why is my resized PNG bigger than the JPEG I started with?
Because the tool always exports PNG, a lossless format that stores every pixel exactly — while JPEG compresses photos aggressively. A photograph that was 200 KB as JPEG can easily become several megabytes as PNG, even at smaller dimensions. If the goal is a small file rather than a lossless one, resize here and then save the result as JPEG in an editor, or pick a tool that offers JPEG quality control.
Can I crop the image or resize by a percentage?
No — the tool resizes the whole frame to the pixel width and height you type; there is no crop box and no percentage field. To get a percentage, do the arithmetic yourself: half size of a 4000-pixel-wide photo is 2000 pixels. Keep Maintain aspect ratio ticked to avoid distortion, or untick it if you deliberately need the image stretched to exact dimensions, for example a slot that demands a non-matching proportion.
Does shrinking a photo lose quality?
Making an image smaller permanently discards detail — pixels that are merged cannot be separated again, so keep the original file if you might need full size later. Enlarging works the other way: the browser invents pixels by interpolation, so a bigger result is blurry rather than sharper. Because the output here is lossless PNG, re-saving through this tool does not add JPEG compression artifacts, though the lost detail never returns.
What happens to the photo’s metadata (EXIF)?
It is dropped. The saved PNG is produced from canvas pixels, so camera model, shooting settings and any embedded GPS location do not carry over — a quiet privacy benefit when sharing document photos. Orientation follows what your browser decoded: modern browsers apply the stored rotation when displaying the image, so the exported file normally appears the way it did on screen.
Why did my animated GIF come out as a still image?
The canvas draws the frame the browser currently displays — a single moment — and PNG cannot hold animation. The download is therefore always one static frame, not an animated file. If you need an animated GIF resized frame-by-frame, use a dedicated GIF tool; this page is for still images.
Is there a file size or resolution limit?
There is no fixed limit in the tool itself — the practical ceiling is your device’s memory, because the whole image is decoded and held in the browser tab. Very large phone photos or high-resolution scans can be slow, and on an older phone a huge image may fail to open. If the page stalls, try a smaller copy of the image or a desktop browser.
Data and accuracy
Image decoding, scaling and re-encoding all use the browser's built-in APIs — HTMLImageElement for decoding, CanvasRenderingContext2D.drawImage for resampling, and HTMLCanvasElement.toBlob for the PNG output — so there is no upstream data to refresh or go stale. Format support equals whatever the browser's image decoder accepts: JPEG, PNG, WebP, GIF and AVIF broadly; RAW unsupported; HEIC dependent on the browser. The page emits one anonymous event per download carrying only the target width and height.
Sources
- MDN — CanvasRenderingContext2D.drawImage() — MDN Web Docs
- MDN — HTMLCanvasElement.toBlob() — MDN Web Docs
- MDN — URL.createObjectURL() — MDN Web Docs
- MDN — Image file type and format guide — MDN Web Docs
Content last reviewed 19 October 2026