How to batch crop film scans in Lightroom Classic
From install to a cropped roll in five minutes. Plus tips for tuning the tricky scans.
Install
- Download Cut Corners. Open the DMG on macOS or extract the ZIP on Windows to find
Cut Corners.lrplugin. - Move it somewhere permanent (e.g.
Documents/Lightroom Plugins), then in Lightroom Classic open File → Plug-in Manager → Add and select it. - The standard download includes the detection engine — nothing else to install. If you chose the lightweight build instead, install Python 3 with
pip install opencv-python numpyand check the Python executable path in the Plug-in Manager's Cut Corners section.
Crop film scans before (or after) converting with Negative Lab Pro
Cut Corners handles cropping and straightening; Negative Lab Pro handles negative conversion. Start with scans that show one full frame and a visible film border. Keep the original scan files in your Lightroom Classic catalog.
- Select the unconverted scans and run Cut Corners with the matching film type and format.
- Review the crops in Develop. Check any labeled frames and adjust them by hand if needed, so the film border and scanner background are outside the crop.
- Continue with your usual Negative Lab Pro conversion workflow.
Already converted the roll? Choose Already inverted in Cut Corners. Crops remain editable Lightroom settings, and one Undo reverts the batch. Cut Corners does not replace a negative conversion tool.
Try this workflow free on 30 images.
Detailed steps to crop a roll
- Select one photo or a whole roll in the Library.
- Run Library → Plug-in Extras → Cut Corners: Auto-crop film frames.
- Pick the film type:
- Color negative — orange-masked base
- B&W negative — bright clear base, dark frame
- Slide / positive — dark rebate, bright frame
- Already inverted — scans converted to positive before cropping
- Auto-detect — per-image characterization, for mixed rolls
- Pick the film format (35mm full frame, half frame, XPan, 6×4.5, 6×6, 6×7, 6×9, 4×5, or custom) — it sets the aspect ratio detection expects.
- Optionally enable Dry run to see what would happen without changing anything.
- Review the summary. Skipped frames carry a color label (red by default), so you can filter to them in the grid and crop those few by hand.
Frames that already have a crop are skipped unless you enable Re-crop photos that already have a crop, which resets the crop first so detection sees the full scan. Everything is non-destructive: a single Undo (or the Crop tool in Develop) reverts any of it.
Keyboard shortcut
Lightroom Classic has no built-in shortcut editor for plugin menu items on either platform, so binding one needs to happen in the OS.
macOS
Quit Lightroom, then in Terminal run this, then relaunch:
defaults write com.adobe.LightroomClassicCC7 NSUserKeyEquivalents -dict-add " Cut Corners: Auto-crop film frames" "^r" && killall cfprefsdNote: The three leading spaces in the title are required.
Now you can use Control-R to open Cut Corners.
Windows
Use a hotkey utility like AutoHotkey to bind a global hotkey that selects the menu item directly.
Settings & Preview
For a tricky roll, click Settings & Preview… in the run dialog before committing. It shows the detection overlay on the first few selected photos and re-runs live as you adjust anything:
- red — candidate mask
- blue — detected film area
- green — detected frame
- magenta — the crop Lightroom will apply
Use these settings saves the values for the batch run; Cancel discards them.
Tuning reference
| Setting | Default | Meaning |
|---|---|---|
| Edge band | 0.10 | Corners must lie within this fraction of each film-area edge |
| Crop inset | 0.005 | Shrinks the crop slightly to keep the rebate edge out |
| Aspect target | 1.5 | Long/short ratio; set by the film format preset, or custom |
| Aspect tolerance | 0.08 | How far off-aspect a frame may be before it's flagged |
| Min frame area | 0.64 | Smallest accepted frame as a fraction of the film area |
| Max frame area | 0.99 | Largest accepted frame as a fraction of the whole scan |
| Manual threshold | 0 (adaptive) | Fixed brightness cutoff for rolls the adaptive threshold misreads |
| Mask dark film holder edges | off | Excludes dark scan surround (holders/carriers) from detection |
| Max preview size | 1500 px | Detection preview resolution; larger is more precise but slower |
Troubleshooting detection
Start with Settings & Preview… — it shows the exact rule that rejected a frame, updating live as you adjust.
- Frame found but crop slightly off? Raise the max preview size, or nudge the crop inset.
- Scanner bed or film holder visible? Blown white or black background is excluded automatically; for dark-gray holder edges enable Mask dark film holder edges.
- Underexposed or unevenly lit rolls? Detection falls back through a threshold sweep and a backlight-flattening pass automatically; if it still misses, try the manual threshold.
- Whole roll skipped with an aspect reason? Check the film format preset matches the roll (half frame vs full frame is the usual culprit).
For a full roll, enable Save diagnostic images in the run dialog: the temp folder (path shown in the summary) keeps, per frame, the exported preview, the detection verdict, and an overlay image using the same colors as the preview dialog.
Limitations
- Mirrored photo orientations (flipped in Lightroom) are skipped.
- Rotation is limited to Lightroom's ±45° straighten range.
- Detection assumes one full frame per scan with film border visible around it.