fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward

Convert WEBP Image Free

Convert WebP, which does the jobs of JPG, PNG and GIF, in smaller files.

Google released WebP in 2010 to make web pages load faster. One format covers photos, graphics with transparency, and short animations. Pick the format you'd normally use to see what WebP changes.

photoInstead of JPGphotos
layersInstead of PNGgraphics, transparency
gif_boxInstead of GIFshort animations
typical file size · same visual quality
JPG100 KB per 100 KB
WebP70 KB per 100 KB
For photos, Google measured WebP files 25-34% smaller than JPGs of the same visual quality. On a page with twenty photos, that is often a whole second less loading on a phone.
what carries over from JPGcheck_circleLossy compressionWorks the same way: a quality number from 0 to 100 trades size for detail.check_circleColour and EXIFColour profiles and photo details can be kept.add_circleAdds transparencyUnlike JPG, a lossy WebP can still have a see-through background.infoMax 16,383 pxVery large panoramas over 16,383 pixels on a side can’t be WebP.
~/encoded-in-your-browser

Same picture, same quality setting. Real file sizes.

This isn't a mock-up. Your browser encodes the sample image as JPG, WebP and PNG right now, at the quality you choose. The zoomed crops show the detail around the text, where compression damage appears first.

quality60
encoded by this browser
JPG15 KB
at quality 60
WebP9 KB
at quality 60 · 39% smaller than JPG
PNG415 KB
lossless · quality doesn’t apply
Here WebP is 39% smaller than JPG at the same setting, with fewer ringing artefacts around the sharp text edges.
~/ten-years-to-everywhere

Browsers took a decade to agree. Apps are still catching up.

Every current browser shows WebP. The trouble now is software that saves, edits or uploads images, which is why people still end up converting WebP files they downloaded.

20102013201620192022
2010AnnouncedGoogle releases WebP, photos only.
2014Chrome, full supportTransparency and animation added and supported.
2018EdgeMicrosoft Edge adds WebP.
2019FirefoxFirefox 65 turns it on for everyone.
2020SafariSafari 14 on Mac, iPhone and iPad.
publicAll modern browserscheck_circleChrome, Edge, Firefox, Safari: display, save and upload.
desktop_windowsWindows Photoscheck_circleOpens WebP on Windows 10 and 11.
laptop_macMac Previewcheck_circleOpens and exports WebP on current macOS.
brushPhotoshopchange_circleSupported natively since 2022; older versions need a plug-in.
slideshowPowerPoint & Wordchange_circleRecent Microsoft 365 inserts it; older Office can’t.
mailEmail appschange_circleMany show it, some don’t. JPG is safer for newsletters.
cloud_uploadUpload formscancelMany still accept only JPG and PNG, and reject WebP.
printPrint shopscancelMost online print services want JPG, PNG or PDF.

When each browser added WebP

  1. 2010 Announced: Google releases WebP, photos only.
  2. 2014 Chrome, full support: Transparency and animation added and supported.
  3. 2018 Edge: Microsoft Edge adds WebP.
  4. 2019 Firefox: Firefox 65 turns it on for everyone.
  5. 2020 Safari: Safari 14 on Mac, iPhone and iPad.
~/inspect-a-webp

Open any WebP and see which of its three formats it really is.

This page walks the RIFF container chunk by chunk, checks the VP8X flags against what is actually there, and reads the start of the VP8 or VP8L bitstream itself. That includes running VP8’s boolean decoder over the frame header to recover the quantiser, the closest thing a WebP has to a quality setting. Animations are mapped frame by frame onto their canvas. Everything happens on your device. Both samples are built from WebP frames your own browser encodes; the second is broken on purpose.

