Initializing... drag & drop files here
Supports: PPM
PPM — Portable Pixmap, part of the Netpbm family — is about as simple as an image file gets: a short ASCII header, then red, green and blue samples in that order, one pixel after another, with nothing else in the file. No compression, no alpha channel, no metadata, no embedded colour profile. It exists because it is trivial to write and trivial to parse, which is why scientific instruments, ray tracers, scanner drivers, PostScript rasterisers and homework assignments all emit it.
JFIF is the opposite priority. It is the JPEG File Interchange Format — the 1992 document that defined how to actually store JPEG-compressed data in a file, formalised as ITU-T Recommendation T.871 on 14 May 2011 and published by ISO/IEC as 10918-5. In practice a .jfif file is a JPEG, and this page turns a raw pixel dump into one.
The Netpbm specification defines the whole format in a few lines, and the pipeline reads every variation of it.
| Element | Rule | Example from a real file |
|---|---|---|
| Magic number | P6 for the binary form, P3 for the ASCII one |
P6 |
| Width and height | ASCII decimal, whitespace-separated | 800 600 |
| Maxval | Greater than zero and less than 65536 | 255 |
| Sample size | One byte per sample if Maxval is under 256, otherwise two bytes, most significant byte first | 1 byte |
| Raster | Red, green and blue triplets in that order, no padding | 1,440,000 bytes |
| Alpha | None — the format has no transparency at all | — |
| Colour space | Samples are nonlinear, nominally BT.709 primaries with the BT.709 transfer function; sRGB and plain linear values are common variations | Unstated in the file itself |
The arithmetic is exact, which is the useful thing about the format. That example file — an 800 x 600 image at Maxval 255 — measured 1,440,015 bytes: three bytes for each of the 480,000 pixels plus a fifteen-byte header reading P6, 800 600 and 255 with their separating newlines. There is nothing else to account for. A 16-bit PPM doubles the raster, so the same picture at Maxval 65535 comes to just over 720 KB at 400 x 300.
That also explains why you are here: an uncompressed pixel dump is fine as a pipeline intermediate and hopeless as something to email, upload or put on a web page.
P6 files, ASCII P3 files and 16-bit files with a Maxval above 255 are all read; several can be queued and they convert with the same settings..jfif. Files are uploaded over an encrypted connection, processed on our servers and deleted automatically after a few hours — no sign-up, no watermark..jfif Extension.jfif and .jpg name the same kind of file. Both hold a JPEG bitstream; both are decoded by identical code in every browser, operating system and editor. The extension differs only because some Windows software has historically saved JPEGs under the specification's own name rather than the common one.
Worth knowing if you are being precise about it: a JPEG file is not obliged to carry a JFIF APP0 marker segment. Inspecting the marker segments of a file this pipeline produced showed it opening with a metadata segment rather than an APP0 JFIF block, which is the same structure virtually every digital camera writes. Decoders do not care — the marker segment carries pixel-density hints, not anything needed to decode the image — but it does mean "JFIF" here is a naming convention rather than a distinct file structure.
Practically: if any of your software refuses the download, rename it to .jpg and it will open. Or use PPM to JPG, which produces the identical conversion under the conventional extension.
Because PPM stores three bytes per pixel with no compression, its size is arithmetic rather than a guess — which makes it easy to see what the conversion is actually buying.
| Image size | PPM at Maxval 255 | PPM at Maxval 65535 | Typical JPEG at Very High |
|---|---|---|---|
| 800 x 600 | 1.44 MB | 2.88 MB | tens to a few hundred KB, depending on content |
| 1920 x 1080 | 6.22 MB | 12.44 MB | a fraction of a megabyte on most photographs |
| 4096 x 4096 | 50.3 MB | 100.7 MB | typically a few megabytes |
The JPEG column is deliberately vague, and that is the honest answer: an uncompressed format's size depends only on its dimensions, while a compressed one depends on what is in the picture. A photograph of foliage and a plain gradient of the same dimensions produce PPM files of identical size and JPEG files that differ by an order of magnitude.
It depends entirely on what made the file. If the PPM is a photograph, a render or anything with continuous tone, JPEG is an excellent choice and the size saving is enormous. If it is a chart, a plot, a screenshot, a diagram or anything with flat colour areas and hard edges, JPEG will produce visible ringing along those edges and mottling in the flat areas — PPM to PNG is lossless and will usually be smaller as well on that kind of image.
P3 files as well as binary P6?Yes. Both were tested: a P3 file, where every sample is written as an ASCII decimal number, and a P6 file, where samples are raw bytes, convert identically. P3 files are typically three to four times larger than the equivalent P6 for the same picture, since a number like 65535 takes five characters plus a separator where two bytes would do, so if you control what produced the file, P6 is the better output setting.
It is reduced to 8 bits per channel, because that is what baseline JPEG stores. PPM allows a Maxval up to 65535, in which case each sample occupies two bytes with the most significant byte first, and that extra precision has nowhere to go in a JPEG. If the additional depth matters — scientific imaging, high-dynamic-range renders, anything destined for further processing — convert to PPM to TIFF or PPM to PNG instead, both of which store 16 bits per channel.
There is nothing to survive. PPM has no alpha channel — the specification defines each pixel as a triplet of red, green and blue samples and nothing more. If your source pipeline needed transparency it would have written PAM or PNG instead. JPEG has no alpha either, so nothing is lost in the conversion; if you need transparency in the output, the source has to have carried it in a format that supports it.
Because the PPM is not compressed at all. Every pixel costs three bytes flat, whatever the picture contains, so a 12-megapixel image is 36 MB regardless of whether it is a photograph or a plain white rectangle. JPEG transforms blocks of pixels into frequency coefficients and discards the ones the eye is least sensitive to, which on photographic content typically gives a twentieth of the size at high quality. On a flat-colour image the ratio can be far more extreme, but so can the artefacts.
Almost always, and the reason it can go wrong is worth knowing. The Netpbm specification says PPM samples are nonlinear, nominally following the BT.709 transfer function, but it also acknowledges two common variations: files that use sRGB instead, and files that store plain linear values. Nothing inside the file says which one it is. Since sRGB and BT.709 are close enough not to matter visually, files from most sources look correct; a PPM written with genuinely linear samples will come out looking washed out and pale. If that happens, apply the gamma correction in whatever produced the file.
Yes — queue them all and they convert with the same quality and resolution settings, which is normally what a rendered sequence wants. Each one produces its own JPEG. If what you actually want is a video from the sequence rather than a folder of stills, that is a different job: PPM to MP4 assembles them into one clip with a timing control for each frame.
Higher than you would for a photograph. Renders often have perfectly smooth gradients and geometrically clean edges — exactly the two things JPEG handles worst — so artefacts that hide inside photographic noise are plainly visible. Highest or Very High for anything you intend to keep, and check the result at full size before deleting the PPM. If the render contains large flat areas or text, reconsider PNG.
Your PPM files are uploaded over an encrypted connection, processed on our servers, and both the uploads and the resulting JPEGs are deleted automatically after a few hours. Nothing is shared or made public, and there is no sign-up, no watermark and no account required. Because PPM is uncompressed, the upload is usually the slowest part of the job — a 12-megapixel frame is around 36 MB before a single byte of it has been compressed.