In short
This is a 100% client-side RAW viewer. Drop a .cr2,.nef, .arw, .dng (or CR3 / RAF / RW2 / ORF and friends) and it renders the camera's embedded JPEG preview on the page, along with the container type, preview source and real pixel dimensions. It is a viewer, not a raw developer: it shows what the camera already rendered rather than demosaicing the sensor data — which is what lets it work in an ordinary browser tab with nothing uploaded.
How you can preview a RAW with no editor
A camera RAW carries the unprocessed sensor mosaic — which needs a raw pipeline to turn into a picture — but it also carries a ready-made JPEG preview the camera writes for its rear screen and for fast thumbnails. This viewer reads that embedded JPEG and draws it, so you get an instant, accurate look at the frame without any raw-processing software.
CR2, NEF, ARW and DNG are TIFF/EP containers: chains of image file directories where a tag pair (JPEGInterchangeFormat / JPEGInterchangeFormatLength) records the preview's exact byte offset and length. The engine reads those tags and extracts the complete FFD8…FFD9 JPEG, then the browser decodes it to render it and report its true size. Canon's CR3 and Fujifilm's RAF use different container layouts, so for those the largest embedded JPEG is located by scanning the bytes. Everything — parsing, slicing and decoding — happens on your device.
What you're really looking at — honestly
An accurate preview
The camera's own JPEG, typically at full sensor resolution, showing the frame exactly as the camera rendered it — the same white balance, contrast and sharpening baked in at capture. Perfect for triaging a shoot, confirming a file, or checking a card.
Not a developed RAW
You're not seeing the latitude of the raw data — no recovered highlights, no re-profiled colour. And if a body embedded only a medium-resolution preview (roughly 1600–1920 px on the long edge), that's the size you'll see; the viewer states the real dimensions and flags the medium-res case rather than pretending it's full size.
Why "no upload" is verifiable, not a slogan
RAW files are big and personal, which is exactly why viewing them shouldn't mean handing them to a server. Here the file is read with the browser's file APIs and rendered on your machine; the page makes no request that carries your data, and the RAW engine is pure TypeScript with no server round-trip. Prove it yourself: open DevTools, choose the Network tab, drop a file, and watch nothing leave. It's the same zero-upload principle demonstrated on theno-upload repair page.
If the RAW won't render
A file copied off a failing card or cut short mid-write can end up with preview offsets that point past the end of the data, or a damaged container header. When the viewer can't find a valid embedded JPEG it won't invent one — it tells you what it saw and links you torepair the file first, after which you can come back and view the recovered image.