animated-sample.webp · 2.9 KBanimating as your browser plays it
Your browser could not decode this file. The container analysis below still works.Your WebP as decoded by this browser
frame rectangles on the 176 × 96 canvas
123
Frame 1: 64 × 64 at 0, 16, shown 160 ms. It overwrites the rectangle, transparent pixels included. It stays on the canvas under the next frame.
file size2.9 KBimage data share74.8%bits / pixel0.35codeclossyframes3metadata582 B
What the bytes say
RIFF headerdeclares 2,966 B · file 2,966 B
Formatextended (VP8X)
Canvas176 × 96 px
Bitstreamlossy
AlphaALPH chunk, lossless (VP8L)
ColourICC profile “Sample sRGB profile (FileFormer)”
Animation3 frames · 0.80 s · loops forever
MetadataEXIF + XMP
Browser decodeok · 176 × 96 · ImageDecoder 3 frames
After RIFF endnothing
check_circleStructure is valid: RIFF size, chunk order and padding, VP8X flags and the bitstream headers all check out.
infoLossy, base quantiser per segment 27, 24, 18, 12 of 127. That maps back to roughly libwebp quality 80. The estimate ignores libwebp’s per-segment “spatial noise shaping”, so treat it as ±10.
File map, to scaletop-level chunks, left to right
RIFF header0.4% · 12 BStructure1.1% · 32 BColour profile8.2% · 244 BImage data78.9% · 2.3 KBMetadata11.4% · 338 B
OffsetFourCCSizePadDecoded content
12“VP8X”10-flags 3E = ICC + alpha + EXIF + XMP + animation · canvas 176 × 96
30“ICCP”236-ICC v4.3 · class mntr · RGB · “Sample sRGB profile (FileFormer)” · 236 B declared
274“ANIM”6-background rgba(0, 0, 0, 0.00) · loops forever
288“ANMF”718-frame 1 · 64 × 64 at 0, 16 · 160 ms · no blend · keep
312 ↳ “ALPH”340-compression lossless (VP8L) · filter gradient · no pre-processing · 339 B
660 ↳ “VP8 ”346-lossy key frame · 64 × 64 · version 0 · first partition 80 B · quantiser 27/24/18/12 · ≈ quality 80
1,014“ANMF”772-frame 2 · 64 × 64 at 56, 16 · 160 ms · alpha-blend · keep
1,038 ↳ “ALPH”340-compression lossless (VP8L) · filter gradient · no pre-processing · 339 B
1,386 ↳ “VP8 ”400-lossy key frame · 64 × 64 · version 0 · first partition 96 B · quantiser 27/25/19/12 · ≈ quality 79
1,794“ANMF”826-frame 3 · 64 × 64 at 112, 16 · 480 ms · alpha-blend · dispose to background
1,818 ↳ “ALPH”340-compression lossless (VP8L) · filter gradient · no pre-processing · 339 B
2,166 ↳ “VP8 ”454-lossy key frame · 64 × 64 · version 0 · first partition 92 B · quantiser 27/24/22/13 · ≈ quality 79
2,628“EXIF”96-little-endian TIFF · 3 tags · Make FileFormer · Software Sample builder · DateTime 2026:10:02 09:30:00
2,732“XMP ”226-226 B of XML · CreatorTool “FileFormer sample builder”
RIFF sizes are little-endian and count only the payload. A chunk with an odd size is followed by one zero pad byte that the size does not include. Indented rows are chunks nested inside an animation frame.
#RectangleDurationBlendingDisposalBitstreamBytes
164×64 @ 0,16160 msoverwriteleave in placelossy + ALPH718 B
264×64 @ 56,16160 msalpha-blendleave in placelossy + ALPH772 B
364×64 @ 112,16480 msalpha-blendclear to backgroundlossy + ALPH826 B
Durations add up to 800 ms. Frame offsets are stored divided by 2, so a frame can only start on an even pixel. Click a row or a rectangle to select a frame.
VP8 key frame header, decoded bit by bitThe first 10 bytes are plain fields. Everything after them is arithmetic-coded, so this page runs the RFC 6386 boolean decoder to read the frame header.
Frame tagbytes 0-2 · 10 0A 00key frame · version 0 · show 1
First partitiontag bits 5-2380 B of modes and headers
Token partitionseverything after256 B of DCT coefficients
Start codebytes 3-59D 01 2A
Sizebytes 6-9 · 14+2 bits each64 × 64
Colour space · clampingbool L(1) · L(1)YUV BT.601 · clamp
Segmentationbool L(1) + featureson · absolute quantisers 27, 24, 18, 12
Loop filterL(1) type · L(6) level · L(3) sharpnessnormal · level 63 · sharpness 0
DCT partitionsL(2)1
Base quantiser (y_ac_qi)L(7), 0 = finest27 of 127
Effective quantisersper segment27, 24, 18, 12
≈ libwebp qualityinverted from the mean80
ALPH compressionbits 0-1lossless (VP8L)
ALPH filterbits 2-3gradient
ALPH pre-processingbits 4-5none
Quality is not stored in a WebP. The estimate inverts libwebp’s quality-to-quantiser curve, so another encoder or a strong spatial-noise-shaping setting can move it.
Clean containerRewrites the RIFF wrapper only, without re-encoding a single pixel. EXIF, XMP, unknown chunks and bytes past the RIFF end are dropped, chunks are put in spec order, pad bytes and sizes are recomputed, and VP8X flags are rebuilt from what is present. If nothing still needs VP8X, the file becomes simple format. Then your browser decodes both and compares every pixel.
Original file2.9 KB
DroppedEXIF, XMP
Containerextended, flags rebuilt
New file2.6 KB
Saving11.4% · 338 B
Pixelsidentical, all 16,896 (first frame)
downloadDownload clean WebP
~/spec-sheet

WebP at a glance: the technical reference.

Identification, limits and capabilities, from RFC 9649 and Google’s container specification.

Full nameWebPfrom Google, based on the VP8 video codec
Extension.webpone extension for all variants
MIME typeimage/webpregistered with IANA in 2024
Magic bytes52 49 46 46 xx xx xx xx 57 45 42 50“RIFF”, a 4-byte size, then “WEBP”
StandardRFC 9649 (2024)first released 2010
Maximum size16,383 × 16,383 pxa 14-bit dimension field
Bit depth8 bits per channelno HDR or 10-bit option
ColourYUV 4:2:0 (lossy) · ARGB (lossless)lossy halves colour resolution
CompressionVP8 lossy · VP8L losslesstwo different codecs in one format
Transparency8-bit alphain both lossy and lossless files
Animationyes (ANIM, ANMF chunks)each frame can be lossy or lossless
MetadataEXIF, XMP, ICCin their own chunks, extended format only
~/riff-chunks

A WebP is a RIFF file, the same family as WAV and AVI.

Inside the RIFF wrapper are four-letter chunks. A simple WebP has just one; a transparent, animated or metadata-carrying one uses the extended layout. Pick a file type to see its chunks.

Simple lossySimple losslessTransparentAnimated
RIFFfile headerVP8image data
RIFF · file headerThe first 12 bytes: “RIFF”, the file size minus 8, then “WEBP”. Software checks these to recognise the file.
52 49 46 46 "RIFF"6A 2C 01 00 size: 76,906 bytes57 45 42 50 "WEBP"