Picture Batch RAW to JPEG

RAW to JPEG

Every manufacturer invented its own raw format, most of them are undocumented, and the result is that a folder of photographs can be unopenable on any machine but the one with the right software installed. This page decodes them — Canon, Nikon, Sony, Fujifilm, Olympus, Panasonic, Pentax, Leica, Samsung, Hasselblad, Phase One, Sigma and a long tail besides — and writes ordinary JPEGs, with nothing leaving your device.

Drop Camera raw images here

Camera raw files — or any of PNG, JPEG, WebP, AVIF, BMP, ICO, TIFF, GIF or camera raw (CR2, CR3, NEF, ARW, DNG, RAF, ORF, RW2). Everything runs on this device.

Your images never leave this device. They are decoded and re-encoded by your own browser, and the security policy on every page blocks this site from sending them anywhere.

Lossy, no transparency, opens absolutely everywhere, small for photographs.

The standard range for photographs. Hard to distinguish from the original.

Size

Images keep their original dimensions.

JPEG cannot store transparency. Nothing in the queue currently has transparent pixels, so this has no effect yet.

Metadata

Exif is carried across where both formats can hold it. Nothing currently in the queue has any.

Sensor detail

Every pixel gets its two missing colours interpolated from its neighbours, at the full sensor resolution. The slower and more detailed option.

White balance

The value your camera recorded when the shutter fired — what you saw on the back of the camera.

Camera, lens, exposure and capture time are written into the JPEG when those fields are present. The file details show whether GPS data exists, but coordinates are deliberately not written, and colour comes out as sRGB.

What happens to your image

Expect a much smaller file than a lossless source, at the cost of some detail.

What is preserved and what is lost converting Camera raw to JPEG
PropertyOutcome
Transparency Preserved: Camera raw images have no transparency to lose.
Image quality Partly preserved: JPEG is lossy: the image is re-compressed and detail is discarded to make the file smaller. The quality control decides how much.
Colour Partly preserved: Converted to sRGB. Decoding an image colour-manages it into the browser's own space, so the output is sRGB and is left untagged, which every viewer reads as sRGB. A wide-gamut source is reported before conversion.
Exif metadata Preserved: Carried across if you leave metadata switched on, or removed completely if you switch it off. Camera, date and any location tag travel together.
Orientation Preserved: Applied to the pixels, and the tag is reset to upright afterwards so nothing rotates the image a second time.

What a raw file is, and why converting one is real work

A digital sensor is a grid of light meters with a coloured filter over each one — usually red, green or blue in a repeating pattern. Every photosite records the brightness of one colour, and a raw file is that: one number per photosite, plus the calibration data needed to make sense of them.

Producing an image means filling in the two colours each pixel did not measure, by interpolating from its neighbours. That step is called demosaicing, and it is most of the work: for a 24-megapixel file it is 48 million interpolations. Then the black level has to be subtracted, the channels scaled by the white balance, the sensor's primaries mapped through a colour matrix measured for that specific camera model, and a tone curve applied.

That last part is why raw conversion cannot be done by reading a specification. The colour matrices were measured from real cameras, one model at a time, and the library used here carries them for well over a thousand bodies.

What this page will and will not do

It will decode the sensor data, apply the white balance your camera recorded, and write a JPEG, PNG or WebP at full or half sensor resolution, in a batch, with real progress and a manifest.

It will not develop your photograph. There are no exposure or shadow sliders, no lens corrections, no noise reduction beyond the decoder's defaults, no manufacturer picture styles and no local adjustments. The output is a faithful, neutral rendering of what the sensor recorded, which is the right starting point and not a finished photograph.

It will not silently substitute, either. Where a file's sensor data cannot be decoded, the camera's own embedded preview is offered instead and labelled as exactly that — in the row, in the result and in the manifest.

The formats with their own page, and the rest

Canon CR2 and CR3, Nikon NEF, Sony ARW, Adobe DNG, Fujifilm RAF, Olympus ORF and Panasonic RW2 each have a page of their own, because each has something specific worth saying about it and most people arrive knowing their extension rather than the word "raw".

The catch-all also accepts Pentax PEF, Samsung SRW, Minolta MRW, Sigma X3F, Hasselblad 3FR, Phase One IIQ, Leaf MOS, Mamiya MEF, Kodak DCR and KDC, Epson ERF, Leica RWL, Canon CRW and GPR. Actual decoding still depends on the camera model and compression mode being known to this LibRaw build.

If a file is not recognised, the message says what it found rather than "unsupported file". Identification comes from the contents, so a renamed file is identified correctly and told so.

Why doing this locally matters here more than usual

Raw files are large, and they are the originals. Uploading a card full of them to a free web service means handing over the highest-quality copies of your photographs, with their capture times and often their locations attached, to somebody whose retention policy you have not read.

Nothing is uploaded here. There is no API route, server action or server-side file handling in this application. The security policy blocks cross-origin connections, and browser tests assert that a full conversion produces no file request or cross-origin request, then repeat the conversion with the network switched off.

If something goes wrong

A file from a brand-new camera is not recognised.

Raw support is per-model, and a body released after this decoder was built cannot be in it.

What to do: Adobe's DNG Converter is free and can often turn a supported proprietary raw into a more widely readable DNG. Convert that DNG here.

Converting a large batch is slow.

Demosaicing is genuinely expensive, and Fujifilm X-Trans files are several times more expensive than the rest because their filter array needs a different algorithm.

What to do: Set the sensor detail to half resolution, which skips interpolation entirely and is several times faster. Or start the batch and leave it — progress is real, and you can cancel any file at any point.

The browser tab becomes unresponsive or reloads.

Memory. Several very large raw files being decoded at once can exceed what a tab is allowed, and the browser resolves that by discarding the tab.

What to do: This is what the memory estimates and the automatic drop to half resolution are for, and they make it rare. If it happens, convert fewer files at once and use half resolution.

Questions

Which raw formats are supported?

CR2, CR3, NEF, NRW, ARW, SR2, DNG, RAF, ORF, RW2, RWL, PEF, SRW, MRW, X3F, 3FR, IIQ, MOS, MEF, DCR, KDC, ERF, CRW and GPR, subject to the camera model being known to the decoder. Every file is identified from its contents, so the extension does not have to be right.

Is this as good as Lightroom or Capture One?

It uses LibRaw's measured camera matrices and standard colour processing, but its rendering can differ visibly from Lightroom, Capture One or the camera JPEG. Those are full raw developers with exposure control, lens profiles, noise reduction and local editing; this is a local batch converter.

Why is my converted image flatter than the camera preview?

Because the camera preview is a JPEG your camera made with its own contrast, saturation and sharpening applied. What you get here is the sensor data with a standard tone curve — less punchy, and closer to what was actually recorded.

Can I convert to something other than JPEG?

Yes — PNG, WebP and AVIF as well, plus BMP if something demands it. PNG is lossless from the decoder onwards. AVIF gives the smallest files but takes several seconds per image on top of the decode.

Related