Initializing... drag & drop files here
Supports: WEBM
2.5 for the frame at 2.5 s).WebM is Google's open container for streaming video on the web, holding VP8/VP9/AV1 video and Vorbis/Opus audio. PPM (Portable Pixmap) is the opposite philosophy — an uncompressed, plain-text-or-raw image format from the Netpbm family, designed in 1988 by Jef Poskanzer to be the simplest possible color image you can write code against. Pulling a frame from WebM into PPM gives you raw RGB pixel data with no codec, no compression artifacts, and no metadata layer to strip.
cv2.imread() with zero decoder setup. PPM lets you feed a network or classical pipeline pixels that bit-exactly match what FFmpeg decoded from the source frame.pnmtops, pnmtopng, ImageMagick, and the entire Netpbm tool chain; many older Unix imaging scripts assume it.| Property | WebM | PPM |
|---|---|---|
| Type | Video container | Single-frame raster image |
| Compression | Lossy (VP8/VP9/AV1 + Opus/Vorbis) | None — uncompressed RGB |
| Color depth | 8-bit/10-bit/12-bit per channel | 8-bit (maxval 255) or 16-bit (maxval 65535) per channel |
| Alpha channel | Yes (VP9, VP8 alpha) | No — use PAM for alpha |
| Magic header | EBML 1A 45 DF A3 |
ASCII P3 (plain) or P6 (raw binary) |
| Typical size (1080p, 1 frame) | ~30-200 KB embedded in stream | ~6 MB raw (1920×1080×3 bytes) |
| Editor support | Browsers, VLC, FFmpeg, MPV | GIMP, ImageMagick, IrfanView, Photopea, OpenCV |
| Created | 2010 (Google, On2 acquisition) | 1988 (Jef Poskanzer, Pbmplus) |
| Best for | Web streaming, in-browser playback | CV pipelines, raw pixel access, format-conversion glue |
| Variant | Magic | Sample representation | Use when |
|---|---|---|---|
| PPM P3 (plain) | P3 |
ASCII decimal numbers, whitespace-separated | You want to inspect/edit pixels in a text editor or generate by hand |
| PPM P6 (raw) | P6 |
Binary bytes, big-endian for 16-bit | Production pipelines — ~3-4× smaller and faster to parse than P3 |
| 8-bit depth | maxval 255 | 1 byte per channel (3 bytes/pixel) | Standard RGB, matches most source video |
| 16-bit depth | maxval 65535 | 2 bytes per channel, big-endian | HDR sources, photometric measurement, scientific imaging |
| 1-bit depth | maxval 1 (effectively PBM-style) | Black & white only | Document binarization, threshold experiments |
WebM is heavily compressed — a 10-second 1080p clip might be 1-3 MB. PPM stores raw RGB with no compression at all: a single 1920×1080 frame is exactly 1920 × 1080 × 3 = 6,220,800 bytes (about 6 MB) for 8-bit, double that for 16-bit, plus a tiny header. That bloat is the whole point of PPM — every byte maps directly to a pixel channel, which is what makes it trivial to parse.
No. PPM is strictly RGB with no alpha. If your WebM uses VP8/VP9 alpha (common for animated overlays exported from After Effects), the alpha is dropped during conversion and you'll get the composited RGB only. For frame extraction with alpha preserved, use a format like PNG instead — see WebM to PNG. Netpbm's PAM format adds an alpha channel, but PAM is a separate file extension (.pam), not PPM.
Both store identical RGB pixel data. P3 writes each sample as an ASCII decimal number separated by whitespace, so a single red pixel reads 255 0 0 — human-readable but bloated (roughly 3-4× larger). P6 writes each sample as 1 byte (or 2 bytes big-endian if maxval ≥ 256), so the same red pixel is the three bytes 0xFF 0x00 0x00. Production tools default to P6; P3 is mostly used for teaching, debugging, and machine-generated test fixtures you want to read in a text editor.
Use the Multiple Screenshots option to pull several frames spaced across the clip, or run the conversion repeatedly with different timestamps. If you need every single frame at native frame rate (e.g., a 24 fps 10-second clip yielding 240 PPMs), that's typically a job for local FFmpeg (ffmpeg -i in.webm out_%04d.ppm) — browser-based conversion isn't the right fit for hundreds of multi-megabyte files. For sequence-style extraction tasks the MKV to PPM and MP4 to PPM tools follow the same workflow.
Very close, with two caveats. First, WebM playback can apply color-management transforms (BT.709 → sRGB) that vary by browser; the conversion decodes the stream's stored pixels, so colors should match a player using the same primaries. Second, if your video uses inter-frame prediction (almost all do), the decoder seeks to the nearest keyframe and decodes forward — at non-keyframe timestamps the produced frame is the same one a player would render at that moment, but rounding to the closest displayed frame may shift by a few milliseconds.
GIMP, ImageMagick (convert in.ppm out.png), IrfanView, XnView, and Photopea all open PPM natively. On the programming side, OpenCV (cv2.imread), Pillow (PIL.Image.open), scikit-image, NumPy via tiny custom loaders, MATLAB, and most ML frameworks read it without extra plugins. Adobe Photoshop does NOT open PPM by default — you'd need a converter step like PPM to PNG first.
Pick 8-bit unless you have a specific reason for more precision — 8-bit matches what almost every consumer video stores (VP8/VP9 8-bit profiles, H.264 main/high) and keeps file sizes manageable. Choose 16-bit if the source WebM is VP9 Profile 2 (10-bit) or AV1 10/12-bit and you're doing photometric work, HDR analysis, or want headroom for tone-mapping. 16-bit doubles the file size and a lot of older tools only handle 8-bit PPM cleanly.
VP8, VP9, and AV1 (the three video codecs the WebM container officially carries) all decode through the browser's built-in video pipeline used by this tool. Audio tracks (Opus, Vorbis) are ignored — PPM is a still-image format and has no audio concept. If your file is a .webm extension but actually contains a non-WebM codec (rare, but it happens with hand-muxed containers), the converter falls back to whatever your browser can decode.
Big-endian (most significant byte first), per the Netpbm PPM specification. If a tool reads your 16-bit PPM and the image looks scrambled or color-swapped, it's almost certainly assuming little-endian — common with naïve loaders. OpenCV, ImageMagick, and Pillow all handle the big-endian convention correctly out of the box.