From film to finished photograph. Runs natively on macOS and Windows.
English · 한국어 · 日本語 · 简体中文 · Français · Deutsch
Website · Camera scanning guide · FAQ
negaflow develops film scans and camera copies, whether color or black and white, negative or positive. You can organize, develop, and print your photos in one app. Adjustments are saved separately, leaving the original file unchanged.
The develop engine is Chroma Engine. GrainMend repairs dust and scratches. You can import, develop, and export image files without a scanner. Connecting a scanner requires a separate plugin.
Unlike the way the analog revival keeps growing, the analog photography process itself is at a standstill. Unless you print it the analog way, film has to go through a conversion into digital before it finally reaches our eyes.
But that whole process is grinding to a halt. Film labs and processing shops keep disappearing, and support from manufacturers and for their products keeps shrinking.
This project started from the inconveniences I felt working this way and that, and from thinking it would be nice if such a feature existed. Building on what I learned and came to know while using 35mm and medium format film, I developed every last bit of it myself. At first it was a toy project I made things on while using it alone, but by now negaflow has become something more than that.
In the end, what matters most is that it works well, that it's comfortable to use, that it has to be fast, and that it produces results made properly on its own. Independently developed, negaflow runs natively on both macOS and Windows, and I folded in the workflows of film labs and of individuals alike.
Celebrating this summer, the bicentennial of Niépce's first-ever photograph. 25 July 2026.
| macOS | Windows | |
|---|---|---|
| Interface | SwiftUI | WinUI 3 |
| Engine | Swift + Core Image | C++ + Direct3D |
| Color management | ColorSync | Windows ICM |
The two native apps use different languages and implementations but have the same features and produce the same results.
The engine code lives in the Chromabase module on macOS and the Native module on Windows.
There is a way to build both at once (cross-platform), but doing that makes both of them slow and they don't work properly. So I wrote the code again from scratch, in the way that is native to each OS. What is the same and what is not is written here.
Get it from GitHub Releases.
| File | Runs on |
|---|---|
negaflow-1.1.6-mac-universal.pkg |
macOS 14 or later, Apple Silicon and Intel |
negaflow-1.1.6-mac-arm64.pkg |
macOS 14 or later, Apple Silicon only |
negaflow-1.1.6-win-x64.exe |
Windows 11 24H2 or later, x64 |
The Universal PKG works on most Macs. The same page also has the Silicon build, a DMG, and a ZIP. On the first launch you have to open System Settings, go to Privacy and Security, and click Open Anyway once.
The Windows installer installs into your user folder without asking for administrator rights. It isn't signed, so SmartScreen blocks it once. Click More info, then run it. You can uninstall it from Control Panel.
Connecting a scanner requires a separate plugin. For SANE scanners, use negaflow-scanner-sane. It works on both macOS and Windows.
Everything for turning analog film into a finished photograph is in here.
- Film-base measurement and development of color and black-and-white negatives and positives
- Exposure, contrast, curves, HSL, and color grading
- Extra options like sharpening, noise reduction, grain, vignette, and halation
- GrainMend, which restores photos by removing dust and scratches.
- A library with rolls, folders, collections, ratings, stacks, virtual copies, and search by camera, lens, or film
- Presets and copy-paste that carry the develop process, target, tone, color, detail, crop, and orientation together
- JPEG and 16-bit TIFF export, ICC profiles, and records such as camera, lens, and film saved into EXIF
- Seven print layouts, paper previews, photo and ISO paper sizes, and C-print features.
Chroma Engine handles film inversion and development.
Before developing a negative, it measures the film base in an unexposed area. If the automatic measurement is off, use the eyedropper or adjust the RGB values.
The default is MAIN with manual adjustments. Auto tone, auto white balance, auto levels, and auto color only run when you press them.
Other targets are PRINT for output through a printer ICC profile, HS and SP in the minilab family, F135 and HR in the lab-equipment family, and EXPIRED for restoring old film. For output you can pick sRGB, Display P3, Adobe RGB, or an RGB ICC profile of your own.
The order of inversion and color processing is in the Chroma Engine doc.
GrainMend repairs dust, pinholes, scratches, and emulsion damage.
GrainMend RGB is a software approach, so it differs from hardware IR.
Auto sweeps the whole photo. Simple, but there will be false detections.
Guided looks only inside the area you mark. It works best on dust picked up during scanning.
Brush is the tool for painting over spots Auto missed, and clone stamp copies pixels from a position you choose.
Clone stamp is a stamping feature where you pick the texture you want and paint it on yourself.
Auto and Guided fill defects using the surrounding texture, checking its direction and structure first. Mistaking a railing or a tile joint for a scratch and erasing it damages the photo.
Edits stay as layers. You can change the strength, check the mask, and switch each one off or delete it.
GrainMend IR adds detection results from the infrared channel a scanner plugin hands over into the same record.
GrainMend IR uses the scanner's infrared channel (IR), but it is neither an implementation of nor a compatibility mode for Digital ICE, iSRD, or SRDx. How it works and the quality and performance standards are in the GrainMend doc.
- Import image files, or scan with an installed plugin.
- Choose the develop process and set the scan target.
- Adjust color and tone in Chroma Engine.
- Apply GrainMend to the photos that need it.
- Check with the before-and-after view and the histogram, then print or export.
Importing alone does not develop anything. It starts when you pick a process and target for a folder and press Apply, or when you enter the Develop view. There is a separate setting to make it automatic, and the default is off.
What each action does to your original files is laid out as a table in From library to print.
negaflow uses only the resolution, bit depth, scan area, exposure, and IR support reported by the plugin. It does not infer features from a scanner model name, which could enable controls the device does not support.
SANE devices are handled by negaflow-scanner-sane, a separate GPL project. The plugin runs as its own process and the exchange format is JSON. negaflow contains no SANE code and links none.
The bundle includes 15 scanner profiles, built from film I shot myself, with 928 recorded data points.
All of them are realOnly: they were built from real scans, but their accuracy has not been verified against an independent reference. I did not want to write up something unverified as verified. Profiles are selected manually; they are not applied automatically based on a scanner name.
The details are in the film profiles doc.
- Chroma Engine | film base, inversion, color processing and develop order
- GrainMend | defect detection and repair, IR, edit history
- Film profiles | source material analysis and profile generation
- From library to print | import, folder sync, batch develop, print
- Product architecture | app, engine, storage and export structure
- All documentation | six languages
The tools and commands differ per platform. The full procedure is in each doc. macOS needs macOS 14 or later and Xcode 26, Windows needs Windows 11 24H2, Visual Studio 2022, and the .NET 10 SDK. The working rules for the repository are in CONTRIBUTING.md.
negaflow is released under the Apache License 2.0. It is not affiliated with or sponsored by Kodak, Fujifilm, Noritsu, LaserSoft Imaging, or any other trademark holder. Product names identify compatibility or measurement references. The trademark notice has the detail.