Compress WebP files in your browser
Re-encode existing WebP files at lower quality to shrink them further. Most WebPs in circulation were encoded at quality 90+ and can lose 20–40% of their size with no visible change.
Click to select your WebP file
File never leaves your browser.
Quick start
- Step 1
Select your WebP file
Click the upload area or drag and drop a WebP file. One file at a time for the compression tool.
- Step 2
Choose a quality setting
Use the slider to set the target quality (10–100). 78 is a safe default; lower for thumbnails, higher for heroes.
- Step 3
Compress and download
Click compress. The tool re-encodes the WebP at your chosen quality and reports the size reduction. Download when ready.
How WebP compression works
Compressing a WebP is a re-encode. The browser decodes the source WebP into RGBA pixels via the Canvas API, then encodes those pixels as a new WebP at the quality setting you choose. This produces a smaller file at the cost of some additional quality loss compared to the source.
The size win comes from lowering the quality factor — most existing WebPs in circulation were encoded at quality 90+ to be safe, when 78–82 would have produced visually equivalent output at significantly smaller size. The visible difference between quality 90 and quality 80 is almost never perceptible on a typical display; the file size difference is routinely 30–40%.
A few cases where compression won't help:
- The source WebP is already at quality 75 or below. Re-compression produces marginal savings and may introduce visible artefacts.
- The source is lossless WebP (logos, icons, screenshots). Re-encoding as lossy adds artefacts. Keep the lossless original.
- The source was encoded with sophisticated server-side tools (cwebp -m 6, Sharp at effort=6) that produce smaller output than the Canvas API can match.
For systematic compression guidance, see WebP Compression Settings and Lossy vs Lossless Compression.
When to compress a WebP
Inherited high-quality WebPs
Files exported from Photoshop, Affinity, or Figma often default to quality 90+. Re-compressing at 78–82 typically cuts size by 30–40% with no visible difference.
CDN-converted WebPs
Some CDN auto-conversion services produce safe-but-large WebPs. Manual re-compression often reclaims meaningful bytes.
Hero / LCP optimisation
The Largest Contentful Paint image typically dominates page weight. Aggressive compression on the hero (q=78–82) has outsized Core Web Vitals impact.
Targeting a byte budget
Some platforms enforce maximum file sizes (ad networks, marketplace listings). Re-compress at incrementally lower quality until you hit the budget.
Thumbnails and below-the-fold
Images rendered at small sizes can tolerate aggressive compression (q=65–72) invisibly. The compression saving compounds across grid pages with many thumbnails.
Bandwidth-sensitive audiences
Mobile-first or emerging-market audiences benefit from every kilobyte saved. Compress aggressively for these contexts.
Quality settings
| Use case | Quality | Notes |
|---|---|---|
| Hero / above-the-fold | 82 | Visible at large size; quality matters |
| Product imagery | 78 | Sweet spot for ecommerce |
| Article body imagery | 75 | Almost always indistinguishable |
| Thumbnails (≤ 200px) | 65–72 | Aggressive compression invisible at size |
| Decorative / background | 55–65 | Detail loss acceptable |
Below quality 55, lossy artefacts (block boundaries, ringing around edges) become visible on typical content. Above quality 90, file size grows much faster than quality improves — avoid this range unless archival fidelity is required.
Common issues and solutions
Output file is larger than the input
The source WebP was encoded with sophisticated server-side encoder settings the Canvas API can't match. Keep the original — re-compression won't help.
Output looks visibly worse
Quality setting is too aggressive. Try 78–82 for photographic content. For logos, icons, or text-heavy graphics, don't use this tool — the source is probably lossless and should stay that way.
Transparency is missing in the output
Should not happen — the Canvas API preserves alpha channels through re-encoding. If transparency is lost, verify by opening the source in another tool to confirm it had transparency to begin with.
Compression is slow on large files
Very large files (50 MB+) stress browser memory. Try downscaling first, or use a server-side encoder for high-volume batch work.
I want to batch-compress many WebPs
For batch operations, use a build pipeline with Sharp or cwebp at -m 6. Browser-based compression is ideal for one-off tuning; build pipelines are better for scale.
Quality 100 still shows reduction
The Canvas API's WebP encoder doesn't truly support lossless via the q=100 setting alone. For genuinely lossless re-encoding, use cwebp -lossless server-side.
Animated WebP loses animation
The Canvas API only reads the first frame. For animated-WebP re-compression, use img2webp or gif2webp from the libwebp suite.
I get a 'Compression failed' error
Usually means the source file is corrupted or uses an unusual WebP profile. Try opening it in another tool to verify the file is valid.
Frequently asked questions
Related resources
Convert JPG to WebP with full quality control before further compression.
Convert PNG to WebP. For photographic PNGs, use lossy mode at q=80; for graphics, use lossless (q=100).
Container structure, codec details, browser support, and implementation patterns.
Complete reference for quality, method, alpha-quality, near-lossless, and preset parameters.
Encoder settings, responsive delivery, lazy loading, and Core Web Vitals impact for WebP.
Decision framework for choosing the right compression mode for any image.