Image Tools · Converter

WebP to JPG Converter

Convert WebP images to JPEG instantly in your browser. Adjust quality, fill transparent backgrounds, batch convert and download as ZIP. No upload, no server, no limit.

What This Tool Does

WebP to JPEG conversion with real quality control — not just a format rename.

🎚️
Adjustable JPEG quality (1–100)
Drag the quality slider to balance file size against visual quality. Presets at 65, 75, 85, and 92 cover the most common use cases. Quality 92 is the recommended default — near-original quality at significantly reduced file size.
🎨
Background fill for transparency
JPEG doesn't support transparency. Any transparent pixels in the WebP are filled with a solid colour during conversion. Default is white, but you can switch to black, light grey, or any custom colour — essential for images that will sit on coloured backgrounds.
📊
File size comparison
After each conversion the tool shows the original WebP size alongside the JPEG output size, with a percentage difference. WebP is often smaller than JPEG at equivalent quality — this lets you see exactly what you're trading off when you convert.
📦
Batch convert to ZIP
Upload multiple WebP files at once, apply the same settings, and download all converted JPEGs in a single ZIP archive. Individual files can also be converted and downloaded one at a time.
⚠️
Stale result indicator
If you convert a file and then change the quality slider, the tool marks the old result as "Stale" so you know it was converted at a different setting. One click re-converts with the current settings.
🔒
100% browser-based
All conversion happens locally using the HTML5 Canvas API. No file is ever sent to a server. Works offline after the page loads. Supports WebP, PNG, GIF, AVIF, and any other browser-displayable format as input.

How to Use This Tool

1
Upload your WebP files
Drag and drop one or more .webp files onto the upload zone, or click "Choose Files" to browse. Multiple files are supported — they all appear in the file list on the left.
2
Set quality and background
Adjust the JPEG quality slider. 92 is the recommended starting point. If your WebP has transparency, choose a background fill colour — white is the default. Use the preset buttons for common quality values.
3
Convert and check the size
Click "Convert & Download JPG" for the selected file. The file list updates to show the JPEG size alongside the original WebP size and the percentage difference. Adjust quality if needed and re-convert.
4
Batch download as ZIP
For multiple files, click "Download All as ZIP". The tool converts any unconverted files first, then packages all JPEGs into a single ZIP file for download.

Logic Behind the Tool

FileReader → Image → Canvas
Each file is read into memory as a Base64 data URL using the FileReader API. This data URL is assigned to an HTMLImageElement which decodes the WebP (browsers have had built-in WebP support since 2020). Once decoded, the image is drawn onto an off-screen <canvas> element sized to the original pixel dimensions.
JPEG export via toDataURL
canvas.toDataURL('image/jpeg', quality) encodes the canvas contents as a JPEG. The second argument is a quality value between 0 and 1, which maps directly to JPEG quantisation tables — higher values preserve more detail and produce larger files. The result is a Base64 data URL that can be downloaded directly.
Transparency handling
Before drawing the image, the canvas context is filled with the chosen background colour using ctx.fillStyle = bgColor; ctx.fillRect(...). This composite approach ensures that any transparent pixels in the source WebP are replaced with the fill colour, since JPEG has no alpha channel and would otherwise render them as black.
File size estimation
The exact JPEG file size is estimated from the Base64 data URL length: Math.round(base64.length × 3/4). Base64 encodes every 3 bytes as 4 characters, so dividing by 4/3 gives the binary size. This estimate is accurate to within a few percent — the difference accounts for padding characters.
Non-reactive image cache
Decoded HTMLImageElement objects are stored in a plain JavaScript object outside Alpine.js's reactive data proxy. This prevents Alpine from wrapping large binary objects in its reactivity system, which would be slow and unnecessary — Alpine only needs to track the lightweight metadata (size, name, dimensions).
ZIP packaging with JSZip
Batch downloads use the JSZip library. Each converted JPEG's Base64 data is extracted from the data URL and added to the archive with zip.file(name, base64, {base64: true}). Duplicate filenames are automatically deduplicated by appending a counter. generateAsync({type: 'blob'}) produces the final ZIP for download.

Frequently Asked Questions

This is expected. WebP is a more efficient format than JPEG — it typically achieves the same visual quality at 25–35% smaller file size. When you convert WebP to JPEG at high quality settings, the less efficient JPEG encoding produces a larger output. If file size matters, try reducing the quality slider to 75–80. The visual difference at that range is usually imperceptible on screen, but the file size can be significantly smaller. If you need the smallest possible file, consider whether you actually need to convert — WebP is supported in all modern browsers and most modern image tools.

At quality 92 vs 85, the visual difference is minimal to invisible at normal viewing distances for most images. The file size difference can be 20–40%. For images with fine detail (sharp text, high-frequency textures like grass or fabric), quality 92 preserves slightly more crispness. For images with large flat areas (sky, solid backgrounds, blurred backgrounds), quality 80 looks essentially identical to 92. If you're unsure, start at 85, check the result, then adjust. For print or archival use, use 92–95.

The tool will convert animated WebP files, but only the first frame is captured as a static JPEG. The animation data is not carried over — JPEG is a still image format and has no animation support. If you need to convert animated WebP, you would need to extract individual frames first. For a static snapshot of the first frame, this tool works correctly.

WebP is technically superior in most ways — better compression, supports transparency, supports animation. But JPEG is the universal format: every email client, messaging app, social media platform, image editor, and document program supports JPEG without any issues. Common reasons to convert: you want to attach an image to an email and the recipient's client shows a broken image icon; you're uploading to an older platform that doesn't accept WebP; you're using software that doesn't open WebP; you're preparing images for print (most RIPs expect JPEG or TIFF). If your workflow is entirely web-based, you often don't need to convert at all.

No. JPEG quality 100 means "minimum compression" but it is still a lossy format. Even at quality 100, the JPEG encoding process applies a discrete cosine transform and quantisation that discards some pixel information. The result is visually very close to the original, but not mathematically identical. If you need lossless output, save as PNG instead of JPEG — PNG is truly lossless and supports transparency.

Related Tools

View all →

Related Reading