negaflow app icon

negaflow

Camera or scanner capture,
development and print in one analog-film workflow.

macOS 14.0 or later · Apple Silicon and Intel · Apache-2.0

The negaflow develop workspace on macOS, inverting and grading a film negative

negaflow imports film captured with a scanner or digital camera and develops it on macOS. Its development engine is called Chroma Engine, and its dust and scratch restoration system is called GrainMend. The entire process is developed independently and brings film development, adjustment, and output into one app.

Development engine

Chroma Engine

Chroma Engine is the film inversion and development engine in the Chromabase module.

Read more

35mm colour negative developed with the standard target — a street with a Fujicolor sign The same 35mm colour negative frame developed with the Noritsu HS-1800 look The same 35mm colour negative frame developed with the Fujifilm Frontier SP-3000 look The same 35mm colour negative frame developed with the Pakon F-135 Plus look The same 35mm colour negative frame developed with the Kodak Professional HR 500 Plus look 35mm colour negative developed with the standard target — a street with a Fujicolor sign The same 35mm colour negative frame developed with the Noritsu HS-1800 look The same 35mm colour negative frame developed with the Fujifilm Frontier SP-3000 look The same 35mm colour negative frame developed with the Pakon F-135 Plus look The same 35mm colour negative frame developed with the Kodak Professional HR 500 Plus look MAIN Auto-corrected

Standard development

FILM BASE Automatic / Manual

The film base is measured automatically with no setup, and the negative is inverted to a positive. For manual control, select an unexposed area with the eyedropper or enter RGB values directly.

Seven Minilab & Development Target Looks

MAINGeneral development
PRINTOutput using a printer ICC profile
HSNoritsu HS-1800
SPFujifilm Frontier SP-3000
F135Pakon F-135 Plus
HRKodak Professional HR 500 Plus
EXPIREDRecovery for old film
PROFILES15 bundled scanner profiles · realOnly

The default is MAIN with manual adjustments. Auto Tone, Auto White Balance, Auto Levels, and Auto Color are applied only when you run them.

Output can use sRGB, Display P3, Adobe RGB, or a custom RGB ICC profile.

HS, SP, F135, and HR target well-known film scanners long used in professional lab workflows.

Model names identify development targets only. They do not imply implementation of a manufacturer’s software or internal algorithms, a compatibility mode, affiliation, or endorsement.

Defect restoration

GrainMend

GrainMend RGB is an independently developed software method that detects and restores dust, pinholes, scratches, and emulsion damage without an infrared channel.

Read more

GrainMend RGB

GrainMend RGB Defect Restoration

Guided, Brush and Auto all run locally on the Mac. Processing time depends on image size, the selected area and the Mac.

After GrainMend — the same film scan with the dust and scratches repaired Before GrainMend — a film scan with dust and scratches still on it
Before After

negaflow warns you when false detections become likely.

Auto

Finds and restores defects across the photograph.

Guided

Finds defects inside an area you specify.

Brush

Paints the area to restore directly.

Clone Stamp

Copies pixels from a selected source to another location.

Detection from the RGB image

GrainMend RGB finds defect candidates without an infrared channel. Complex patterns can produce false detections, so the mask and restored result remain reviewable.

Review and correct it yourself

Inspect the detection mask and restored result yourself, then correct the affected area as needed.

Non-destructive layers

Each GrainMend RGB layer can be adjusted in strength, inspected as a mask, disabled, or deleted separately.

False-detection warning

GrainMend alerts the user when false-detected areas are likely to occur.

GrainMend IR

GrainMend IR is an optional path when the scanner plugin provides an infrared channel. Its detection result is added to the same edit history as GrainMend RGB.

GrainMend RGB is an independently developed software method, separate from hardware infrared cleaning. GrainMend IR uses the scanner’s infrared channel; it is not an implementation or compatibility mode of Digital ICE, iSRD, or SRDx.

Print & Export

Print layouts and output

What used to happen on paper in a darkroom happens on screen here. Set the paper, the margins and the layout, and the print file comes out looking like that.

