JPG to WebP converter
Convert JPG images to WEBP format
This pair is a recompression, and it is worth being clear about what that means. Your JPEG is decoded back into pixels - artifacts and all - and then compressed again by a different codec. The second pass cannot restore anything, and in principle it can add its own errors on top of the first encoder's. In practice WebP is efficient enough that at the default quality of 90 the result looks like the JPEG while weighing noticeably less, which is exactly why sites migrate their photo libraries this way.
Key facts about JPG to WebP converter
| Nature of the change | A full re-encode between two lossy codecs: JPEG's DCT blocks are decoded, then VP8 intra prediction compresses the pixels again. |
|---|---|
| Generation loss | Real but usually invisible at quality 90. Each further round trip between lossy formats compounds, so keep the original JPEG as your master. |
| Typical size delta | A 20-40 percent reduction against the source JPEG at matching visual quality; a 1.2 MB photo commonly lands between 700 and 900 KB. |
| Chroma handling | Lossy WebP stores colour at half resolution in both directions, much as a typical JPEG does, so saturated red edges are the first place to look for softening. |
| Transparency | WebP supports alpha, but a JPEG has none to give - the output is opaque, and converting does not create a cut-out. |
| Metadata | Camera tags, GPS position and the colour profile are not transferred; the WebP contains the pixels and nothing else. |
| HEIC input | iPhone .heic and .heif files are accepted here too, decoded to JPEG data in the tab first and then encoded as WebP. |
| Browser support | Every browser in current use decodes WebP, and both Windows Photos and macOS Preview open it. Some older desktop tools and upload forms still do not. |
| Batch | Twenty files per run at up to 500 MB each, with multiple results bundled into converted-webp-files.zip. |
What happens to your file
Both halves of the round trip happen inside this tab: the browser's JPEG decoder produces the pixels, a canvas holds them, and canvas.toBlob with image/webp calls the WebP encoder that ships inside your browser. Nothing is queued, nothing is stored and no image bytes appear in any network request - the only reason a conversion takes time is the CPU work in front of you. Metadata is not stripped by a separate pass either; it simply never reaches the canvas.
About this tool
- 1
Load the JPGs
Drop up to twenty .jpg, .jpeg, .heic or .heif files. Mixed batches are fine, and the HEIC ones simply take a moment longer.
- 2
Pick a quality
90 is the default. For photo galleries, 80 usually saves a further chunk of bytes while staying hard to tell apart at normal viewing size.
- 3
Downscale oversized photos
A 4000-pixel-wide camera file displayed at 1600 px wastes bandwidth no codec can recover; the presets fix that before encoding.
- 4
Convert and compare the numbers
The result panel reports the original and new sizes and the percentage saved, so you can see whether the trade was worth it.
| Input and output | Takes .jpg and .jpeg only (image/jpeg) and returns .webp with the image/webp type; any other extension is refused before decoding. |
|---|---|
| Conversion path | JPG to WEBP runs in three steps: an <img> element decodes the JPEG, baseline or progressive, in the browser; the pixels land on a 2D canvas in this tab; then canvas.toBlob with the image/webp type returns the finished file. |
| Browser support | The JPEG side decodes in every browser ever shipped, while writing the WebP works in Chromium browsers and Firefox, and where the type is unsupported the canvas specification makes the browser return PNG bytes under the .webp name. |
| Controls for this pair | A 30 to 100 quality slider (steps of five, default 90) drives the WEBP encode, max-dimension presets from 3840 down to 200 px resize the JPG first, and the strip-metadata toggle is moot on this pair. |
| Batch, caps and naming | Twenty JPG files per run at 500 MB each; one result downloads as a single WEBP, several as converted-webp-files.zip, zipped by JSZip 3.10 in page memory. |
| Device ceiling | The canvas caps it: past roughly 16,384 px a side Chromium refuses the bitmap and iPhone Safari gives up sooner, so an oversized JPG fails before any WEBP bytes exist. |
- Avoid converting the same picture back and forth between JPG and WebP - each pass is another generation of loss, and the damage accumulates quietly.
- If the JPEG was already saved at a low quality, converting it gains little: WebP has to spend bits reproducing the existing blockiness.
- Serving WebP with the original JPG as a fallback source in a picture element covers the handful of old clients that cannot decode it.
- For screenshots and text-heavy images, pushing the slider to 100 switches Chromium's encoder into lossless mode, which is sharper than any high-quality lossy setting.
- Cutting page weight on a site whose photography is currently served as JPG.
- Shrinking a large batch of camera exports before uploading them to a portfolio or a shop.
- Meeting a theme or a plugin that expects WebP assets without installing anything locally.
Related tools
View allNeed the opposite? Try WEBP to JPG
Works well with this4
Other JPG tools12
Updated