Initializing... drag & drop files here
Supports: CR2
A CR2 is Canon's raw capture — a TIFF-structured file holding undemosaiced sensor data that only a raw developer can interpret. A PPM is the opposite extreme: a short text header followed by a flat array of RGB bytes, with no compression, no metadata and no colour management. This conversion exists for pipelines, not for people. It renders the Canon raw into displayable RGB and writes those pixels out in the plainest container the Netpbm family defines, so OpenCV, Pillow, ImageMagick and the Netpbm tools can read them with almost no parsing code. If a person is going to look at the photo, CR2 to PNG or CR2 to TIFF is the better target — this page explains exactly what PPM does and does not carry so you can tell which case you are in.
| Property | Value |
|---|---|
| Full name | Canon Raw version 2 |
| Specification | Canon's own, not publicly published; support in open tools comes from reverse engineering (dcraw, LibRaw, ExifTool, libopenraw) |
| Container | TIFF / IFD structure — a CR2 is, structurally, a TIFF file |
| Raw payload | Sensor mosaic packed with the original lossless JPEG scheme, the same one DNG uses |
| Bit depth | 12- or 14-bit per channel depending on the camera body |
| Introduced | On Canon DSLRs from the mid-2000s, including the EOS-1D Mark II, EOS 20D and EOS 350D / Digital Rebel XT |
| Superseded by | CR3, on Canon bodies released from 2018 onward |
| Native browser support | None |
| Best for | The editable master you keep and re-develop |
| Property | Value |
|---|---|
| Full name | Portable Pixmap, part of the Netpbm format family |
| Specification | The Netpbm PPM specification |
| Magic numbers | P6 for the binary raster form, P3 for the plain ASCII form |
| Header | Magic number, width, height and maximum sample value — nothing else |
| Maxval | Greater than zero and less than 65536; one byte per sample below 256, two bytes at or above it |
| Compression | None whatsoever |
| Transparency | None — PPM has no alpha channel |
| Metadata | No EXIF, no ICC profile, no capture information of any kind |
| Colour | The spec defines samples as ITU-R BT.709 red, green and blue adjusted by the BT.709 gamma transfer function; sRGB and linear variants are common deviations in the wild |
| Relatives | PGM (greyscale), PBM (bilevel), PAM (the extended member with alpha) |
| Best for | Handing raw pixels to code |
.cr2 files onto the page or click "Add Files". This tool accepts .cr2 only, and a batch of Canon raws converts in one pass..ppm, or take a batch as a ZIP. No sign-up and no watermark; files are uploaded over an encrypted connection, processed on our servers, and deleted automatically after a few hours.One real reason: something downstream wants raw pixels and no decoder. A PPM is a header plus a flat RGB array, so reading it correctly takes a few lines of code in any language, with no zlib, no JPEG decoder and no colour-management step to get wrong. That makes it a natural intermediate for computer-vision work, image-processing coursework, custom rendering pipelines and the Netpbm command-line tools themselves. For every other purpose it is the wrong choice — the Netpbm specification itself calls the format "egregiously inefficient". If a human is going to look at the image, use CR2 to PNG or CR2 to JPG.
Only the encoding of the pixel data. P6 is the binary form: after the header, each colour sample is written as raw bytes, which is compact and fast for code to read. P3 writes the same values as plain ASCII decimal numbers separated by whitespace, which you can open in a text editor but which is several times larger and slower to parse. Both carry identical image content, and most toolchains read and write P6 by default.
Not the raw latitude, no — be clear-eyed about that. Converting CR2 to PPM is a render: demosaicing, white balance, exposure and a tone curve are applied to produce displayable RGB, exactly as they would be for a JPEG. What 16-bit (High Precision) buys you is two bytes per sample instead of one, so the rendered tones carry far more precision into whatever processing comes next without banding. It does not hand your code the unprocessed sensor mosaic; for that you would keep working from the CR2 in a raw developer such as RawTherapee.
Exactly as large as the arithmetic says, because nothing is compressed: width × height × 3 bytes at 8-bit, and twice that at 16-bit. A 5472 × 3648 frame — about 20 megapixels, typical of a Canon DSLR — is 5472 × 3648 × 3 ≈ 59.9 MB of pixel data at 8-bit, and roughly 120 MB at 16-bit. Scene content makes no difference at all: a blank white frame and a densely detailed one produce identical file sizes. Downscaling under Image resolution is the only lever that changes it.
No, and that is by design. A PPM header holds the width, height and maximum sample value, and nothing more — there is no EXIF block, no ICC profile and no maker notes. The white balance and exposure decisions are baked into the pixel values during the render, but the fields recording them do not survive. If that metadata has to travel with the image, use CR2 to TIFF, which carries EXIF and ICC profiles that other photo software reads, and keep the CR2 as your record of the capture.
The Netpbm specification says PPM samples are nonlinear values proportional to ITU-R BT.709 red, green and blue, adjusted by the BT.709 gamma transfer function. In practice it also acknowledges two widespread deviations: files that are really sRGB, and files that hold linear, non-gamma-corrected values. Since a PPM carries no ICC profile there is nothing in the file to tell you which convention was used — if your pipeline is colour-critical, decide the convention on your side rather than trusting the container.
It writes a bilevel image — every pixel is either black or white, with no greys and no colour. That is the right choice only for masks, line art or documents headed into an OCR or shape-detection step; on a photograph it throws away essentially all tonal information. For ordinary photographic use stay on 8-bit (Recommended), and choose 16-bit (High Precision) when a later processing stage needs the extra precision.
Not much that a general user has installed — Windows Photos, macOS Preview and web browsers do not display PPM. What does read it: ImageMagick, GIMP, Pillow, OpenCV, the Netpbm utilities themselves, IrfanView and most scientific-imaging toolkits. That short list is the honest test of whether this is the format you want. If you need something a colleague can double-click, convert to CR2 to PNG instead.
Your CR2 is uploaded over an encrypted connection, processed on our servers, and deleted automatically after a few hours. There is no sign-up and no watermark, and files are never shared or made public. Be aware that PPM output is uncompressed, so a full-resolution batch produces very large downloads — plan for the download time as much as the upload.