Read more

Contact sheet layout in the negaflow print workspace — a whole roll on one sheet Single-photo layout in the negaflow print workspace, one frame with margins Cyanotype layout in the negaflow print workspace, printed in blue Glass plate layout in the negaflow print workspace Gelatin silver layout in the negaflow print workspace, printed in black and white

Starts as a black sheet, 6 columns × 7 rows, 2 mm gaps.

Cyanotype, glass plate and gelatin silver are made to look the part. They are not measured from real chemistry, plates or paper.

Printer ICC Profile Matching

Supports sRGB, Display P3, Adobe RGB, and custom RGB printer ICC profiles.

Non-destructive Print Layouts

Borders are set the way you would set them in a darkroom, and the page renders to high-resolution 16-bit TIFF.

Color Mathematics

32-bit Float Linear Pipeline

Inversion and tone are computed in 32-bit float linear space prior to gamma encoding, minimising clipping and tone degradation.

Dmin Density Inversion

Density D = log₁₀(Dmin/T) is calculated from linear transmittance and unexposed base measurements.

Stretched Exponential Curve

Applies a dedicated print response curve with an exact inverse function derived from four reference points.

Decoupled Processing

Film emulsion properties, scan light source, and scanner target looks are evaluated in separate stages.

Output Color Space Management

Converts to sRGB, Display P3, Adobe RGB, or custom RGB Printer ICC profiles at the final display and export stages.

48-bit RGB (16-bit per Channel) Precision

Supports full 48-bit RGB (16-bit R/G/B, 281 trillion colors) input and output, which keeps posterization and banding down through heavy tonal adjustment.

Lossless Archival Output

Pairs 48-bit I/O with 32-bit float linear processing, leaving headroom for film archiving and large prints.

Capture Workflow

Digital Capture & Scanner Import Paths

Digital Camera

Imports RAW/TIFF files. Decouples backlight color temperature from unexposed base for even inversion.

Scanner

Connects to SANE scanners through the out-of-process negaflow-scanner-sane plug-in. It imports 16-bit TIFF only when the device and backend support it and the plug-in verifies the result.

Film profiles

Film Stock Calibration Dataset

Read more

928 Image observations
15 Bundled scanner profiles

The bundle contains 15 scanner profiles made from film material I photographed myself. The profiles record 928 image observations, and every profile is currently marked realOnly.

realOnly identifies a profile built from real scans and still under active development and refinement. More scan material from a wider range of films and equipment will be added, and the profiles will continue to expand and improve with it.

Profiles are never applied from the scanner name alone; the user selects one explicitly. SHA-256 hashes are provided for both the files and the list.

928 is the sum of the observations in each profile, not 928 distinct photographs. The same film can be counted for more than one scanner. The scans were reviewed directly, files with false detections were excluded, and the profiles were built from those measurements.

Comparison

A free, open-source film inversion app for macOS

negaflow is a standalone macOS app for film inversion, development, defect repair, print and export. The table below describes negaflow’s current features. Features, prices and file handling in Negative Lab Pro, FilmLab, Negbase, SilverFast, VueScan and other products vary by version.

Read more

Feature negaflow Other film tools · check current product docs
Price and licence Free, Apache-2.0 open source. No subscription, no trial limit, source readable Free, one-time purchase and subscription options vary by product
How it runs Standalone macOS app: import, develop, repair, print and export in one place May be a plug-in, standalone app or scanner application
Film base (Orange Mask) Measurement Spatial analysis (FilmBaseEstimator), eyedropper, direct RGB input Film-base handling varies by product; check its current documentation
Defect Restoration (GrainMend) RGB restoration with reviewable masks; optional IR when the plug-in provides it RGB restoration and hardware IR are different methods; support varies by product
Original File & Metadata Integrity Non-destructive, BagIt archive specification, SHA-256 validation Original and sidecar handling varies; check before use
Roll-level EXIF Metadata Automatic composite EXIF export for camera, lens, film, exposure Metadata fields and export behaviour vary by product
macOS Native Acceleration Metal & Core Image 32-bit floating-point pipeline Processing and hardware acceleration vary by platform and product

