In short
This is a 100% client-side RAW-to-JPG converter. Drop a.cr2, .nef, .arw,.dng (or CR3 / RAF / RW2 / ORF and friends) and it locates the JPEG the camera embedded inside the file, then hands you that as a downloadable .jpg. It is not a raw developer: it never demosaics the sensor data or re-applies white balance. It surfaces what the camera already rendered — which is exactly why it can run instantly in a browser tab with nothing uploaded.
What's actually inside a RAW file
A camera RAW is two things stacked together. The part everyone talks about is the sensor mosaic — the unprocessed light readings behind a colour-filter array, which a raw developer must demosaic and tone-map into a picture. But every mainstream camera also writes a ready-made JPEG preview into the same file, so it can show the shot on the rear screen and so your operating system can draw a thumbnail without a full raw engine. That embedded JPEG is what this tool extracts.
CR2, NEF, ARW and DNG are all built on the TIFF/EP container: a chain of image file directories (IFDs), and one of them records the preview's byte offset and length in dedicated tags (JPEGInterchangeFormat / JPEGInterchangeFormatLength). The engine reads those tags and slices out the completeFFD8…FFD9 JPEG — no guessing. Canon's newer CR3 and Fujifilm's RAF use different container layouts, so for those the largest embedded JPEG is found by scanning the file for JPEG boundaries. Either way, the browser then decodes that JPEG to confirm its real pixel dimensions before offering the download.
What this can and cannot do — honestly
What you get
The camera's own JPEG, usually at full sensor resolution, saved verbatim as a .jpg — no re-compression, so no generational quality loss. The look matches the in-camera render: the same white balance, contrast and sharpening you saw on the back of the camera.
What you don't get
A developed RAW. There's no exposure recovery, no highlight/shadow latitude, no custom profile — that needs a raw pipeline working from the sensor data. And if a body only embedded a medium-resolution preview (roughly 1600–1920 px on the long edge), that smaller image is the honest ceiling here; the tool flags it when it happens.
This matters because plenty of "RAW converters" quietly do the same embedded-preview trick without telling you, then imply you've developed the file. You haven't, and neither have we — the difference is that we say so. If you need the real editorial headroom of the raw data, keep the original and open it in a raw developer.
Why "no upload" is verifiable, not a slogan
RAW files are large and personal, so this is the whole point: the file is read with the browser's own file APIs and processed on your machine. The page makes no request that carries your data, and the RAW engine chunk is pure TypeScript — no server round-trip, no wasm phone-home. Don't take it on faith: open DevTools, select the Network tab, drop a file, and watch that nothing leaves. It's the same zero-upload principle proven on theno-upload repair page.
If the file looks damaged
A RAW pulled off a failing card, copied over a dropped connection, or cut short mid-write can end up with preview offsets that point past the end of the file, or a scrambled container header. When the tool can't locate a valid embedded JPEG it won't fake a result — it tells you what it found and points you to repair the file first, then come back and convert the recovered version.