Pull out the JPEG preview embedded in a RAW file. No RAW decoder involved
A RAW file records the values the image sensor received, largely as they came off the sensor. Each sensor pixel only carries brightness for one color, so turning it into a viewable image requires an interpolation step called demosaicing. That step is what people mean by RAW conversion.
At the same time, a camera has to show the image on its rear screen every time you take a shot. So most cameras generate a JPEG themselves at capture time and store it inside the RAW file. Depending on the body, that JPEG can be close to full size. For checking a straight-out-of-camera result, or for culling a shoot, it is often all you need.
This tool performs no RAW decoding whatsoever. It does exactly two things.
II*\0 / MM\0*), Panasonic RW2 (IIU\0), Olympus ORF (IIRO and similar), FUJIFILM RAF (FUJIFILMCCD-RAW), Canon CR3 (ISO BMFF with ftyp and crx), and SIGMA X3F (FOVb).FF D8 FF (SOI), then walks the JPEG marker structure from there to see whether it can reach FF D9 (EOI). Only the streams that make it through are treated as real JPEGs, and the pixel dimensions are read from the SOF marker.Because every candidate has to survive that structural walk, a run of bytes that merely happens to look like FF D8 FF inside the sensor data is rejected as a false positive. The bytes you get out are the JPEG exactly as it sits in the file, with no re-encoding and therefore no loss of quality.
Fully decoding RAW requires a library such as LibRaw. LibRaw is offered as a choice between LGPL 2.1 and CDDL 1.0 (checked 2026-07-20, see its COPYRIGHT), and either choice brings obligations. Port it to WebAssembly and serve it from your own site, and those obligations land on you.
Extracting the embedded JPEG only requires reading JPEG marker structure, and needs no RAW decoder. "It does less, but its licensing relationships are simple" is exactly where this tool sits. Our companion article works through that background in detail.
| Situation | Result |
|---|---|
| Bodies that embed a large JPEG preview | You may get something close to full size |
| Bodies or settings that only embed a thumbnail | Only a small image, a few hundred pixels wide |
| Previews stored encrypted or in a proprietary codec | Nothing to extract (this tool does no decryption) |
| Losslessly compressed RAW with no JPEG at all | Nothing to extract |
The tool lists every preview it finds, with its real dimensions and size. If it finds nothing, it says so. It makes no guarantee that a given camera model will always yield a preview, so please try it with your own files.
No. Parsing and extraction happen entirely in JavaScript in your browser. The file you choose is never sent to or stored on a server. RAW files are often tens of megabytes, so this approach also avoids a large upload.
No. This tool does not demosaic the RAW sensor data. Most RAW files contain a JPEG preview that the camera itself generated at capture time, and this tool simply locates that JPEG and pulls out its bytes unchanged. You do not get the real benefit of RAW, such as adjusting white balance or exposure after the fact.
It depends on the camera and its settings. Some bodies embed a large, near-full-size JPEG, while others only carry a thumbnail a few hundred pixels wide. This tool lists every preview it finds along with its actual pixel dimensions and file size, so you can check before you save anything.
Fully decoding RAW requires a library such as LibRaw, which brings licensing obligations under LGPL 2.1 or CDDL 1.0. Extracting an embedded JPEG only requires reading JPEG marker structure and needs no RAW decoder at all. See the companion article for the licensing details.