WEBP
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
WebP Image Preview.
At a glance
| Original creator | Google, from a format On2 Technologies created |
| Purpose | Raster images for the web with lossy or lossless compression, transparency and animation. |
| Extensions | .webp |
| Poka parser | poka-webp |
| Viewer | poka-image-with-meta-viewer |
| Depth tier | Parser with a shared viewer (see Depth tiers) |
| Breadth tier | B2 Broad (see Breadth tiers) |
How much Poka reads
B2 Broad. The common content of the current and the common older versions is decoded. Some named features or versions are not, and are listed.
Confidence: medium (the reviewer read the code). Basis: Reviewed 2026-10-16: parsers/poka-webp/src/lib.rs (RIFF walk: VP8 and VP8L sizes, VP8X flags and canvas, ALPH, ANIM, ANMF, ICCP, EXIF, XMP), unit tests, tests/samples.rs (150x150 lossy, 400x301 lossless alpha, giphy.webp 18 frames, 1.90 s, loop forever, VP8X); corpus scan: 29 VP8L, 17 VP8X, 8 simple VP8. Since 2026-10-21 (#451) every corpus file is decoded in the module and its size and sampled pixels match Pillow 12.3.0 (exactly, lossy files included), and giphy.webp plays Pillow's 18 frames. Covers simple lossy, simple lossless and extended files.
What Poka does not read
- EXIF, XMP and ICC contents not shown (reported present or absent only)
- animation background colour, frame offsets and blend or disposal modes not reported
- files over the decode budget get header facts only, no picture
- embedded ICC profiles and the EXIF orientation of an animation are not applied to the pixels
- lossy-with-alpha (ALPH) read only as an alpha flag
Background
A WebP file is a RIFF container in one of three shapes: simple lossy (a VP8 chunk), simple lossless (VP8L) or extended (VP8X, with animation, ICC, Exif and XMP chunks). Poka reads the chunk structure for the size, alpha and animation facts and decodes the pixels in the module (image-webp, through the image crate) to RGBA; an animation is decoded frame by frame with its durations, and the viewer plays it on a canvas.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| Simple lossy (VP8), simple lossless (VP8L) and extended (VP8X) | RIFF....WEBP |
Read | All three layouts are described in parsers/poka-webp/src/lib.rs and decoded in the module. |
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- image-webp (candidate; MIT OR Apache-2.0; Rust; https://github.com/image-rs/image-webp) — Pure Rust, no unsafe; lossy/lossless/alpha/animation decoding, exposes ICC/EXIF/XMP chunks; lossless encoder only; crates.io 0.2.4 (August 2025)
- libwebp (candidate; BSD-3-Clause; C; https://github.com/webmproject/libwebp) — Google reference codec with dwebp/webpinfo tools; licence from repository sidebar plus separate PATENTS grant
- webp (jaredforth) (candidate; MIT OR Apache-2.0; Rust (wraps libwebp); https://github.com/jaredforth/webp) — Rust bindings around libwebp, not pure Rust; 0.3.1 (August 2025)
- zenwebp (candidate; AGPL-3.0-only OR LicenseRef-Imazen-Commercial; Rust; https://github.com/imazen/zenwebp) — Pure-Rust fork of image-webp; latest releases are AGPL or commercial (0.1.0-0.2.1 were MIT OR Apache-2.0)
Sources
- https://loc.gov/preservation/digital/formats/fdd/fdd000577.shtml
- parsers/poka-webp/src/lib.rs