Keeper Mode.
Keeper Mode is the side-by-side keeper-vs-contender flow for picking the strongest frame(s) out of a burst. You select a related group of images in Grid, open Keeper Mode, then walk through the queue making one binary decision at a time. At the end, every keeper gets promoted by +1 ★ (capped at 5★). Nothing is written to your ratings until you confirm.
On this page
When to use it
Keeper Mode shines when:
- You shot a burst and want the single best frame
- You have near-duplicates from rapid-fire shooting
- You’re working through a wildlife / action sequence looking for peak action
- You shot a series of portraits with small expression differences
- Any time the question is “which of these N nearly-identical frames is best?”
For unrelated images, regular Loupe / Grid culling is faster — Keeper Mode is purpose-built for direct comparison of similar frames.
Launching a session
From Grid view, build a multi-selection of 2 + images, then trigger Keeper Mode:
1. Select images
- Click a tile to select one (anchor for shift-click)
- ⌘-click to add or remove individual tiles
- Shift-click to range-select from the anchor
Selected images are passed to Keeper Mode in the current grid sort order — not the order in which you clicked them. So if you’re sorted by capture time, the burst plays through chronologically.
2. Open Keeper Mode
Three equivalent ways to launch:
- Press C with 2 + selected (the same key that opens Compare 4-up otherwise)
- Click the Keeper Mode button in the Grid toolbar
- Right-click any tile → Open N Selected in Keeper Mode
Pre-flight checks
Before a session opens, SpeedCull validates the selection:
Fewer than 2 eligible images
Keeper Mode promotes by +1 ★, capped at 5 ★, so 5 ★ images can’t be promoted. They’re filtered out. If after filtering you have fewer than 2 images left, you’ll see:
Not enough images for Keeper Mode
Select at least two non-5★ images to use Keeper Mode.
5 ★ images in selection
If your selection includes 5 ★ images, you get a confirmation:
Open Keeper Mode?
3 selected images are already 5★ and will be excluded — Keeper Mode promotes by +1★.
Continue with 9 eligible images?
[Cancel] [Continue]
Large selection (> 30 images)
Keeper Mode works best with small related groups. If you’ve selected more than 30 images, you’ll see a warning explaining the worst-case comparison count (n − 1 rounds). Continue if you’re sure; otherwise cancel and refine your selection.
The Keeper / Contender layout
Keeper Mode takes over the whole Cull detail pane. Two big panes side-by-side — KEEPER on the left (accent border), CONTENDER on the right. Each pane shows the filename, current star rating, and the Screen-tier preview of the image.
Below the panes:
- Saved keepers strip — count + filenames of any locked keepers so far
- HUD — round counter (Round 3 / 11), images remaining in queue, the +1 ★ reminder, and inline shortcut hints
- Action buttons — Undo, Finish, Cancel
The pass control bar, funnel strip, mode picker, and filter / sort dropdowns are all hidden during a Keeper Mode session — there’s nothing to do with them while you’re comparing, and the absence of clutter helps you focus.
The four core actions
A — Keeper stays
A or ←. Current keeper is better than current contender; the contender is consumed and the next image from the queue becomes the new contender. Keeper unchanged.
D — Contender becomes keeper
D or →. Current contender is better; it replaces the keeper. The next image from the queue becomes the new contender.
K — Save keeper and continue
K. Lock the current keeper into saved keepers — it’s definitely getting promoted. The current contender becomes the new keeper, and the next image from the queue becomes the new contender. Use this when you’ve found one definite keeper but want to keep searching the rest of the burst for more.
Enter — Finish and review
Enter. Stop comparing immediately and open the completion summary. Any current keeper joins the saved keepers list. Anything still in the queue is discarded (no rating change either way).
Other useful keys
| Esc | Cancel session (with confirmation). No ratings have been changed at this point. |
|---|---|
| ⌘Z / ⌫ | Undo the last decision — works for keeperStays, contenderBecomesKeeper, and saveKeeper. Undoing from the completion summary returns you to the active session. |
| F | Toggle focus crops on both panes |
| Z | Toggle synchronized 2× zoom on both panes |
Focus crops and synchronized zoom
Focus (F)
Toggles a small picture-in-picture AF crop in the bottom-right of each pane. Keeper Mode does not trigger crop generation — it displays only crops that already exist on disk. To populate the cache, view the images in Loupe with Focus Monitor on first; from then on Keeper Mode picks them up for free.
See Focus Monitor for details on how AF metadata is parsed.
Zoom (Z)
Toggle a centred 2× zoom on both panes simultaneously. The keyboard flow keeps working while zoomed — A, D, K, Enter still drive the comparison. There’s no panning yet; both panes are centred at 2×. Press Z again to return to fit.
Why 2× and not literal 100%? True 100 % requires a pan-and-zoom workflow that fights the keyboard-first decision flow. The 2× compromise is enough to spot eye-sharpness differences in most bursts; for genuine pixel-peeping, fall back to Loupe (where pinch-zoom and pan are both available).
The completion summary
The summary appears when:
- The queue runs out (last contender consumed by an A / D / K decision)
- You explicitly press Enter to finish early
What it shows
- Images reviewed — total selected at session start
- Comparisons made — count of A / D / K actions (Finish doesn’t inflate this)
- Keepers — saved keepers + final keeper (deduplicated)
- Promotion — +1 ★
- Other images unchanged — total − keepers
- To be promoted: filename plus old★ → new★ per keeper
- Excluded 5 ★ count if any were filtered out at launch
Three actions
- Apply Promotions (Enter) — writes the +1 ★ ratings to the database and exits to Grid. A confirmation toast appears at the top of Grid (“N keepers promoted to X★”) and auto-dismisses after a few seconds.
- Undo Last & Resume — reverses the most recent decision and drops you back into the active session, exactly where you were before the last action. Same as ⌘Z.
- Cancel (Esc) — with confirmation. No ratings have been changed at this point. You return to Grid with your selection intact.
How promotions are applied
For each image in the final keepers list:
newRating = min(5, oldRating + 1)- If
newRatingequalsoldRating, the image is left untouched (no DB write) - Otherwise the rating is written to the SQLite catalogue and the image’s
syncStatusgoes todirty— meaning it’s now ready to be picked up by the next Sync to XMP
The catalogue write is the only thing that happens during Apply. No XMP sidecars are written during Keeper Mode — that happens in the separate Sync to XMP phase, just like every other rating change.
Saved keepers, dedupe, and the final keeper
The final keepers list is built like this:
- Start with the saved keepers list (everything you locked with K)
- Append the current keeper, if any, and if not already in saved keepers
- Deduplicate by image id, preserving insertion order
Guarantees
| No rating changes during the active session | Decisions are kept in memory until you explicitly Apply |
|---|---|
| 5 ★ images are filtered out before launch | Belt-and-braces: even if one slipped through, the engine clamps at 5 |
| Other images are never modified | Only the final keepers get their rating bumped |
| Cancel is fully safe | Esc → Discard Session leaves your project in exactly the state it was in before launch |
| RAW files are never written | Same hard rule as the rest of SpeedCull |
| Sessions are in-memory in 0.1 | Force-quitting mid-session loses the session — but no destructive write has happened yet |