FilmBench ▸ digital darkroom ▸ processes locallySafety film ▸ C-41 · E-6 · B&W ▸ made for film
The manual
Documentation
Everything you need to get FilmBench running and turning negatives into
finished photographs. If you get stuck anywhere, there's a real person at
the other end. See the bottom of this page.
Start here
Getting started: your first roll
What is FilmBench?
FilmBench turns your computer into a living darkroom. Tether a camera,
point it at a film negative, and FilmBench shows you the finished
photograph in real time: colours true, the orange mask gone, the
image already developed. No scanning, no inverting in another app
afterwards.
This is the whole workflow, end to end. Wherever a control is named
it's shown as the chip you'll tap in the app, like
PortraFilm. Pick the film stock you shot, or long-press to auto-detect the process from the frame's rebate. The choice isn't applied as a look or transformation; it's written into the capture's EXIF metadata so every frame carries an accurate note of the stock. , and each step links
to the reference sections below for the fine print.
What you'll need
A Mac (Apple Silicon, macOS 12 Monterey or newer), a 64-bit Windows
10 or 11 PC, or a 64-bit Linux machine (x86-64 or ARM64). FilmBench
ships as a DMG for macOS, an installer for Windows, and a
.deb or .rpm package for Linux.
A camera that shoots tethered over USB and is on the
libgphoto2
supported list, hundreds of models from every major manufacturer.
A copy stand or tripod and an even, neutral backlight behind the
negative: a light table or a daylight-balanced panel works well.
Step by step
Connect and frame. Plug the camera in over USB,
switch it on, and open FilmBench. It finds the camera and opens a
live, lag-free view; the status dot
Camera status. A single icon beside the camera chip that shows what the camera is doing right now, one glyph per state, each with a tooltip: connecting, ready, reconnecting after a disconnect, recovering, focusing, detecting the film, releasing the shutter, downloading the frame, writing metadata or applying the film look. It pulses while busy and turns red when something needs a look, so a stalled capture or a dropped tether reads at a glance without opening anything. beside the camera name
goes green when it's ready. Lay the negative on your copy stand over
an even backlight and square it up: turn on the
Grid. A rule-of-thirds overlay that doubles as an alignment grid: square the film edges to it so the negative sits parallel to the sensor with no keystoning to fix later. grid to line up the film
edges, Focus peaking. Outlines the in-focus edges so you can lock focus on the grain itself, not on dust sitting on the glass. focus peaking to lock focus
on the grain, and 1:1Preview size. How the preview fills the viewfinder: fit the whole frame, fill the screen, or 1:1 to pixel-peep grain and focus. to pixel-peep.
More: the window, part by part.
Heads up: on macOS you don't need to quit Photos
or Image Capture just because they're open. FilmBench talks to the
camera through Apple's own imaging framework, so it shares rather
than competes with the system. Only an app actively holding a
session on the camera blocks it, like EOS Utility, Lightroom or
Capture One mid-tether, and the startup screen spots those and
offers to close them for you. See
camera isn't detected.
Choose how you preview. The
LIVPreview. Chooses how the viewfinder feeds you, from a small menu: None, Live View or Single Shot. Live View streams the camera continuously: your loupe to frame, focus and judge the developed positive before you trip the shutter. Single Shot freezes one real, full-resolution frame, held in memory and never written to disk, so you tune the develop chips against exactly what the next capture will look like rather than the lower-resolution live feed. The shutter then writes a saved frame that matches what you tuned. chip picks how the
viewfinder feeds you: None (the raw frame), Live View
(the camera streamed continuously, already inverted and graded, your
loupe for framing and focus), or Single Shot.
Heads up: Single Shot freezes one full-resolution
frame in memory so you can tune against exactly what the camera sees;
it does not save anything. You still press the shutter to
capture.
Tag the film. Tell FilmBench what you shot:
Film. Pick the film stock you shot, or long-press to auto-detect the process from the frame's rebate. The choice isn't applied as a look or transformation; it's written into the capture's EXIF metadata so every frame carries an accurate note of the stock. for the stock,
Process. The development process behind the negative: C-41 colour, E-6 slide, or black & white. Like the film stock, it changes nothing in the conversion itself; it's recorded in the capture's EXIF metadata as part of the frame's history. for the process (C-41, E-6 or
black & white), Chemistry. The specific developer the film was souped in: HC-110, D-76, Rodinal and the rest. Stored with the capture as EXIF metadata, a note of how the negative was developed, not something applied to the image. for
the developer. These are written into the file's metadata as a record
of the original; they're not applied as a look.
More: how the EXIF metadata works.
Heads up: long-press the Film chip to auto-detect
the process from the frame's rebate, but it only works with
Live View on.
Develop the look. Grade the positive live. The
develop chips work the image as you drag them:
+0.3Exposure. Brightness in stops, like an exposure-compensation dial. +1 doubles the light and -1 halves it; nudge until the positive sits where you want it. exposure,
1.05Contrast. Steepens or softens the tone curve. More contrast snaps the blacks and whites; less keeps the gentle latitude film is loved for. contrast,
1.0Saturation. Colour intensity. Film carries its own saturation character, so small moves go a long way before colours turn synthetic. saturation and the rest, along
with the inversion controls: the
Log-densityInversion. Chooses the algorithm that turns the negative into a positive. Log-density, the default, reshapes the mid-tones in density space, the way film actually records light, which keeps colour cleaner and the greys more neutral. Linear is the classic per-channel stretch. Most negatives prefer Log-density; reach for Linear when you want the older, flatter behaviour. algorithm, the
AUTOFilm base. Sets the film-base colour the inversion cancels out, the orange mask on C-41 or the clear base on black & white. Leave it on AUTO to read the base from the frame, or pick it by hand: the eyedropper samples the rebate straight from the frame (the live view, or the frozen full-resolution Single Shot for the most exact read), then you can fine-tune the result in hue, saturation and value and reuse recent picks. Locking the base by hand steadies the colour when an uneven frame or a tight crop confuses auto-detect. film base, and the channel nudges
1.80Green exponent. The master exponent of the negative inversion, read off the green channel. It sets how hard the film curve is inverted, the conversion's base contrast before any positive control touches it. Leave it on auto to use the film stock's calibrated default, or override it when an unusual stock wants a steeper or gentler base curve.+4Red ratio nudge. A percentage trim on the red channel ratio the inversion computes for you. The ratios are the white balance of the negative itself, derived from the orange mask; nudge red warmer or cooler when the automatic value leaves a cast the positive white balance can't fully clear.-3Blue ratio nudge. The same percentage trim for the blue channel ratio. Red and blue together steer the colour balance baked into the inversion, so small opposing nudges correct a stubborn cross-cast at the source rather than papering over it later. . Two tools help you judge: the
Histogram. An RGB histogram over the live view. Watch the ends: hold the negative's brightest tone just short of clipping and the inverted positive keeps its shadow detail. histogram: watch the
IN plot (the negative) and hold its brightest tone
just short of clipping so the inverted shadows keep detail, while the
OUT plot shows your graded result; and the
Compare. Splits the viewfinder with a slider you drag across the frame: the developed positive on the left, and on the right the negative before the look was applied. Like Preview, it opens a small menu, Off, Original or Inversion only. Original shows the untouched frame the camera sees; Inversion only shows the negative turned positive with the bare conversion alone, no exposure, contrast or colour grading, and no green-exponent or red/blue ratio tuning, so you can judge the base inversion on its own. The divider stays put when you flip or re-frame, an instant A/B for how far your develop adjustments have carried the image. comparison wipe,
a divider you drag across the frame to A/B the developed positive
against the untouched Original or the bare
Inversion only.
More: every chip, explained.
Heads up: to set the film base by hand, pick the
eyedropper, tap the rebate in the next frame, then fine-tune hue,
saturation and value and watch the preview shift live.
Orient, crop and pick a format. Square the frame:
0°Orientation. Rotates the frame so a portrait negative shot on a landscape stand comes out upright, with the rotation written into the EXIF so nothing re-rotates downstream. rotates a portrait
negative upright, Flip. Mirrors the preview and every capture horizontally, for a negative copied emulsion-side toward the lens that would otherwise come out reversed. The mirror is folded into the saved EXIF orientation, so the file reads the right way round downstream with nothing left to flip by hand. mirrors
an emulsion-side copy, and the crop tools trim to the rebate. Set
RAWFormat. Sets the developed positive FilmBench writes beside each frame: a 16-bit TIFF for the most latitude, or an 8-bit JPEG to match what you saw live. Capture itself is always RAW whenever the camera offers it, so the develop chips always have the full sensor data to work with. The same popover holds a keep-camera-RAW toggle, so you can have the source RAW removed once the positive is safely on disk, and it warns you when a shot had to fall back to JPEG because the body offered no RAW option. to RAW for the most latitude
when inverting.
Heads up: AUTO crop live-follows the detected
border but only locks in at capture; drag a corner to switch to
CUSTOM and pin a specific box.
Capture. Press the shutter button (or
Space, even while a chip is focused). The frame is
written straight to your output folder the instant you press it, with
full EXIF, and lands in the capture strip.
More: where files go, what formats are saved.
Review, and carry the look across the roll. Each
frame stacks in the capture strip, newest first. Open one in your
system viewer, or reload its develop settings onto the bench to match
a look down the roll. Strayed too far?
resetReset. Snaps every develop chip back to the current film's template defaults in one tap, the same as a double-tap of Esc. It stays greyed out until something is actually off-default, so it doubles as a tell that you've strayed from the stock's baseline. snaps every develop chip back to
the film's defaults (or double-tap Esc).
More: the capture strip, keyboard navigation.
Installing
Download FilmBench from
get.filmbench.app; the page
offers the right build for the platform you're on.
macOS: open the DMG and drag FilmBench into
Applications. Every build is signed and notarized, so macOS opens it
without ceremony.
Windows: run the installer and follow the prompts.
Builds are code-signed; if SmartScreen still warns on a fresh release,
choose More info then Run anyway.
Linux: install the
.deb (sudo apt install ./FilmBench-*.deb) or
.rpm (sudo dnf install ./FilmBench-*.rpm).
Know your way around
The window, part by part
A live map of the FilmBench window. Hover or tap a number to see what each area does.
Hands on the keys
Keyboard navigation
Drive the whole chip strip without reaching for the mouse.
Move between chips
Click or tab onto any chip, then steer with the arrow keys. A focus
ring shows where you are.
← and → step to the previous and
next chip, exactly like Shift+Tab and
Tab. At the end of the title bar the focus flows on into
the bottom row, so one direction walks every chip in order.
↑ and ↓ jump between the two rows.
Focus lands on the chip in the nearest column, and a run of up and down
holds that column even when the rows line up differently.
Enter opens the focused chip's picker or toggles it, while
Space always takes a frame, whichever chip is focused.
What it skips
Read-outs (lens, battery, shots left, GPU health) and any chip locked on
the free tier are passed over, so the arrows only ever land on a control
you can use. While a chip's picker is open the arrows drive that picker,
a slider or a list, instead of moving between chips.
All shortcuts
Hold ? in the app at any time to pull up this same list as
an overlay. The arrow keys above mirror Tab and
Shift+Tab; everything else is here.
Camera
[
ISO step down
]
ISO step up
;
Shutter step slower
'
Shutter step faster
,
Aperture wider
.
Aperture narrower
-
Exposure comp down
=
Exposure comp up
Capture
Space
Take a frame, even while typing
Navigation
←
Previous chip
→
Next chip
↑
Row above
↓
Row below
Enter
Open or toggle the focused chip
Post-process
EscEsc
Reset post-process chips (double-tap)
Help
?
Hold for the shortcuts overlay
Reference
Every chip, explained
The title bar and tool rows are a strip of chips. Tap one to change it;
some open a slider or a picker. Here's the whole set, with the same
colours they wear in the app.
Camera & status
Z6 IICamera. Tap to scan the USB bus and identify your tethered camera. It works like a digitising back: the sensor does the scanning, your copy stand and light source do the rest.
Camera
Tap to scan the USB bus and identify your tethered camera. It works like a digitising back: the sensor does the scanning, your copy stand and light source do the rest.
Camera status. A single icon beside the camera chip that shows what the camera is doing right now, one glyph per state, each with a tooltip: connecting, ready, reconnecting after a disconnect, recovering, focusing, detecting the film, releasing the shutter, downloading the frame, writing metadata or applying the film look. It pulses while busy and turns red when something needs a look, so a stalled capture or a dropped tether reads at a glance without opening anything.
Camera status
A single icon beside the camera chip that shows what the camera is doing right now, one glyph per state, each with a tooltip: connecting, ready, reconnecting after a disconnect, recovering, focusing, detecting the film, releasing the shutter, downloading the frame, writing metadata or applying the film look. It pulses while busy and turns red when something needs a look, so a stalled capture or a dropped tether reads at a glance without opening anything.
24-70mmLens. The mounted lens, read live over the tether. For copying negatives a macro or flat-field lens keeps the frame sharp corner to corner with no distortion to undo later.
Lens
The mounted lens, read live over the tether. For copying negatives a macro or flat-field lens keeps the frame sharp corner to corner with no distortion to undo later.
82%Battery. Camera battery level. Constant live view and tethering drain a pack quickly, so an AC coupler or dummy battery earns its keep on a long digitising session.
Battery
Camera battery level. Constant live view and tethering drain a pack quickly, so an AC coupler or dummy battery earns its keep on a long digitising session.
146Shots left. Frames the card can still hold at the current format. Copying a whole roll in RAW fills a card fast.
Shots left
Frames the card can still hold at the current format. Copying a whole roll in RAW fills a card fast.
okGPU health. Whether the live positive is keeping pace. The inversion runs continuously, and recovers on its own if it ever stumbles.
GPU health
Whether the live positive is keeping pace. The inversion runs continuously, and recovers on its own if it ever stumbles.
Connection diagnostics. Opens the Connection Diagnostics window: every camera detected with its USB ids and the driver it resolved to, plus the live connection log. Always here, even with no camera connected, so a tether that won't show up is one click from an exportable report. See Diagnostics for support below.
Connection diagnostics
Opens the Connection Diagnostics window: every camera detected with its USB ids and the driver it resolved to, plus the live connection log. Always here, even with no camera connected, so a tether that won't show up is one click from an exportable report. See Diagnostics for support below.
Viewfinder
INVCompare. Splits the viewfinder with a slider you drag across the frame: the developed positive on the left, and on the right the negative before the look was applied. Like Preview, it opens a small menu, Off, Original or Inversion only. Original shows the untouched frame the camera sees; Inversion only shows the negative turned positive with the bare conversion alone, no exposure, contrast or colour grading, and no green-exponent or red/blue ratio tuning, so you can judge the base inversion on its own. The divider stays put when you flip or re-frame, an instant A/B for how far your develop adjustments have carried the image.
Compare
Splits the viewfinder with a slider you drag across the frame: the developed positive on the left, and on the right the negative before the look was applied. Like Preview, it opens a small menu, Off, Original or Inversion only. Original shows the untouched frame the camera sees; Inversion only shows the negative turned positive with the bare conversion alone, no exposure, contrast or colour grading, and no green-exponent or red/blue ratio tuning, so you can judge the base inversion on its own. The divider stays put when you flip or re-frame, an instant A/B for how far your develop adjustments have carried the image.
Histogram. An RGB histogram over the live view. Watch the ends: hold the negative's brightest tone just short of clipping and the inverted positive keeps its shadow detail.
Histogram
An RGB histogram over the live view. Watch the ends: hold the negative's brightest tone just short of clipping and the inverted positive keeps its shadow detail.
okExposure quality. A one-glance verdict on whether the current settings will digitise the negative well: OK, DARK (the rebate is underexposed, lifting noise into the inversion) or CLIP (highlights blown). The histogram and zebra show the raw numbers; this reads them for you and the tooltip names the fix. In Live View it judges the camera's preview, so it's approximate; freeze a Single Shot and it switches to a precise reading taken straight off the raw frame.
Exposure quality
A one-glance verdict on whether the current settings will digitise the negative well: OK, DARK (the rebate is underexposed, lifting noise into the inversion) or CLIP (highlights blown). The histogram and zebra show the raw numbers; this reads them for you and the tooltip names the fix. In Live View it judges the camera's preview, so it's approximate; freeze a Single Shot and it switches to a precise reading taken straight off the raw frame.
Focus peaking. Outlines the in-focus edges so you can lock focus on the grain itself, not on dust sitting on the glass.
Focus peaking
Outlines the in-focus edges so you can lock focus on the grain itself, not on dust sitting on the glass.
ONGrid. A rule-of-thirds overlay that doubles as an alignment grid: square the film edges to it so the negative sits parallel to the sensor with no keystoning to fix later.
Grid
A rule-of-thirds overlay that doubles as an alignment grid: square the film edges to it so the negative sits parallel to the sensor with no keystoning to fix later.
LIVPreview. Chooses how the viewfinder feeds you, from a small menu: None, Live View or Single Shot. Live View streams the camera continuously: your loupe to frame, focus and judge the developed positive before you trip the shutter. Single Shot freezes one real, full-resolution frame, held in memory and never written to disk, so you tune the develop chips against exactly what the next capture will look like rather than the lower-resolution live feed. The shutter then writes a saved frame that matches what you tuned.
Preview
Chooses how the viewfinder feeds you, from a small menu: None, Live View or Single Shot. Live View streams the camera continuously: your loupe to frame, focus and judge the developed positive before you trip the shutter. Single Shot freezes one real, full-resolution frame, held in memory and never written to disk, so you tune the develop chips against exactly what the next capture will look like rather than the lower-resolution live feed. The shutter then writes a saved frame that matches what you tuned.
Zebra. Hatches clipped highlights, and optionally shadows, so you can ease off exposure before the brightest tones blow out with nothing left to recover.
Zebra
Hatches clipped highlights, and optionally shadows, so you can ease off exposure before the brightest tones blow out with nothing left to recover.
FITPreview size. How the preview fills the viewfinder: fit the whole frame, fill the screen, or 1:1 to pixel-peep grain and focus.
Preview size
How the preview fills the viewfinder: fit the whole frame, fill the screen, or 1:1 to pixel-peep grain and focus.
Manual focus. Drives the lens focus from the app. Hold to walk focus in or out and settle on the sharpest grain.
Manual focus
Drives the lens focus from the app. Hold to walk focus in or out and settle on the sharpest grain.
0°Orientation. Rotates the frame so a portrait negative shot on a landscape stand comes out upright, with the rotation written into the EXIF so nothing re-rotates downstream.
Orientation
Rotates the frame so a portrait negative shot on a landscape stand comes out upright, with the rotation written into the EXIF so nothing re-rotates downstream.
ONFlip. Mirrors the preview and every capture horizontally, for a negative copied emulsion-side toward the lens that would otherwise come out reversed. The mirror is folded into the saved EXIF orientation, so the file reads the right way round downstream with nothing left to flip by hand.
Flip
Mirrors the preview and every capture horizontally, for a negative copied emulsion-side toward the lens that would otherwise come out reversed. The mirror is folded into the saved EXIF orientation, so the file reads the right way round downstream with nothing left to flip by hand.
Film & process
Tri-X 400Film. Pick the film stock you shot, or long-press to auto-detect the process from the frame's rebate. The choice isn't applied as a look or transformation; it's written into the capture's EXIF metadata so every frame carries an accurate note of the stock.
Film
Pick the film stock you shot, or long-press to auto-detect the process from the frame's rebate. The choice isn't applied as a look or transformation; it's written into the capture's EXIF metadata so every frame carries an accurate note of the stock.
B&WProcess. The development process behind the negative: C-41 colour, E-6 slide, or black & white. Like the film stock, it changes nothing in the conversion itself; it's recorded in the capture's EXIF metadata as part of the frame's history.
Process
The development process behind the negative: C-41 colour, E-6 slide, or black & white. Like the film stock, it changes nothing in the conversion itself; it's recorded in the capture's EXIF metadata as part of the frame's history.
HC-110 BChemistry. The specific developer the film was souped in: HC-110, D-76, Rodinal and the rest. Stored with the capture as EXIF metadata, a note of how the negative was developed, not something applied to the image.
Chemistry
The specific developer the film was souped in: HC-110, D-76, Rodinal and the rest. Stored with the capture as EXIF metadata, a note of how the negative was developed, not something applied to the image.
Develop adjustments
+0.3Exposure. Brightness in stops, like an exposure-compensation dial. +1 doubles the light and -1 halves it; nudge until the positive sits where you want it.
Exposure
Brightness in stops, like an exposure-compensation dial. +1 doubles the light and -1 halves it; nudge until the positive sits where you want it.
1.05Contrast. Steepens or softens the tone curve. More contrast snaps the blacks and whites; less keeps the gentle latitude film is loved for.
Contrast
Steepens or softens the tone curve. More contrast snaps the blacks and whites; less keeps the gentle latitude film is loved for.
0Brightness. A flat lift or drop across the whole image, separate from exposure, for setting the midtones without re-clipping the ends.
Brightness
A flat lift or drop across the whole image, separate from exposure, for setting the midtones without re-clipping the ends.
1.0Saturation. Colour intensity. Film carries its own saturation character, so small moves go a long way before colours turn synthetic.
Saturation
Colour intensity. Film carries its own saturation character, so small moves go a long way before colours turn synthetic.
0°Hue. Rotates every colour around the wheel, a gentle fix when a film base or light source skews the whole frame warm or cool.
Hue
Rotates every colour around the wheel, a gentle fix when a film base or light source skews the whole frame warm or cool.
5500KWhite balance. Colour temperature in kelvin. Match the light: around 5500K for daylight or flash, around 3200K for tungsten. An even, neutral backlight keeps it honest.
White balance
Colour temperature in kelvin. Match the light: around 5500K for daylight or flash, around 3200K for tungsten. An even, neutral backlight keeps it honest.
-10Highlights. Tames or opens the brightest tones, pulling detail back out of a bright sky or a light-table hotspot before it goes blank.
Highlights
Tames or opens the brightest tones, pulling detail back out of a bright sky or a light-table hotspot before it goes blank.
+10Shadows. Lifts or deepens the darkest tones, opening shadow detail without muddying the blacks.
Shadows
Lifts or deepens the darkest tones, opening shadow detail without muddying the blacks.
Log-densityInversion. Chooses the algorithm that turns the negative into a positive. Log-density, the default, reshapes the mid-tones in density space, the way film actually records light, which keeps colour cleaner and the greys more neutral. Linear is the classic per-channel stretch. Most negatives prefer Log-density; reach for Linear when you want the older, flatter behaviour.
Inversion
Chooses the algorithm that turns the negative into a positive. Log-density, the default, reshapes the mid-tones in density space, the way film actually records light, which keeps colour cleaner and the greys more neutral. Linear is the classic per-channel stretch. Most negatives prefer Log-density; reach for Linear when you want the older, flatter behaviour.
AUTOFilm base. Sets the film-base colour the inversion cancels out, the orange mask on C-41 or the clear base on black & white. Leave it on AUTO to read the base from the frame, or pick it by hand: the eyedropper samples the rebate straight from the frame (the live view, or the frozen full-resolution Single Shot for the most exact read), then you can fine-tune the result in hue, saturation and value and reuse recent picks. Locking the base by hand steadies the colour when an uneven frame or a tight crop confuses auto-detect.
Film base
Sets the film-base colour the inversion cancels out, the orange mask on C-41 or the clear base on black & white. Leave it on AUTO to read the base from the frame, or pick it by hand: the eyedropper samples the rebate straight from the frame (the live view, or the frozen full-resolution Single Shot for the most exact read), then you can fine-tune the result in hue, saturation and value and reuse recent picks. Locking the base by hand steadies the colour when an uneven frame or a tight crop confuses auto-detect.
1.80Green exponent. The master exponent of the negative inversion, read off the green channel. It sets how hard the film curve is inverted, the conversion's base contrast before any positive control touches it. Leave it on auto to use the film stock's calibrated default, or override it when an unusual stock wants a steeper or gentler base curve.
Green exponent
The master exponent of the negative inversion, read off the green channel. It sets how hard the film curve is inverted, the conversion's base contrast before any positive control touches it. Leave it on auto to use the film stock's calibrated default, or override it when an unusual stock wants a steeper or gentler base curve.
+4Red ratio nudge. A percentage trim on the red channel ratio the inversion computes for you. The ratios are the white balance of the negative itself, derived from the orange mask; nudge red warmer or cooler when the automatic value leaves a cast the positive white balance can't fully clear.
Red ratio nudge
A percentage trim on the red channel ratio the inversion computes for you. The ratios are the white balance of the negative itself, derived from the orange mask; nudge red warmer or cooler when the automatic value leaves a cast the positive white balance can't fully clear.
-3Blue ratio nudge. The same percentage trim for the blue channel ratio. Red and blue together steer the colour balance baked into the inversion, so small opposing nudges correct a stubborn cross-cast at the source rather than papering over it later.
Blue ratio nudge
The same percentage trim for the blue channel ratio. Red and blue together steer the colour balance baked into the inversion, so small opposing nudges correct a stubborn cross-cast at the source rather than papering over it later.
resetReset. Snaps every develop chip back to the current film's template defaults in one tap, the same as a double-tap of Esc. It stays greyed out until something is actually off-default, so it doubles as a tell that you've strayed from the stock's baseline.
Reset
Snaps every develop chip back to the current film's template defaults in one tap, the same as a double-tap of Esc. It stays greyed out until something is actually off-default, so it doubles as a tell that you've strayed from the stock's baseline.
TIFFFormat. Sets the developed positive FilmBench writes beside each frame: a 16-bit TIFF for the most latitude, or an 8-bit JPEG to match what you saw live. Capture itself is always RAW whenever the camera offers it, so the develop chips always have the full sensor data to work with. The same popover holds a keep-camera-RAW toggle, so you can have the source RAW removed once the positive is safely on disk, and it warns you when a shot had to fall back to JPEG because the body offered no RAW option.
Format
Sets the developed positive FilmBench writes beside each frame: a 16-bit TIFF for the most latitude, or an 8-bit JPEG to match what you saw live. Capture itself is always RAW whenever the camera offers it, so the develop chips always have the full sensor data to work with. The same popover holds a keep-camera-RAW toggle, so you can have the source RAW removed once the positive is safely on disk, and it warns you when a shot had to fall back to JPEG because the body offered no RAW option.
Preferences
The settings window
Open settings from the prefs chip in the title bar. It's a tabbed
window covering where files land, who shot them, the metadata stamped
on every frame, and the catalogs behind the Film and Chemistry chips.
Storage
Output folder: where every capture is written. Leave it blank for the default, ~/Pictures/FilmBench.
History size: how many recent frames the capture strip remembers, from 1 to 200. Older frames fall off the back as you keep shooting.
Keep debug files: off by default. When on, the per-stage snapshots FilmBench writes during a capture are left in the output folder instead of being cleaned up, which helps when you're chasing a rendering problem.
Enable auto crop (experimental): off by default. Shows the CROP chip, which auto-discovers the film frame and can straighten a tilted scan. It's a work in progress, so the chip stays hidden and crop never applies until you switch this on.
Author
Three fields written straight into the saved file:
Photographer: your name, stored as the EXIF Artist and XMP Creator.
Lens: overrides the recorded lens, handy for noting the lens the original photo was shot on. Leave it blank and the digital camera's own lens stands (see below).
Notes: free text, stored as the image description.
How the EXIF metadata works
Two things end up in every saved file. First, because each frame is a
genuine photograph your digital camera took, its technical EXIF rides
along untouched: the lens and shutter speed come straight from
the camera, along with the aperture, ISO and camera body, and
FilmBench leaves them exactly as shot.
Second, FilmBench adds the notes about the analog original: the film
stock and its ISO, the development process, the developer chemistry, the
photographer, your notes and the capture orientation. Those come from
the chips on the main window (Film, Process, Chemistry, Orientation) and
the Author tab.
The key idea is that this is a record, not a recipe. Choosing
Tri-X 400, black & white and HC-110 writes those facts into the file
but never changes the conversion. Everything is stored in standard EXIF
and XMP fields, so Lightroom, Capture One or any catalogue reads it like
ordinary metadata, and the process choice also flags the file's source
as a film scan.
Custom tags
The escape hatch: add any standard EXIF, IPTC or XMP tag, whether
that's copyright, GPS, keywords or a roll number. Start typing and it
suggests tags from a catalog; tags with a fixed set of values get a
dropdown, and anything unrecognised is flagged in red before you save.
Films and Chemistry
Two catalogs that back the Film and Chemistry chips. Tick the stocks and
developers you actually shoot so the pickers stay short, and add your own
entries for anything off the beaten path.
Inversion (advanced)
Fine controls for how a negative becomes a positive. Each has a reset to
its built-in default, and most people never need them:
Film-base top %: how much of the brightest red is sampled to find the orange film base on C-41. Lower samples a larger, dimmer area; higher uses only the brightest pixels. C-41 only.
Film-base border %: how far in from the edges of the frame the film base is looked for, so a bright warm subject in the middle of the scene can't be mistaken for the base. Raise it if your rebate is wide, or set 0 to search the whole frame. C-41 only.
Base percentile: the brightness treated as the film base, the white point, for black & white and for C-41 when orange detection fails.
Dmin percentile: the darkness treated as the densest point, the black point. The single biggest lever on contrast.
Base pick radius: how wide the film-base eyedropper averages around your tap, so grain and JPEG noise don't skew the pick. 0 samples a single pixel; 5 averages an 11×11 patch.
Calibration
Calibration is about your rig, not your look: measure it once and every
frame benefits, no matter which film, chips or crop you use after. There
are two, each with its own Apply correction tick so you can
keep a measurement on file but turn its effect on and off without
re-shooting.
Light source (flat-field): shoot one blank, evenly lit
frame with the bare backlight and no negative in the holder. FilmBench
learns how your light and lens fall off toward the edges and what colour
the light is, then evens out that vignetting and neutralises the cast on
every capture. Put the camera in Manual and pick your aperture; it shoots a
test frame and sets the shutter speed itself to expose the white frame
correctly, and tells you what to change if it can't. Re-shoot only if you
move or refocus the rig. A contrast-enhanced map of what it measured is
shown so you can see the unevenness it is correcting.
Live view colour: matches the live preview's colour and
contrast to the developed RAW, so what you tune on screen is what lands in
the file. Set the camera to the exposure, aperture and ISO you'll actually
shoot at, frame a scene with a good spread of tones and colours, then
calibrate: it takes a few RAW shots and live frames and fits a per-channel
tone curve from the feed to the RAW. The curve only ever changes the
preview; your saved files are untouched.
Setup, and using it to debug
The Setup tab is a live health check of the outside tools FilmBench
leans on, the same check the startup splash runs. Each one shows green
with its version and path when it's found, or red with an error when it
isn't:
exiftool: writes the film metadata above into each saved file. It shows here on Windows only; on macOS and Linux the same job is built into FilmBench and runs in-process, so there's no row for it.
ImageMagick: the image conversion and processing workhorse.
dcraw_emu: decodes the RAW files coming off the camera.
Required tools must be present for conversion to work; optional ones just
add extra features. So when a capture won't convert, the app won't move
past the splash, or a frame comes out wrong, the Setup tab is the first
place to look: the red row names exactly which dependency is missing or
broken, with its error, so you know what to reinstall or fix.
When it snags
Troubleshooting
My camera isn't detected.
Check the USB cable and port (some cables are charge-only, so use
a data cable). Make sure the camera is switched on and not asleep.
Then check that no other app is holding a session on it: your
camera maker's tethering utility (EOS Utility, NX Tether, Imaging
Edge and the like), Lightroom or Capture One mid-tether. Quit those
and reopen FilmBench. On Canon bodies with built-in Wi-Fi, the USB
connection is switched off while Wi-Fi or NFC is enabled, so
disable both in the camera's communication settings. Confirm your
model is on the
supported list.
The camera is detected, but every setting reads n/a and Live View won't start.
FilmBench sees the camera but is not talking to it. Two things
cause this. Another program already holds the camera's control
session, so quit tethering tools, webcam utilities (EOS Webcam
Utility included) and photo importers, then unplug and replug the
camera. Or, before version 1.2.4 on Windows, a card reader or USB
drive plugged in at the same time was picked up as the camera
instead of the real one. Update to 1.2.4 or later, or unplug the
reader. If it still happens, take a
Connection Diagnostics export within a
minute of connecting the camera and send it to us. The report shows
which device was opened and what the camera answered.
On Windows, which driver should the camera use?
The one Windows installs by itself. In Device Manager the camera
appears as a portable device using the Microsoft MTP or PTP driver,
and that is what FilmBench talks to. Do not replace it with WinUSB,
libusb or Zadig. That breaks the camera for every other program and
does not help FilmBench. If you installed a replacement driver
while troubleshooting, uninstall it in Device Manager and let
Windows reinstall the default. Canon's EOS Utility and EOS Webcam
Utility, Nikon's NX Tether and Sony's Imaging Edge all hold the
camera while they run, so close them before starting FilmBench.
Windows Photos can also grab the camera when it offers to import,
so dismiss that prompt or turn off its auto-import.
There's no live preview.
Live view has to be available on the camera itself, so make sure
the lens cap is off and the camera isn't in a mode that disables live
view. Reconnect the cable and reopen FilmBench. A camera that is
busy writing a previous frame to its card can pause the preview
briefly.
The preview doesn't quite match my final captures.
Expect it to differ. The live preview is a smaller,
lower-resolution JPEG the camera streams for speed, with its own
viewing settings, so it won't match your full-resolution captures
pixel for pixel, and its brightness in particular can be off (see
the exposure-simulation note below). For an exact match, switch the
Preview chip to Single Shot: it freezes one real,
full-resolution frame and you tune against precisely what the
shutter will write. Otherwise judge fine detail and final colour
from the saved files, not the live view.
The live preview is brighter than my saved photo.
This is exposure simulation, and it's the camera's
behaviour rather than FilmBench's. In live view the camera streams a
continuous feed at video rates and can't give each frame a real
shutter exposure, so it estimates brightness from your exposure
value and lifts the rest with digital gain. On many DSLRs that
estimate runs bright and tops out, so the live feed looks lighter
than the still the shutter actually records, while your saved files
stay correct. If your camera offers Exposure Simulation (Canon),
Setting Effect (Sony) or an exposure preview (Nikon), enabling it on
the camera makes the feed track your real exposure. Cameras that don't
expose it, including many entry-level DSLRs, can't be made accurate
in live view by any software, so reach for Single Shot
preview, which freezes one real, full-resolution frame to tune
against. Either way the change is only to the viewfinder, never to
the saved photo.
The colours look off, or the wrong process is detected.
These are two separate things. Auto-detect samples the film rebate
when you long-press the Film chip, so an unusual crop or heavy
backlight can fool it; if it tags the wrong process, set it by hand.
That tag is only recorded as metadata, so it won't change the image
either way. If the colours themselves look off, that's the light,
not the tag: keep the backlight even and neutral behind the negative,
match white balance to it, then fine-tune with the develop
adjustments.
My RAW and JPEG of the same shot don't look the same.
This is expected, and neither file is wrong. The two come from
different renderings of the negative. The JPEG is
the picture your camera itself developed (its white balance and
picture style baked in), inverted against the baseline you tuned in
the live preview. The inverted TIFF that sits next
to a RAW is built from the raw sensor data, decoded neutrally and
auto-balanced from the frame, so its white balance and contrast are
set independently. Because the two starting points differ, the same
scene can land with a different colour cast (often the JPEG a touch
warmer or greener, the TIFF cooler) and a slightly different
brightness. For consistent results, settle on one format for a roll
rather than mixing them, and do your final colour judgement from the
saved files. The TIFF carries more latitude (it's 16-bit, straight
from the RAW), so it's the better master if you plan to grade
further; the JPEG is the quick, camera-matched positive that follows
what you saw live. You can nudge either toward the other with the
develop adjustments (white balance, brightness, contrast).
My captures aren't being saved.
Check the output folder in settings and make sure it still exists
and isn't full or read-only. If it lives on an external drive,
confirm the drive is mounted.
macOS won't let me open the app.
FilmBench builds are signed and notarized, so macOS should open
them without complaint. If Gatekeeper still objects, right-click
the app, choose Open, then confirm, and it stays
cleared from then on.
Windows won't let me open the app.
Builds are code-signed, so Windows should run them without fuss. If
SmartScreen shows a "Windows protected your PC" notice on a fresh
release, click More info and then
Run anyway.
The Linux package won't install.
Install with your distribution's package manager so dependencies are
pulled in: sudo apt install ./FilmBench-*.deb on
Debian and Ubuntu, or sudo dnf install ./FilmBench-*.rpm
on Fedora and RHEL. Use the .deb on Debian-based systems
and the .rpm on Red Hat-based ones.
When you need a hand
Capturing diagnostics for support
If a camera won't connect and the usual fixes don't help, the
Connection Diagnostics window gathers everything we need to see what's
happening, in one file you can send us. It never touches your photos.
Collect and send a report
Open Connection Diagnostics. Click the
Connection diagnostics. Opens the Connection Diagnostics window: every camera detected with its USB ids and the driver it resolved to, plus the live connection log. Always here, even with no camera connected, so a tether that won't show up is one click from an exportable report. See Diagnostics for support below.
chip in the title bar. (On macOS it's also under the
FilmBench app menu, and on any camera-error dialog.)
Reproduce the problem with the window open. It lists
every camera the system hands over, the USB ids, and which driver
each resolves to, and it records the live camera handshake the whole
time it's open. Timing matters. The most useful lines are written in
the first seconds after the camera connects, so if the trouble starts
at connection, open this window first, then plug the camera in, and
export within a minute.
Click Export. Pick a location and it saves a
.zip archive (a plain .txt is offered too).
Email the file to
[email protected]
with a sentence about what you were doing and which camera.
What's in the report
The cameras detected, each with its USB vendor:product id and the driver it matched.
The backend connection log, including why a camera failed to bind.
The PTP handshake captured while the window was open, recording
only the opening bytes of each camera message.
Because only the start of each message is logged, full photos and
files never go into the report, and neither do your file paths or
personal data. If the camera table is empty, the window names the app
holding the camera (often a vendor tether tool or Photos) and offers
to quit it for you.
Questions
FAQ
Which cameras are supported?
Any tethered camera libgphoto2 supports: hundreds of models from every major manufacturer. See the full list. That list says what the driver knows, not what we have sat behind ourselves. The body we develop and test on is the Canon EOS 750D, on macOS and Windows. Customers have run other Canon EOS bodies. If yours works, or doesn't, tell us at [email protected] and we will add it here.
Is this a replacement for a film scanner?
It's a faster, more immediate way to get there. Instead of scanning then inverting and correcting in another app, you see the finished photograph live as you shoot the negative on a copy stand.
Does it handle colour negative, slide and black & white?
Yes, colour negative (C-41), slide (E-6) and black & white. Pick the process yourself, or long-press the Film chip to auto-detect it from the current frame.
Where are my photos saved?
To the output folder you choose, the instant you press the shutter. Each capture is written straight to disk with its metadata.
What file formats does it save?
RAW, JPEG, or RAW + JPEG, whichever you choose. Set it once and every capture follows. A RAW capture also gets an inverted 16-bit TIFF written alongside it, so you have a finished positive without opening another app.
Why does the TIFF from a RAW look different from the JPEG?
Because they're two different renderings of the negative. The JPEG is your camera's own developed picture, inverted against the live baseline you tuned; the inverted TIFF is built neutrally from the raw sensor data and auto-balanced from the frame. Different starting points give a slightly different colour cast and brightness; both are valid. The TIFF is the higher-latitude 16-bit master; the JPEG matches what you saw live. There's more in Troubleshooting.
Does FilmBench need an internet connection?
No. FilmBench processes images locally and talks to your camera over a local connection.
What about my data and privacy?
FilmBench processes everything on your computer and collects no data. Your negatives and photos never leave your machine.
How much does it cost?
FilmBench is a one-time purchase, no subscription: a perpetual licence you can use on up to three of your machines. A 30-day free trial lets you try the full app first; see pricing for the current beta price.
What do I need to run it?
An Apple Silicon Mac (macOS 12 Monterey or later), a 64-bit Windows 10 or 11 PC, or a 64-bit Linux machine, plus a camera that can shoot tethered over USB and is on the libgphoto2 supported list.
Still stuck?
Email [email protected] and tell me what's happening. It's just me reading these, and I'd love to help you get it working.