Image Compressor, Resizer & Converter
Compress, resize, and convert images between PNG, JPEG, and WebP entirely in your browser — batch process multiple files with a quality slider and see the size savings before you download.
Interactive Client Prototype Sandbox
Drop images here, or click to choose files
PNG, JPEG, WebP, GIF, BMP — one or many at once
Everything runs locally via the browser's own canvas — images are never uploaded anywhere. "Keep original" re-encodes in the source format; the actual output format used is shown per image (a browser without WebP encoding support will fall back to PNG automatically).
Disclaimer: This free tool is provided “as is,” without warranties of any kind, and is for general informational purposes only — not professional, legal, financial, medical, tax, or engineering advice. Results may contain errors; verify anything important independently and use at your own risk. We accept no liability for any loss or damage arising from its use. See our Terms of Use for details.
Step-by-Step Guide
Drop one or more images onto the panel, or click it to choose files from your device. Once a file is decoded, its dimensions and original size appear in the results list below.
Choose an output format: 'Keep original' re-encodes in the same format the file already uses; PNG is lossless (the quality slider is disabled — file size comes down mainly by stripping metadata and any resizing you apply); JPEG and WebP are lossy and respect the quality slider. Lower quality produces a smaller file at the cost of visible compression artifacts — 70-85% is usually the sweet spot for photos.
Set a max width and/or max height if you also want to resize. Leave both blank to compress or convert without resizing. The tool always scales down to fit within whichever limit is hit first and never enlarges an image beyond its original size.
Click 'Compress' to process every loaded image, then review the before/after size for each one. Download individually or use 'Download all' to save every compressed image in sequence.
Choosing a format
Use JPEG for photographs and complex images with no transparency — it compresses photographic detail very efficiently. Use PNG when you need transparency or the image is mostly flat colors, sharp edges, or text (screenshots, logos, diagrams), where JPEG's compression introduces visible artifacts. Use WebP when you want the smallest possible file and don't need to support very old browsers — it typically beats both JPEG and PNG at the same visual quality.
A 4.2 MB JPEG photo (3024×4032) with quality set to 75% and max width set to 1600px produces roughly a 220 KB JPEG at 1600×2133 — about a 95% size reduction with no visible quality loss at normal viewing sizes.
Who it's for
Web developers optimizing page-weight, bloggers and marketers preparing images for upload, and anyone who needs a smaller file for email or a form with an upload size limit.
Core Features
- Drag-and-drop or file picker; processes multiple images in one batch.
- Convert to PNG, JPEG, or WebP, or keep the original format.
- Adjustable quality slider for lossy formats (JPEG / WebP).
- Optional max width / max height — downscales only, never upscales, and always preserves aspect ratio.
- Shows original vs. compressed size and percentage saved per image and in total.
- Download each image individually or all at once — nothing is ever uploaded to a server.
🛡️ No tracking — your inputs, keys, and details never leave this client sandbox.
Related tools
Is my photo uploaded to a server?
No. The image is decoded and re-encoded entirely inside your browser using the HTML canvas API. It never leaves your device — this matters for personal photos, screenshots containing sensitive information, or any image you can't share with a third-party service.
Why is the quality slider disabled for PNG?
PNG is a lossless format — it doesn't have a 'quality' setting the way JPEG and WebP do. PNG file size still typically drops from the original because the browser's PNG encoder may compress more efficiently than the source file's original encoder, and resizing (if you set a max width/height) reduces the pixel count. For a photographic image, converting to JPEG or WebP will produce a much smaller file than PNG ever can.
Why didn't my image get any smaller?
If the source is already a well-compressed JPEG or WebP at a similar quality level, re-encoding it may not shrink it much further, and re-compressing an already-lossy image can sometimes slightly increase size at a high quality setting. Try lowering the quality slider or setting a max width/height to see a bigger reduction.
What happens if I upload a HEIC or other unsupported format?
The tool relies on your browser's built-in image decoder, and most browsers cannot decode HEIC (the format iPhones use by default for photos) or a handful of other formats. If a file can't be decoded, it's flagged with an error in the results list instead of silently failing — convert it to JPEG or PNG first using your phone or photo app, then compress it here.
Does resizing distort the image?
No. The tool only scales down (never up) and always preserves the original aspect ratio — it computes the largest size that fits within your max width and max height without stretching the image, rather than forcing an exact width and height.
Why image weight matters more than most people realize
Images are consistently the single largest contributor to a typical web page's total download size, often outweighing all the HTML, CSS, and JavaScript combined. A photo taken on a modern phone camera can easily be 4-12 megabytes at full resolution — dramatically larger than it needs to be for display on a web page, in an email, or inside a form upload field with a size cap. Shrinking that file before it's used, rather than after a slow page load or a rejected upload, is one of the highest-leverage, lowest-effort performance and usability improvements available to anyone publishing images online.
Lossy vs. lossless compression
PNG is a lossless format: every pixel is reconstructed exactly as it was encoded, which is essential for screenshots, logos, and any image with sharp edges or text, but it compresses photographic detail poorly compared to lossy formats. JPEG and WebP are lossy: they discard information the human eye is less sensitive to (subtle color gradients, high-frequency detail) in exchange for dramatically smaller files, controlled by a quality setting. The practical rule of thumb is to match the format to the content — lossless for graphics with hard edges and flat color, lossy for photographs — rather than defaulting to one format for everything.
What resizing actually saves
File size for an uncompressed bitmap scales with the total pixel count (width × height), so cutting both dimensions in half reduces the raw pixel data to roughly a quarter of the original — before compression is even applied. Serving an image at a much higher resolution than it will ever be displayed at is a common and easily fixed waste: a photo destined for a 600px-wide blog column doesn't need to ship at 4000px wide, and downscaling it client-side before upload (or before publishing) removes that waste at the source rather than relying on a CMS or CDN to do it later.
Why this happens in the browser instead of a native app
Browsers have supported canvas-based image decoding and re-encoding for over a decade, including format conversion between whatever the browser can decode (JPEG, PNG, GIF, BMP, and modern browsers' own WebP) and whatever it can encode via canvas.toBlob. That capability makes a fully client-side compressor possible without a server doing the work — which matters both for privacy (personal photos never transit a third party) and for cost (no server-side image-processing infrastructure to run or pay for).