Image Resizer & Converter

Resize, convert (JPEG / PNG / WebP), and compress images. Files never leave your browser.

Loading…

All processing runs in your browser — no files or inputs are uploaded to a server.

How to use

Drop or pick an image, then dial three controls in the sidebar: output format (WebP / JPEG / PNG), quality (1–100, ignored for PNG), and max width or height in pixels. The aspect ratio is kept automatically — set only one of width or height and the other scales to match. The preview re-encodes live; below it you see the output dimensions, file size, and the percent saved versus the original.

A detail worth knowing: when you ask for the same format and same size as the source, the tool passes the original bytes through unchanged instead of re-encoding. Re-encoding a JPEG to JPEG at "same quality" still loses information, and canvas-based PNG output usually inflates files because the browser cannot match the original PNG's compression settings. The passthrough avoids that round-trip waste.

Examples

Shrink a phone photo for the web

Input
source: IMG_4521.HEIC (or .JPG) at 4032 × 3024, 4.8 MB
format: WebP
quality: 80
max width: 1920
Output
IMG_4521-1920x1440.webp at 1920 × 1440, ~280 KB  (−94%)

WebP at quality 80 is the sweet spot for photo content on websites. Browsers have supported it for years, and the file is typically 25–35% smaller than equivalent JPEG.

Convert PNG screenshot to JPEG

Input
source: screenshot.png at 2560 × 1440, 1.2 MB
format: JPEG
quality: 85
(no resize)
Output
screenshot-2560x1440.jpg at 2560 × 1440, ~340 KB  (−72%)

For photo-heavy screenshots, JPEG at 85 trades a small visual difference for a much smaller file. Avoid for screenshots of text or sharp UI — JPEG smudges high-contrast edges; keep PNG or WebP for those.

Pass-through a same-format same-size export

Input
source: graphic.png at 1024 × 1024, 410 KB
format: PNG
(no resize)
Output
graphic-1024x1024.png at 1024 × 1024, 410 KB  (original bytes, not re-encoded)

No actual transformation was requested, so the original bytes are kept. Canvas re-encoding does not preserve PNG-8 palette or original DEFLATE settings, so a "no-op" round-trip typically grows the file by 20–60%.

Cap an Open Graph image at 1200 px

Input
source: hero.jpg at 3000 × 1600, 2.4 MB
format: JPEG
quality: 82
max width: 1200
Output
hero-1200x640.jpg at 1200 × 640, ~115 KB  (−95%)

1200 × 630 is the de-facto Open Graph size used by Twitter, Facebook, LinkedIn, and Slack previews. Going larger does not improve the preview — those services downscale anyway.

FAQ

Why does the resized JPEG sometimes look slightly more "muted"?

JPEG cannot store transparency, so the encoder fills transparent pixels with white before compressing. That white shines through anti-aliased edges and gives the result a softer look. If the source has transparency, prefer WebP or PNG.

Why does the PNG output have no quality slider?

PNG is a lossless format — every pixel is preserved exactly, so there is no "quality" knob. Compression level affects file size and encode time but not pixel values, and the browser canvas API does not expose that knob. For lossy compression at smaller sizes, pick WebP or JPEG.

Does this strip EXIF / GPS metadata?

Yes, when re-encoding. The canvas pipeline reads pixel data only — EXIF, ICC color profile, GPS coordinates, and other metadata are stripped on the way out. That is a side benefit when sharing phone photos publicly. To inspect the metadata before stripping, use the [EXIF Viewer](/en/exif-viewer/) tool.

Can it convert HEIC (iPhone) photos?

Only if the browser can decode HEIC, which Safari does and most others do not. For cross-browser results, export the photo from your phone or Photos app as JPEG first, then drop it here. iOS also has a "Most Compatible" camera setting that records JPEG instead of HEIC.

Is there a batch mode?

Not yet — the tool processes one file at a time, intentionally, so the preview and stats stay clear. For dozens of images at once, a desktop tool like sharp-cli, ImageMagick (mogrify), or Squoosh's CLI is the right fit. Drop us feedback if batch processing in-browser would be useful.

Related concepts

Image formats split into two camps. Lossless formats (PNG, WebP-lossless, AVIF-lossless) store every pixel exactly, ideal for screenshots, logos, and anything with sharp edges or text. Lossy formats (JPEG, WebP, AVIF, HEIC) discard high-frequency detail the eye misses less, trading visual fidelity for file size — the right pick for photographs. JPEG is universal but old; its quality starts breaking down on sharp edges and gradients. WebP and AVIF, both developed for the web, deliver 25–50% smaller files at similar perceived quality.

Browser-based resizing uses an HTML canvas to draw the source image at the target dimensions, then asks the canvas to encode itself back to bytes. Resampling quality depends on the browser — Chrome, Firefox, and Safari each have their own algorithm, all reasonable for typical downscaling. Upscaling, on the other hand, is bilinear or bicubic at best; for upscaling beyond ~2× the result will be blurry unless you use a dedicated ML-based upscaler. The canvas pipeline also intentionally drops metadata (EXIF, ICC profiles, color spaces beyond sRGB), so for photography workflows requiring color-managed output, prefer a desktop tool that preserves the embedded profile.

Related articles

Related tools