Guide

Scanning film with a digital camera

A camera-scanning setup can be fast and detailed when the lens, alignment and film flatness are right. Here is a practical route from the rig to the raw files.

Read more

The rig

Use a camera that shoots raw, a macro lens suited to the required reproduction ratio, a film holder, a light pad, and a copy stand or tripod. Extension tubes and bellows can work; check corner sharpness and field flatness at the actual capture ratio.

Light

Use an even, diffused light source. CRI 95 or higher and 5000–5500K are common starting points, not a guarantee of colour accuracy. Check for flicker or banding before the session and adjust shutter speed if needed.

Alignment

The sensor plane has to be parallel to the film, or only part of the frame is in focus. The reliable way: put a small mirror on the light pad and adjust the camera until the reflection of the lens sits dead centre in live view. A spirit level only tells you anything if the tripod column is truly vertical.

Flatness

Curled film moves the edges out of focus. Start with a film holder. If glass is needed, test the actual film for reflections and Newton rings.

Capture settings

Start at base ISO and test the lens for its sharpest aperture; f/5.6–f/8 is a common starting range. Focus manually with magnified live view, use a remote release or timer, shoot raw, and keep the bright end of the histogram from clipping.

Developing

Open the raw files in negaflow and the film base is found for you: it groups connected regions in the brightness distribution and drops sprocket holes, the holder and bare backlight. If the result is off, sample unexposed film with the eyedropper or type the RGB in.

Guide

How to invert a film negative

There is a reason the colour goes muddy when you flip a curve. Three separate things have to happen: the orange mask is divided out, the inversion runs in linear light, and a print curve goes on top.

Read more

1. Measure the film base (Dmin)

The orange mask is a filter over the whole frame. Measure it on unexposed film rather than inside the picture, or that frame's own colour ends up in the mask. negaflow finds it by grouping connected regions in the brightness distribution; the eyedropper and direct RGB entry are there too.

2. Divide, do not subtract

The mask is a transmission, so it divides out in linear light. D = log₁₀(Dmin/T). Subtract it from a gamma-encoded 8-bit image instead and the channels come apart — that is the crossed colour everyone knows.

3. Invert in linear

Invert after gamma and the shadows are the first thing to block up. negaflow finishes the inversion and the tone work in 32-bit float linear, then hands off to the output colour space.

4. Print response curve

A negative has no black and no white of its own. Photographic paper decided those. A curve anchored on black, 18% grey and white is what makes the result read as a photograph.

5. Keep the roll together

One base measurement covers a roll shot under one light. Set it per frame and the tone wanders across the roll. Carry one value through all of them and correct exposure frame by frame.

6. Pick a look, then export

Development targets are selectable looks, not copies of a lab scanner’s software or output. Export 16-bit TIFF for further editing, or JPEG with the roll information written to EXIF for a ready-to-use file.

Pro Pipeline & Productivity

Lab Workflows for Batch Digitizing

Batch Copy & Paste Scope

Copy only the development settings you choose, then fine-tune individual values from the keyboard.

Dedicated Negative, Slide & B&W Pipelines

Colour negative, positive slide, black-and-white negative and positive each use a film-type-specific path.

Separate film-base and light-source settings

Film-base measurements and the selected light-source profile are recorded separately. Automatic measurement can be replaced with the eyedropper or direct RGB values.

Roll-wide adjustment workflow

Copy selected settings from one frame to others in the roll, then adjust individual frames where needed.

Advanced Precision & Library Tools

Archival & Library Precision Control

Offline Media Thumbnail & Preview

Inspect thumbnails and preview renders immediately even when external drives or NAS storage are disconnected.

Library search and filters

Search file names, folders, rolls, film, camera, lens, keywords and dates, then filter by rating and workflow state.

IT8 measurement reports

Record RGB, Lab and DeltaE00 from a pinned IT8.7/1 image and reference file. Real scanner accuracy still requires that device and its matching physical target to be measured.

