Skip to content
DuoBolt

Keep rules

Every group DuoBolt finds asks the same question: of these copies, which one do you keep? Answering it group by group is fine for twenty groups and hopeless for two thousand.

A keep rule answers it once, in words. Settings → Selection holds an order of rules; DuoBolt reads it top to bottom, and the first rule with an opinion decides. What no rule can tell apart is left alone — nothing is selected on a guess.

DuoBolt's Settings on the Selection page: a Protected folders list above, and below it Rule order with a Duplicates / Similars switch set to Similars and two rows — DuoBolt's rules, summarised as favorite, first import, edited copy, copy with more pixels, and My rules, selected, summarised as blown highlights is the lowest, crushed shadows is the lowest, copy with more pixels, shorter path, with a Customize… button at its right.

The section shows what is in force, which is one of two things:

  • DuoBolt’s rules — the order we maintain. It means the same thing on every machine and it improves with a release.
  • My rules — your own order, edited behind Customize….

The switch above them chooses which finder you are looking at: Duplicates and Similars keep separate orders. They have to. Duplicates compares copies that are byte-for-byte identical, so nothing about the pixels, the format or the metadata can tell them apart; what is left is where a file lives and what it is called. Similars compares different files of the same picture, where all of that decides.

The keep-rules editor open over Settings, titled My rules · Similars: a Start from row offering DuoBolt's rules, Best exposure, Reclaim space and The original, then five numbered rules — keep where blown highlights is the lowest, keep where crushed shadows is the lowest, keep the copy with more pixels, keep the shorter path, keep first path A to Z — each with a drag handle and a remove cross, an Add rule row underneath, and a help strip explaining the rule under the pointer.

Customize… opens the editor. It starts from one of the named ladders — DuoBolt’s rules, Best exposure, Reclaim space, The original — and you change it from there: drag a rule to move it, to remove it, Add rule… to append one. There is no Save: the order is in force as you leave.

The strip along the bottom explains the rule under your pointer, in one sentence, so a rule you have not used before does not have to be guessed at.

Rules about the photo itself, in Similars only — in Duplicates the copies are identical and these could never decide:

  • the copy with more pixels — width × height, not bytes. A re-encode at the same size ties; a downscaled export loses.
  • the RAW — the negative over the develop. A group with no RAW has no opinion here.
  • the copy that kept its EXIF — a stripped copy is the one that went through a chat app or a web export.
  • the favorite, the first import, the edited copy — what the Photos library knows. See The Photos library.

Rules about the file:

  • the larger file / the smaller file
  • the newer file / the older file — by the date the photo was taken where there is one, not the date the file was written.

Rules about the name and where it lives:

  • the name without a copy marker copy, copy 2, - Copy (2), a trailing (1). A trailing -1 is deliberately not a marker: that is how cameras number originals.
  • the shorter name / the longer name — the last component, not the path.
  • the shallower folder / the deeper folder — counted in separators.
  • the shorter path / the longer path, first path A→Z / last path A→Z.
  • the copy in / the copy outside a folder you name. This one decides only where a group straddles that folder: all inside, or all outside, is no opinion. It is the only rule an order may hold twice.
  • protected files — keeps every copy under a protected folder, and has no opinion in a group with none.

Add rule… → EXIF builds a sentence from three parts: an attribute, a comparator and a value.

Attribute Asked as
Pixels is the highest / lowest, is over / under, is exactly
Format, Color space, Camera is, is not
ISO is the lowest / highest, is under / over
Shutter is the fastest / slowest, is faster / slower than
Aperture is the widest / narrowest, is wider / narrower than
Focal length is the lowest / highest, is under / over
GPS, EXIF is present, is absent
Brightness, Contrast is the highest / lowest, is over / under
Blown highlights, Crushed shadows is the lowest / highest, is under / over

Two kinds of question live here, and they behave differently:

  • is the lowest / the highest ranks the copies of a group against each other. “Keep where ISO is the lowest” keeps the cleanest frame of whatever that group happens to hold.
  • Everything else compares each copy to the value you wrote. “Keep where ISO is under 400” has no opinion in a group where every copy was shot at 1600.

Values are written the way a photographer reads them — 1/250s, f/2.8, 12 MP, 400 — and stored as the scan’s own numbers.

The last four attributes come from the scan’s own measurement of the frame, not from the camera: how bright it is, how much contrast it holds, and how much of it is pinned at pure white or pure black. “Keep where blown highlights is the lowest” is how you say keep the one that is not burnt out.

  • Bulk Select → Keep by my rules, or ⌘RCtrl+R on Windows — over every group on screen.
  • Right-click a group → Keep by my rules, over that group alone. Like every per-group rule this edits the selection you already have; it does not claim it.
  • The order also decides what Review Selection proposes.

Bulk Select ends with Edit my rules…, which opens Settings on this section — the rule you just wished existed is two clicks from the menu that made you wish it.