Skip to content

Repository files navigation

Uncoded icon — six 6-bit code pits, one red

Uncoded

Truthful lens metadata for Leica M shooters using third-party glass.


Leica M cameras identify lenses by a 6-bit code on the bayonet mount. Third-party lenses (Voigtländer, Zeiss, TTArtisan, 7Artisans, …) have no official code, so photographers borrow a Leica one — and from then on every DNG claims it was shot with a Leica lens, and Lightroom applies the wrong correction profile.

Uncoded is a native macOS app that detects those lies and rewrites the metadata with the truth.

Screenshots

Scan — the contact sheet Add a lens + its code
Scan view: contact sheet of DNGs with detected 6-bit codes and an unclaimed-code banner Add Lens sheet: Lightroom profile picker beside the ranked 6-bit code picker

6-Bit Codes: the full code table as pit-pattern cards, mapped lenses highlighted

What it does

  • Scan a folder of DNGs and see it as a contact sheet — thumbnails from the embedded previews, each frame stamped with the 6-bit code it claims, drawn as the physical pit pattern from the flange.
  • Your lenses, coded — add a lens in one step: pick it from the Adobe lens-correction profiles already installed with Lightroom / Camera Raw on your Mac, and pick the code it wears (the plausible borrow is suggested first). The full community 6-bit code table ships in the app.
  • Manual overrides — mark frames grease-pencil style and assign any lens directly: for adapted glass with no code, or days when one borrowed code served two lenses.
  • Fix — one click rewrites lens make, model, focal length, and the Adobe lens-correction profile (crs:LensProfile*) so Lightroom shows your real lens with the right profile.

Built to be trusted with your raws

  • No exiftool, no full-file rewrite. A native TIFF/DNG engine reads only the few KB of metadata it needs (~1.5 ms per file) and writes in place: values are patched where they sit or appended at end-of-file with the directory entry re-pointed. Image data is never touched.
  • Every fix is undoable. A byte-level journal records exactly what changed; Revert Fix restores the file byte-for-byte (verified by hash in the test suite). Journals survive app restarts. Revert refuses if modified metadata no longer matches the journal, or an older journal lacks the appended bytes needed to verify it safely.
  • .bak copies (Settings, on by default): a one-time pristine sibling copy before the first fix ever touches a file.
  • The writer is validated against ExifTool's field readout and exiftool -validate on real Leica M11 files.

Requirements

  • macOS 14 or later
  • For the lens-profile picker: Adobe Lightroom / Camera Raw installed (Uncoded reads /Library/Application Support/Adobe/CameraRaw/LensProfiles)

Install

Grab the .dmg from Releases and drag Uncoded to Applications. Builds are currently unsigned (no paid Apple Developer account yet), so macOS warns on first launch:

  • macOS 15+: open the app once (click Done on the warning), then System Settings → Privacy & Security → "Uncoded" was blocked → Open Anyway. Needed only once.
  • macOS 13/14: right-click the app → OpenOpen.
  • Terminal alternative: xattr -d com.apple.quarantine /Applications/Uncoded.app

Every DMG is built by GitHub Actions from this repo's tagged source — the exact build is inspectable in the Actions tab.

Build from source

brew install xcodegen
xcodegen generate
xcodebuild -scheme Uncoded -configuration Release build

Tests: xcodebuild -scheme Uncoded test

Lightroom notes

  • Lightroom reads a file's develop settings (including the lens profile) at import. For photos already in a catalog, use Metadata → Read Metadata from File after fixing.
  • Fix first, import after, and everything just works.

Heritage

Uncoded is the native successor of the fix_6bit_exif CLI tool.

Credits

  • The community-maintained Leica M 6-bit lens code spreadsheet — the code table bundled with the app is based on it.
  • ExifTool by Phil Harvey — the reference against which Uncoded's native metadata engine is validated.
  • Adobe lens correction profiles are read from your local Lightroom / Camera Raw installation.

License

GPL-3.0.

Not affiliated with Leica Camera AG or Adobe Inc. Leica is a trademark of Leica Camera AG; Lightroom and Camera Raw are trademarks of Adobe Inc.

About

Truthful lens metadata for Leica M shooters using third-party glass.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages