Browser compatibility table
| Browser | WebP since | Notes |
|---|---|---|
| Chrome (desktop & Android) | v9, 2010 | Full support incl. animation |
| Edge | v18, 2018 | Full support |
| Firefox | v65, 2019 | Full support |
| Safari macOS | 14 (Big Sur), 2020 | Full support |
| Safari iOS / iPadOS | 14, 2020 | Full support |
| Opera | v11.10, 2011 | Full support |
| Samsung Internet | v4, 2016 | Full support |
| Internet Explorer | Never | Use JPEG fallback |
According to Can I use(opens in new tab), WebP is available to more than 97% of global users. The remaining share is mostly Internet Explorer and long-unsupported Safari versions on old devices.
Beyond browsers
| Platform | WebP support |
|---|---|
| WordPress | Upload since 5.8 (2021) |
| Shopify, Squarespace, Wix, Webflow | Yes (often auto-converted) |
| Windows 10/11 Photos | Yes |
| macOS Preview / Photos | Yes (Big Sur+) |
| Photoshop | 23.2+ (2022) natively |
| GIMP, Affinity, Figma, Sketch | Yes |
| Gmail, Apple Mail | Yes |
| Outlook desktop (Windows) | Partial; use JPEG for email |
| Facebook, X, LinkedIn, Instagram uploads | Accepted (re-encoded server-side) |
Adding a fallback
If you must support IE or legacy email clients, use the <picture> element: <picture><source srcset="photo.webp" type="image/webp"><img src="photo.jpg" alt="..." width="1200" height="800"></picture>. Browsers choose the first source they can decode. Content negotiation via the Accept header at the CDN level achieves the same thing without touching HTML.
Detecting WebP support in JavaScript
Rarely needed today, but simple: create a canvas and check canvas.toDataURL('image/webp').startsWith('data:image/webp'). This is also how this site verifies your browser can encode WebP before converting.