Clarity and texture controls

Adjust clarity, sharpening, noise reduction and film grain separately.

Black-and-white toning

Adjust shadow hue, highlight hue and strength for sepia and selenium toning.

Capability-driven scanner controls

Source, resolution, bit depth, scan area, exposure and IR controls appear only when the plug-in reports them.

Custom Export Templates & Presets

Configure export presets and dynamic file naming rules such as {film}_{date}_{roll}_{num}.

Native macOS Theme Sync

Follows the macOS Light and Dark modes and observes native system accessibility standards.

The workspace

Workflow

01

Library

Rolls, folders, collections, ratings, stacks, and virtual copies.

SANE scanners use the separate GPL project negaflow-scanner-sane. Scan results are easy to review from Library. GitHub ↗
Library

02

Develop

The development engine is called Chroma Engine, and dust and scratch restoration is called GrainMend. The entire process is developed independently, with 15 scanner profiles built from film material I photographed myself.

Develop

03

Print

JPEG and 16-bit TIFF export, ICC profiles, and print layouts.

Print

04

Settings

Customise shortcuts, folder paths, presets, and adjustments.

Settings
  • Film-base measurement and colour or black-and-white film inversion
  • Exposure, contrast, curves, HSL, colour grading, and black-and-white toning
  • Sharpening, noise reduction, grain, vignette, and halation
  • Rolls, folders, collections, ratings, stacks, and virtual copies
  • Zoom, crop, rotate, compare, histogram, and clipping indicators
  • JPEG and 16-bit TIFF export, ICC profiles, and print layouts

Basic workflow

  1. Import image files or scan with an installed plugin.
  2. Choose the development process and target.
  3. Adjust colour and tone in Chroma Engine.
  4. Apply GrainMend to photographs that need it.
  5. Check the result with Compare and the histogram, then print or export.
  6. It is built to be easy to use. Shortcuts, folder paths, presets, and adjustments can all be customised.

Scanner plugin

negaflow-scanner-sane

negaflow-scanner-sane is the plugin used by Scanner Import in negaflow.

Scanner support

Supported scanners

Known SANE 1.4 targets and the paths handled by negaflow-scanner-sane.

Supported scanners
Scanner family SANE backend SANE 1.4 status Plug-in path
Plustek OpticFilm 7200, 7200 v2, 7200i, 7300, 7400 v2, 7500i, 7600i genesys Complete Dedicated film-scanner path
Plustek OpticFilm 7400 v1 genesys Listed as Complete, but its model-specific corrections landed after SANE 1.4.0 Capability-driven path; stock 1.4.0 hardware result is unverified
Plustek OpticFilm 8100, USB 07b3:130c genesys Complete Dedicated film-scanner path
Plustek OpticFilm 8100, USB 07b3:1824 None Unsupported Not treated as usable
Plustek OpticFilm 8200i, USB 07b3:130d genesys Complete Dedicated film-scanner path
Plustek OpticFilm 8200i, USB 07b3:1825 (GL128) None Unsupported Not treated as usable
Plustek OpticFilm 120, 120 Pro, 135, 135i, 9000i Ai None Unsupported Not treated as usable
Epson Perfection V700/V750 (GT-X900), V800/V850 (GT-X980) epson2 Good Transparency source and positioned flatbed area when reported
Nikon Coolscan LS-2000, LS-40 ED, LS-50 ED, LS-4000 ED, LS-8000 ED coolscan3 Complete to Minimal; varies by model Dedicated film-scanner path
Nikon Coolscan LS-5000 ED coolscan3 Untested; may work similarly to LS-50 according to SANE 1.4 Dedicated film-scanner path
Nikon Coolscan LS-20, LS-30, LS-1000 coolscan Varies by model SCSI only
Nikon Coolscan LS-9000 ED None Unsupported Not treated as usable
Reflecta ProScan/CrystalScan/DigitDia and PIE PowerSlide pieusb; old SCSI models use pie Varies by model and model number Options are accepted only when reported
Pacific Image PrimeFilm XA, XAs, XA Plus None Unsupported Not treated as usable
Other transparency-capable flatbeds and film scanners Varies Varies by model Capability-driven; no model-name fallback

