Why the footage looks washed out
Nothing is wrong with it. D-Log — and D-Log M on the smaller drones and the Pocket cameras — records a deliberately flat image so that highlights and shadows survive the trip from the sensor to the file. The grey, low-contrast result is the point: it is holding range in reserve.
A screen cannot show that range, so it looks wrong until the footage is mapped back into a normal contrast curve. That mapping is what a Rec.709 conversion LUT does. Rec.709 is the colour standard that ordinary video is delivered in, so "D-Log to Rec.709" is just another way of saying "make this look normal again".
| Term | What it means |
|---|---|
| D-Log | DJI's flat recording profile on the larger drones and cameras |
| D-Log M | The lighter version on Mini and Action models, 8-bit |
| Rec.709 | The colour standard ordinary delivered video uses |
| Conversion LUT | The file that maps one to the other |
Where to get the right LUT
DJI publishes conversion LUTs for its own cameras, and they are the honest starting point: the Mavic, Air, Mini, Avata and Osmo Pocket lines each have their own. Use the one matching the camera that shot the footage — a Mini 4 Pro LUT on Air 3 footage will be close, but close is how skin tones go wrong.
Two things worth knowing before you download anything:
- D-Log and D-Log M are not interchangeable. A clip shot in D-Log M needs the D-Log M conversion. Using the wrong one crushes the shadows.
- The official LUTs are a starting point, not a verdict. A common complaint is that they clamp the darker end harder than necessary. Third-party conversions exist for exactly this reason, and many people end up preferring one.
The part nobody mentions: DJI's .cube files are malformed
This one costs an afternoon if you meet it cold. Some DJI .cube files declare
their size with a tab character rather than a space:
LUT_3D_SIZE 33The specification expects a space. ffmpeg — which sits under a great many video tools, whether or not you ever type its name — rejects the file outright rather than reading past it. The error says the LUT is invalid, which sounds like the download is corrupt, and the natural next step is to download it again.
The file is fine. It just needs the character replaced, or a tool that reads around it. BatchTone repairs them on import without saying anything, because the alternative is a user concluding their LUT is broken.
Converting one clip
Any editor will do this. In DaVinci Resolve you add a LUT to a node on the colour page; in Premiere it goes in the Input LUT slot under Lumetri. Both take about a minute once the project exists.
The problem is that a card is not one clip. It is forty, and they all need the same thing.
Converting the whole card
This is where the tools start to fight you, because they are editors and a card of clips is not an edit.
| Route | What it asks of you |
|---|---|
| DaVinci Resolve | A project, a timeline, clips selected, a LUT applied, a render queue configured |
| Premiere Pro | Select the bin, Modify → Interpret Footage → Color, then batch export — and the export settings fight back |
| ffmpeg | A loop in a terminal, no preview, and you learn what it did after it finishes |
| One at a time | Ten minutes a clip, forty clips |
All of these work. What none of them do is let you see the conversion on each clip before committing, which matters because the same LUT does not suit every shot on the card. The clip shot into the sun at the end of the flight takes the conversion differently from the one shot in flat overcast ten minutes earlier.
A strength dial is the missing control
The conversion is usually right at full strength, and occasionally too much. A LUT applied at 70% rather than 100% is the difference between a sky that holds and a sky that goes to a solid block.
Editors express this as opacity on a node or a layer. ffmpeg has no opacity on
its lut3d filter at all — you have to split the stream, grade one copy and
blend it back over the original:
[0:v]split[base][grade];
[grade]lut3d=file=dlog_rec709.cube[graded];
[base][graded]blend=all_mode=normal:all_opacity=0.7That works, and it is not something anyone should have to write to make one sunset look right.
How BatchTone does it
Drop the folder in, pick the conversion LUT, and every clip gets it. A frame is pulled from each clip and previewed with the LUT applied, so you judge the conversion on the actual footage. Anything that needs less takes the slider down, and the rest of the card stays where it was.
- The audio is copied across untouched rather than re-encoded.
- Encoding uses the Mac's own hardware encoder, so a card does not become an overnight job.
- Original files are never written to; exports land in a folder you choose.
- Malformed DJI
.cubefiles are repaired on the way in.
There is a seven-day trial with everything unlocked, which is the only sensible way to find out whether it reads your camera's files.
Common questions
Which LUT do I use for D-Log M?
The D-Log M conversion for your specific model. The D-Log version is not a substitute; it will darken the image more than the footage can take.
Does converting lose quality?
The conversion itself is a colour mapping and costs nothing. What costs quality is re-encoding, which is why it is worth exporting once at a sensible bitrate rather than converting, exporting, editing and exporting again.
Can I convert and colour grade in one pass?
Yes, and it is common: the conversion LUT first, a creative look second. If you are doing both, apply the conversion to the whole card, then grade the handful of clips that actually make the edit.
What about Sony S-Log and Canon C-Log?
Identical situation, different file. Every manufacturer's flat profile needs its own conversion, and every one of them is a batch job rather than an edit. Applying a LUT to a folder of video works the same way regardless of which camera wrote the files.