poka.sh

Docs

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