This table does not guarantee that every unit with the same product name will work. Check the current SANE device list, then verify the connected unit with scanimage -L and scanimage -A.

Analog photography is growing again, but the process behind it has stalled.Unless film is printed optically, it has to be converted to digital before we can see it.Yet that whole process is slowing down as labs close and support from manufacturers and products declines.

This project began with the things that felt inconvenient and the features I wished existed.Drawing on what I learned from using 35mm and medium-format film, I built the entire process myself, one piece at a time.It began as a toy project for my own use, but negaflow has become something more.

What matters most is that it works well, is comfortable and fast to use, and produces a proper result.The independently developed negaflow is native to macOS and brings together workflows for both film labs and individuals.

For the summer of the 200th anniversary of the first photograph made by Niépce.

Release Notes

v1.0.5 Update Highlights

v1.0.5
  • JPEG exported without chroma subsampling at 95% quality and above, with 100% as the new default
  • PNG bit depth selectable at 8 or 16 bits per channel, defaulting to 16-bit for Export
  • Quick Export given its own JPEG quality and PNG bit depth controls, no longer fixed at 95%
  • Film look for digital sources rebuilding scatter, halation and virtual development in linear light

Download

Download the current version from GitHub Releases. The Universal PKG is the right choice for most Macs and installs negaflow.app directly in /Applications. DMG and ZIP files are available on the same release page for manual installation.

negaflow-1.0.5-1-macOS-universal.pkg Apple Silicon and Intel
negaflow-1.0.5-1-macOS-arm64.pkg Apple Silicon only

Connecting a physical scanner requires a separate scanner plugin.

FAQ

Frequently Asked Questions

How do I open the app if macOS shows a developer warning?

Current GitHub release files are ad-hoc signed. If macOS blocks the first launch, navigate to System Settings → Privacy & Security and choose Open Anyway.

Can I connect a physical scanner (e.g. Epson) directly?

Physical scanner connection requires the separate open-source negaflow-scanner-sane plugin. Without the plugin, you can immediately develop camera copy files or existing scans (TIFF, JPEG, RAW).

Does negaflow support camera RAW files and 16-bit TIFF?

Yes, it supports all camera RAW formats handled by macOS Image I/O, as well as 8-bit/16-bit TIFF, JPEG, and PNG files.

Are original image files modified during editing?

No. negaflow is non-destructive. Original files and third-party sidecars are never modified; all edits are stored in an independent SQLite catalog.

Does negaflow support both Apple Silicon and Intel Macs?

Yes, negaflow is distributed as a Universal PKG for both Apple Silicon (M1/M2/M3/M4) and Intel Macs, requiring macOS 14.0 or later.

Can I use negaflow alongside Photoshop or Lightroom?

Yes. You can export 16-bit TIFF or JPEG files with preserved EXIF metadata and seamlessly pass them to Lightroom, Photoshop, or Capture One.

Do I need the scanner plugin for digital camera scans?

No. The plugin is only required for controlling physical flatbed or film scanners. Digital camera copies (RAW/TIFF) can be developed out of the box.

Is negaflow a subscription or open-source software?

negaflow is open-source software under the Apache License 2.0. It is completely free to download and use with no monthly subscription fees. It is free. Free as in it costs nothing, and free as in you can read the source, change it and pass it on — just keep the licence and the notices, and say what you changed. The name is a separate matter — Apache 2.0 does not grant trademark rights.

How does negaflow handle large libraries with hundreds of frames?

The catalogue uses SQLite in WAL mode and reduces frame caches under memory pressure. Actual speed depends on library size, storage and the Mac.

Can I save custom development presets or copy settings across rolls?

Yes. You can save custom presets or use Settings Paste Scope to selectively copy exposure, tone, or dust restoration adjustments to entire 36-exposure rolls.