Real bandwidth savings
WebP typically lands 25–35% below an equivalent JPEG. Across a photo-heavy page that is the difference between a fast paint and a sluggish one, and it directly improves Core Web Vitals scores.
A JPG to WebP converter that cuts file size by around a third at the same visible quality.
Loading tool…
The tool is loading its code on your device. This happens once and is cached for later visits.
Processed entirely on your device
Overview
Recompress JPEG images as WebP for faster pages. Choose lossy or lossless mode, tune quality, and convert in batch — processed locally, never uploaded.
If your site still serves JPEGs, converting them to WebP is the highest-return performance change you can make in an afternoon. Google built WebP specifically to beat JPEG at the same perceived quality, and Lighthouse flags unoptimised image formats as one of the most common reasons a page fails its Largest Contentful Paint budget. A JPG to WebP conversion is how you close that gap, and this free JPG to WebP converter runs it entirely in your browser, with no upload at any point.
The WebP format has two modes. Lossy is the JPEG replacement — predictive coding, each block predicted from its neighbours and only the difference stored, which is why it beats a discrete cosine transform at the same bitrate. Lossless is the PNG replacement: every pixel kept exact, and still typically around a quarter below the PNG's size.
This page produces the lossy kind, because it encodes through the browser's canvas API, which exposes a quality argument and no mode switch. There is no lossless toggle here, and it is worth being plain about that rather than discovering it mid-project. For photographs, hero images and anything with smooth gradients, lossy WebP is the right answer anyway — it is where the 25–35% saving in every JPG to WebP conversion comes from.
For a logo, an icon or a screenshot where ringing around a hard edge would be obvious, do not push the quality down to chase bytes. Set it to 95–100% and accept a larger file, or keep the PNG. A genuinely lossless WebP needs a dedicated encoder such as cwebp -lossless, and the honest comparison for that content is against PNG rather than against JPEG.
What the canvas route does give you is alpha. WebP supports transparency and this page never flattens it, so a PNG cut-out converts to a smaller WebP with its transparency intact — which is the case lossless mode is most often reached for, handled without it. Keeping the alpha channel is the quiet advantage a JPG to WebP conversion holds over plain JPEG re-compression, and it matters the moment a cut-out logo is on the list.
A 4000-pixel-wide camera JPEG displayed at 800 pixels is wasting roughly 95% of its bytes. Every recompression costs a little quality, so it is better to downscale and re-encode once than to convert now and resize later — a JPG to WebP conversion with the size cap set avoids a second pass and a second round of compression.
The maximum dimension field caps the longest edge, not the width, and preserves the aspect ratio while doing it: a portrait photograph is capped on its height, a panorama on its width. Set it to your largest real display size — commonly 1600 or 1920 pixels for full-bleed heroes, 800–1200 for content images. Images already smaller than the number you type pass through at their original dimensions, because upscaling only invents soft pixels.
Name the output with a .webp extension and set the Content-Type: image/webp header if you serve files directly. In HTML, a <picture> element gives you a graceful fallback:
<picture><source srcset="photo.webp" type="image/webp"><img src="photo.jpg" alt=""></picture>
Most modern build pipelines and CDNs will do this negotiation for you, but knowing the fallback pattern is useful when you are editing a legacy template by hand.
Encoding WebP through a canvas is not universal. Safari could decode WebP from version 14 but could not encode it until 16.4, and a browser that cannot encode does not fail loudly — it quietly returns a PNG instead. That would leave you holding a file called .webp whose bytes are PNG, which is the kind of bug that survives all the way to production.
So this page probes once, by encoding a single-pixel canvas and checking whether the result really begins with data:image/webp. If the probe fails, the Convert button is disabled and the reason is printed rather than guessed at: try Chrome, Edge or Firefox, or convert to PNG instead. Nothing is ever produced that disagrees with its own filename.
Each file comes back as a card with a thumbnail of the converted image and a line shaped like JPG → WEBP · 1600 × 900 · 480 KB → 305 KB — the format detected from the source bytes, the target, the dimensions actually written and the byte change. The summary strip above the list totals the run, so a twenty-file JPG to WebP batch reports its overall saving in one place instead of making you add up twenty rows.
Output is named after the source with a .webp extension. Up to 20 files of 25 MB each per run, converted one at a time so memory stays predictable; a file that cannot be decoded is reported by name while the rest of the batch carries on. That per-file accounting is what makes a JPG to WebP conversion verifiable rather than taken on trust.
One thing a JPG to WebP conversion always removes is metadata. The image is re-written from a canvas, which holds pixels only, so EXIF fields — including GPS coordinates and the orientation flag — do not survive into the WebP. For images going on a public site that is a feature rather than a loss, and it is one more reason a JPG to WebP conversion belongs at the end of your pipeline rather than the start: keep the original JPEG as the archival master and generate WebP copies for delivery.
Client photography, unannounced products and internal mockups stay on your machine throughout — every JPG to WebP conversion on this page is done by the browser's own encoder, not a remote service, so nothing is uploaded and no account is needed. Add up to twenty files, set one quality and one size cap, and every result is listed with its own thumbnail and its saving before you download a thing. Across a photo-heavy page, those savings are the difference between a fast paint and a sluggish one.
Step by step
Upload one or more images — .jpg, .png, .webp or anything else; the format is detected from the file itself.
Set the WebP quality; the slider runs 40–100% and starts at 85%.
Optionally cap the longest edge so oversized photos are downscaled in the same pass.
Press Convert to WebP and review the saving reported for each file.
Download the .webp results and drop them into your site or CMS.
Why use it
What this tool is good for, and what it deliberately does not try to do.
WebP typically lands 25–35% below an equivalent JPEG. Across a photo-heavy page that is the difference between a fast paint and a sluggish one, and it directly improves Core Web Vitals scores.
WebP carries a real alpha channel and nothing on this page flattens it, so a PNG logo or a cut-out product shot converts to a smaller WebP with its transparency intact — no white box behind it.
Most camera JPGs are far larger than they are ever displayed. Capping the longest edge in the same step avoids a second pass and a second round of compression, and images already smaller than the cap are left exactly as they are.
Client photography, unannounced products and internal mockups stay on your machine — the conversion is done by the browser's encoder, not a remote service.
Questions
Short, honest answers about quality, limits and privacy.
Guides & tutorials
Practical walkthroughs, settings, and troubleshooting for your next step.