Resize images pixel-perfect in your browser
Resize any image to exact pixels, a percentage of the original, or fit-within bounds. Aspect lock by default. Runs entirely in your browser via Canvas.
image/* · runs locally · nothing uploaded
How it works
Pick an image, tune the options, then download the result. Everything runs in your browser.
- 01
Pick an image
Drop in a PNG, JPG, or WebP. The image is decoded into an
HTMLImageElement, drawn onto a<canvas>, then re-encoded — the original file on disk stays untouched.Multi-megapixel masters are fine; everything runs locally so the only ceiling is your tab’s memory.
PNGJPGWebPcanvasinput · imagedecodedfile.png · 1920 × 1080
loadedready - 02
Pick a mode
Three resize modes cover the common needs: Pixels for exact width × height, Percent to scale proportionally (1–400%), and Fit to bound the longest side inside a max value.
Browser
drawImageuses bilinear resampling — smooth on photos. For pixel-art useimage-rendering: pixelatedin CSS or pair with a nearest-neighbour-aware tool.pixelspercentfitbilinearconfig · modepxmode: px algo: bilinear
setaspect-aware - 03
Tune dimensions
Enter exact
width/height(the lock aspect ratio toggle keeps the ratio when you edit one axis), or drag the scale slider for proportional sizing.Downscaling is visually lossless; upscaling will look soft because there are no real pixels to invent — nearest-neighbour vs bilinear only changes how it looks soft.
aspect ratiodrawImagebilineardownscaleconfig · size0×0ctx.drawImage(img, 0, 0, w, h)
resampledratio locked - 04
Download
Pick the output format — PNG (lossless, keeps alpha), JPEG (smaller, no alpha), or WebP (best size/quality) — then save. Filename adds
-resized.<ext>so you don’t clobber the source.Encoding runs locally; nothing is uploaded.
PNGJPEGWebPprivacy-firstexport · resizedready✓ Downloaded: file-resized.png ✓ 100% client-side
ready to shipsuccess
Browser-only image work that scales
Convert with quality control
JPEG/WebP let you pick a 0–1 quality. Default 0.92 is a good compromise of size and visible quality.
PNG isn’t free
Use PNG only for transparency or sharp edges. For photos, WebP is smaller at the same perceived quality.
Strip EXIF for privacy
Photo EXIF often contains GPS, camera model, and timestamps. Strip before sharing public uploads.
Watch the colour profile
Convert to sRGB before web export. Wide-gamut images render oversaturated in non-managed browsers.
AVIF when it’s available
AVIF beats WebP on size at the same quality. Detect support via <picture> with fallbacks.
Lazy-load below the fold
Add loading="lazy" on <img>. The browser handles scheduling — no IntersectionObserver needed.
When to use this tool
Common workflows it speeds up.
Web-ready sizes
Trim hero images to your max bound. Decoded into a Canvas 2D context — original bytes never leave the tab, so you can process customer-uploaded photos, internal screenshots, or sensitive diagrams without privacy concerns.
px-perfectEmail-safe shrinks
Drop oversized photos below mail limits. Encoders expose quality 0–1 where the format supports it (JPEG, WebP); PNG and AVIF stay perceptually lossless. Pick 0.85 for web, 0.95 for archival, 0.7 for thumbnails.
quality-tunableDesign comps
Quick reframe for mockup placeholders. Pair with the EXIF Stripper before sharing user-uploaded photos publicly. Camera serial numbers, GPS coordinates, and timestamps often hide in image metadata and leak more than the picture itself.
format-awareApp asset prep
Match required dimensions before bundling. Output preserves colour profile (sRGB) so it renders consistently across browsers, monitors, and print pipelines. Wide-gamut workflows can opt into Display P3 for modern Apple devices.
EXIF-safeFast batch fix
One-image touch-up before sharing. Re-runs only on option changes, never on window resize, so the canvas stays responsive on large images. drawImage uses the browser's bilinear filter for fast resampling.
client-sideBandwidth saver
Right-size photos before posting online. Downloads as .png, .jpg, .webp, or .avif with the correct MIME so editors apply native handling on save. The filename inherits a sensible suffix derived from the input.
compression-readyFrequently asked questions
Something missing?
Tell us what you need. We ship the top requests every two weeks.