DNG (Adobe Digital Negative)
Adobe's open RAW format. TIFF-based — same parser as TIFF — with raw sensor data and colour-calibration tags.
- Extensions
- .dng
- MIME
- image/x-adobe-dng
- Strip
- Lossless
- Updated
- 2026-05-27
DNG is Adobe’s vendor-neutral container for camera RAW files. iPhone ProRAW writes DNG. Android’s “RAW” mode writes DNG. Leica, Hasselblad, Pentax, and Sigma ship DNG natively. Even when shooting CR3 / ARW / NEF, Adobe Lightroom converts to DNG on import for archival workflows.
Mechanically, DNG is TIFF with extra tags — same IFD-based file structure, same byte-order quirks, processed by the same handler in Tracemute. The interesting part is what DNG-specific tags carry, and which of those leak device identity.
What it carries
Everything TIFF carries (Make, Model, Software, DateTime, Artist, Copyright, ExifIFD, GPSIFD, XMP, MakerNote), plus DNG-specific tags many of which are RAW-processing-essential:
- 0xC621 ColorMatrix1 / 0xC622 ColorMatrix2 — XYZ-to-camera-sensor colour matrices, per illuminant. Required to correctly interpret RAW sensor values.
- 0xC627 AnalogBalance / 0xC628 AsShotNeutral — white-balance state at capture.
- 0xC628 BaselineExposure / 0xC62B BaselineNoise / 0xC62C BaselineSharpness — per-camera-profile baseline values.
- 0xC61A BlackLevel / 0xC61D WhiteLevel — sensor reference values.
- 0xC68F AsShotICCProfile / 0xC690 AsShotPreProfileMatrix — embedded ICC profile chain.
- 0xC6D2 OpcodeList1..0xC6D4 OpcodeList3 — pixel-correction opcodes applied by the RAW processor.
And the DNG-specific identifying tags that Tracemute drops:
- 0xC614 UniqueCameraModel — body class identifier, often more precise than “Make/Model” (e.g. distinguishes camera firmware revisions).
- 0xC615 LocalizedCameraModel — localised display name.
- 0xC68B OriginalRawFileName / 0xC68C OriginalRawFileData — the original camera RAW filename, often including the body serial number embedded in the path.
- 0xC6F3 CameraCalibrationSignature / 0xC6F4 ProfileCalibrationSignature — per-body calibration fingerprints.
- 0xC7A1 CameraSerialNumber — explicit body serial number.
What’s unique
DNG’s identifying surface is larger than TIFF’s because of the calibration-signature tags. Two Lightroom-exported DNGs from the same camera body have the same CameraCalibrationSignature even if every other piece of metadata has been scrubbed — that’s enough to link photo sets across years of edits.
DNG also frequently puts the primary image data in a SubIFD (referenced by tag 0x014A in IFD0) while IFD0 holds a smaller thumbnail. The strip has to recurse into the SubIFD and rewrite both — dropping metadata in just IFD0 would leave the full image’s metadata intact.
What Tracemute does
The same handler as TIFF, invoked with outputMime: image/x-adobe-dng:
- Parse the TIFF header.
- Walk IFD0 + every SubIFD it references.
- Drop all identifying TIFF tags (Make, Model, Software, DateTime, Artist, Copyright, ExifIFD, GPSIFD, MakerNote, XMP, IPTC) and the identifying DNG-specific tags (UniqueCameraModel, LocalizedCameraModel, OriginalRawFileName, OriginalRawFileData, CameraCalibrationSignature, ProfileCalibrationSignature, CameraSerialNumber).
- Keep every DNG colour-calibration tag (ColorMatrix1/2, ForwardMatrix1/2, AnalogBalance, AsShotNeutral, baseline exposure/noise/sharpness, OpcodeList1/2/3, ProfileToneCurve, calibration illuminants) so the cleaned file still processes correctly in Lightroom, Camera Raw, darktable, RawTherapee, etc.
- Patch StripOffsets / TileOffsets / SubIFDs pointers to the new positions. Copy raw sensor data verbatim.
What survives
Every byte of the RAW sensor data. Every colour-calibration matrix. The ICC profile. The structural TIFF tags every DNG reader requires. The DNGVersion / DNGBackwardVersion declarations.
What does NOT survive: anything that could link the file back to a specific camera body, a specific edit session, or a specific shoot. The cleaned DNG opens cleanly in any RAW processor — just without “this file came from body serial XYZ123.”
Where this format shows up