◆ Open source · density-domain

Open-source
film scan editor.

OpenEnlarge inverts film scans through real film-and-paper chemistry for authentic results in one fast workflow. Free and open source.

Free · MIT licensed · macOS, Windows & Linux
OpenEnlarge develop view
GitHub Medium Xiaohongshu Instagram X Reddit Discord
BaBoBeBo@maradev

“OpenEnlarge has the best designed film base color picker UI”

Jose G.@theoshoots

“The color is really really legit.”

Kevin P.@jiahao.film

“It's so much faster than LR.”

Suki@lin.xy

“Finally an inversion that respects the actual film base.”

Zhang Wei@zhangwei

“Batch-developed a whole roll in one pass. Unreal.”

Yasushi@chenmei

“Open source and it out-colors my paid tools.”

Workflow

From scan to finished, in four steps.

OpenEnlarge library and import
01 · Import

Bring in everything.

Import a folder of scans or tether straight to your scanner — new frames auto-develop the moment they land. If a camera can shoot it, OpenEnlarge can read it.

Fuji RAF Panasonic RW2 Nikon NEF Sony ARW Canon CR3 Hasselblad 3FR DNG 16-bit TIFF JPEG PNG ⊙ Tethered shooting
02 · Develop

Edit the whole roll at once.

Lay the roll out as an old-school contact sheet and push density, tone and color across every frame in one pass — one calibration, one look, the whole set developed together.

Contact sheet Whole-roll tone Shared density range Per-roll film base Print rebate
OpenEnlarge develop contact sheet
OpenEnlarge fine-tune view
03 · Fine-tune

Then perfect each frame.

Drop into any single image with the full develop toolkit — curves, color and exposure live — plus a stack of AI tools to finish, clean and enlarge.

Tonal curves Color wheels Copy / paste look LR hotkeys Tone Matching ✦ AI Enhance ✦ Upscale 4K / 8K ✦ AI Dust & Hair Removal HDR preview
04 · Export

Export, exactly how you need it.

Select the keepers and batch them out in one shot — pick a format, set quality, cap the file size, and apply a shared crop across the whole roll.

16-bit TIFF PNG JPEG Quality control Max file size Batch crop
OpenEnlarge export dialog
How it works

Density first, aesthetics second.

Density inversionfilm-core
print = E · (1 + b − (I / D_min)^(1/D_max))Kodak Cineon
01

Decode

Your scan is decoded to linear RGB — the light the scanner actually measured.

02

Invert in density

Each channel's density is restored against the measured film base, then printed back to a positive — where naive flips go wrong.

03

Develop

Creative finishing — curves, color, exposure — on a faithful base.

Gallery

Created with OpenEnlarge.

Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge
Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge Made with OpenEnlarge
Get involved

Be part of what's next.

Jump into Discord to swap scans and steer the build, open an issue with what you need, or read where it's all headed.

Download

Get OpenEnlarge

Free and open source. macOS, Windows & Linux.