Initializing... drag & drop files here
Supports: PPM
.ppm images (P3 ASCII or P6 binary). Batch conversion is supported — drop a whole pipeline output folder at once.PPM (Portable Pixmap) is a deliberately simple, uncompressed RGB format from the Netpbm toolkit, designed by Jef Poskanzer in 1988 as a "lowest common denominator" interchange format. A PPM file stores raw 8-bit-per-channel RGB triplets (or 16-bit when maxval > 255) with no compression, no alpha, and no metadata — which is why a 1920×1080 PPM is roughly 6 MB on disk and a 4K frame can exceed 24 MB. PPM's strength is parser simplicity, not storage. WebP, announced by Google on September 30, 2010, fills the opposite niche: a modern web-delivery format that compresses lossy images 25–34% smaller than JPEG and lossless images 26% smaller than PNG.
pnmscale, pnmgamma, pnmcomp, convert) emit PPM as the final intermediate. Converting to WebP shrinks a 6 MB 1080p frame to roughly 80–250 KB at "Very High" quality — a 25-75× reduction with no visible artifacts at typical web viewing sizes.fwrite away. Convert before publishing turntables or contact sheets.<picture>.| Property | PPM | WebP |
|---|---|---|
| Year introduced | 1988 (Pbmplus / Netpbm) | 2010 (Google, based on On2 VP8) |
| Compression | None — raw RGB triplets | Lossy (VP8) and lossless (VP8L) |
| Bit depth | 8-bit/channel; 16-bit when maxval > 255 | 8-bit RGBA (lossy and lossless) |
| Alpha channel | Not supported | Supported (lossy and lossless) |
| Animation | Not supported | Supported |
| Max dimensions | Unbounded by spec; tooling-dependent | 16,383 × 16,383 pixels |
| Typical 1080p file size | ~6 MB | ~80–300 KB lossy / ~1.5–3 MB lossless |
| Browser support | Not supported natively | Chrome 32+, Firefox 65+, Edge 18+, Safari 14+ iOS / 16+ macOS |
| Primary use | Pipeline intermediate, scientific I/O | Web delivery, app assets |
| Magic number | P3 (ASCII) or P6 (binary) |
RIFF....WEBP |
| Preset | Approx quality factor | Typical 1080p output | Best for |
|---|---|---|---|
| Highest | ~95 | 250–400 KB | Hero images, photography portfolios |
| Very High (default) | ~85 | 120–250 KB | Product photos, blog hero |
| High | ~75 | 70–150 KB | Body images, thumbnails grid |
| Medium | ~60 | 40–90 KB | Background textures, social previews |
| Low / Very Low | ~40 / ~25 | 15–50 KB | Lazy-load placeholders, low-res LQIPs |
Lossless mode ignores the quality preset and instead uses Compression Level (1–10) — level 6 is a good speed/size balance; level 9–10 squeezes out a few extra percent at much slower encode.
No. Lossless mode encodes with WebP's VP8L codec, which is mathematically reversible — every RGB pixel decodes byte-identical to the input PPM. Files are typically 26% smaller than the equivalent PNG and dramatically smaller than the source PPM (PPM is uncompressed; even lossless WebP compresses well). Pick lossless when the image is a chart, screenshot, scientific figure, or anything you'll re-edit; pick lossy for photography where 25–34% extra savings are worth a perceptually-invisible quality drop.
No — WebP is an 8-bit format in both lossy (8-bit YUV 4:2:0) and lossless (8-bit RGBA) modes. If your PPM has maxval > 255 (16-bit channels), values are tone-mapped down to 8-bit during conversion. For HDR or scientific data where bit depth matters, convert to a 16-bit-capable format first (PNG-16 or TIFF) using PPM to PNG, then deliver the 8-bit web copy as WebP separately.
The PPM format itself has no spec dimension cap, but WebP output is limited to 16,383 × 16,383 pixels per the WebP container. Files larger than that need to be down-scaled or split. xconvert processes uploads in your browser session — practical browser memory limits typically cap single-image uploads around a few hundred megabytes, which covers PPM files well past 8K resolution.
P3 is the ASCII-text encoding (each RGB value written as decimal characters separated by whitespace) and P6 is the binary encoding. P6 files are roughly 3× smaller and parse much faster, but both encode identical pixel data. xconvert auto-detects the magic number and accepts either. P3 is rare in the wild outside academic teaching examples; production pipelines almost always emit P6.
Because the spec fits on one printed page. The trade-off is deliberate: zero compression, zero metadata, zero edge cases — meaning a PPM reader can be a 30-line C program. That's exactly what makes PPM the format of choice as an intermediate in Unix-style image pipelines (pnmscale | pnmgamma | pnmtopng) and as a debug dump from custom renderers and CNN preprocessors. It was never intended for storage or delivery.
For production sites targeting modern browsers (over 95% per caniuse), serving WebP directly is fine. For maximum compatibility — especially old in-app webviews, older Samsung Internet versions, or corporate IE pockets — use the HTML <picture> element with a WebP source and a JPEG/PNG fallback. Most CMS platforms and Next.js / Nuxt image components do this automatically when given a WebP source.
Direct WebP-to-PPM isn't on xconvert as a single step, but you can route via WebP to PNG and then through ImageMagick (magick input.png output.ppm) if you need PPM specifically. In practice, the only common reason to go back to PPM is feeding a Netpbm-only pipeline, in which case a one-line pnm conversion is faster than uploading.
WebP supports an alpha channel in both lossy and lossless modes. PPM, however, has no alpha — so any "PPM to WebP" conversion produces a fully opaque image. If your source is transparent, export the upstream pipeline to PNG instead (use PNG to WebP afterward) or to PAM (Netpbm's alpha-aware sibling format).
At the same byte budget, WebP produces visibly cleaner output than JPEG — fewer blocking artifacts in flat areas, less ringing on sharp edges, and better high-frequency detail retention. Google's published comparisons show 25–34% smaller files at equivalent SSIM. For lossless or near-lossless web delivery, WebP is dramatically better than JPEG (which has no true lossless mode). Use PPM to JPG only when targeting a system that genuinely can't decode WebP.