photo culling software

The fastest way to
pick your keepers.

Browse thousands of RAW photos in under a second. Pick, reject, export to Lightroom or Capture One. A 4.5 MB native app that does one thing and does it fast.

Buy for $14.99 early bird pricing · macOS
$ cull ~/Photos/wedding
Loading 4,218 RAW files...
Ready in 0.3s

How it works

01

Open any folder

Point cull at a folder of RAW files. Thousands of images load instantly — no importing, no catalog, no database. Every RAW file already contains a full-resolution JPEG preview baked in by your camera. Cull extracts these directly. No decoding. No waiting.

02

Pick or reject

P to pick, X to reject, arrow keys to move. Keyboard-driven culling workflow designed for speed. Review an entire wedding shoot in minutes, not hours.

03

Hand off to your editor

XMP sidecars are written the instant you pick or reject. Import into Lightroom or Capture One and your picks appear as green labels, rejects are already flagged. Star ratings are untouched — ready for your grading pass.

Why is it so fast?

Every RAW file — CR2, CR3, NEF, ARW, DNG — already contains a full-resolution JPEG preview baked in by your camera. Most photo software ignores this and decodes the entire RAW file from scratch.

cull extracts these embedded previews directly. No RAW decoding. No rendering pipeline. Just the image your camera already made, displayed instantly.

<1s
folder load time
4.5 MB
binary size
~3k
lines of Rust

Features

One job, done fast. Everything a culling app needs, nothing it doesn't.

///

Instant RAW preview

Extracts embedded JPEG previews from RAW files. No decoding, no rendering pipeline. Images appear the moment you open a folder.

<>

4.5 MB native app

Built in Rust with GPU-accelerated rendering. Smaller than a single RAW file. No Electron, no runtime, no bloat.

.xmp

XMP sidecar output

Writes industry-standard XMP files on every pick or reject. Lightroom reads them as flags and color labels. Capture One reads them as color tags.

[P]

Keyboard-driven

P to pick, X to reject, U to unmark. Arrow keys to navigate. Shift+arrow to extend selection. Grid and loupe views.

f/2

EXIF at a glance

Camera body, lens, focal length, aperture, shutter speed, ISO. Filter your shoot by camera or lens to compare setups.

>>

Export picks

Copy your selections to a _picks/ subfolder with one shortcut. Open in Lightroom, Capture One, Photoshop, or any editor.

Works with your workflow

cull sits before your editor. Pick your keepers here, then import the folder into Lightroom or Capture One — your picks and rejects are already tagged.

Action XMP written Lightroom Capture One
P Pick Label = "Green" Green label Green tag
X Reject Rating = -1 Reject flag Red tag
U Unmark Rating = 0 Unflagged No tag
R Rotate Orientation Correct rotation Correct rotation

Star ratings are untouched. They're reserved for your own grading pass within picks.

Rejects just work. Lightroom's native reject flag is Rating = -1 in XMP. Cull writes this directly.

Green = picked. Lightroom's Pick flag has no XMP representation. Green label is the standard proxy.

Every major RAW format

If your camera made it, cull can open it.

.CR2
Canon
.CR3
Canon
.NEF
Nikon
.ARW
Sony
.DNG
Adobe/Leica
.ORF
Olympus/OM
.RAF
Fujifilm
.RW2
Panasonic
.PEF
Pentax
.SRW
Samsung
.JPEG
Universal

How it compares

cull Photo Mechanic Lightroom Classic Capture One
App size 4.5 MB 133-307 MB ~2 GB ~1.2 GB
Import step None None Required Required
XMP sidecars Instant Yes On export On export
Price $14.99 $149/yr or $299 $15/mo $15-24/mo or $299

Prices as of March 2026. Photo Mechanic Plus perpetual $299, subscription $149/yr. Lightroom Classic via Adobe Photography Plan. Capture One Pro subscription or perpetual license.

Get cull

One-time purchase. No subscription, no account, no cloud.

EARLY BIRD
$14.99
one-time
Buy now
REGULAR
$29.99
one-time
coming soon

Open source on GitHub. Buy a license to support development and get a ready-to-run binary.

Or build from source:
$ cargo install --path .