The full tour
Every feature,
and why it exists.
Nothing here was built on spec. Every feature below was demanded by a real shoot, and most were built the same evening something felt slow.
An infinite canvas that refuses to hitch
The one job: moving a picture over a pile of hundreds of others must never stutter. Everything else is negotiable.
Hundreds of photos, one surface
Pan and zoom over 500+ full-resolution imports. Off-screen photos are culled, on-screen ones render from right-sized previews: three tiers, swapped as you zoom, so overview never decodes more pixels than your screen can show.
Smooth zoom, anchored to your cursor
Mouse-wheel zoom glides instead of stepping; trackpad pinch is direct. Zoom out for the contact sheet, dive to a single frame, and photos stream in as the view widens.
Quality that steps aside
Decorations that cost frames (keeper glows, fine sampling) pause during motion and return the instant you stop. You get the pretty version exactly when you're looking, and speed when you're moving.
Boards that fly
Click anything in the sidebar and the camera flies to it. ⇧1 fits the whole board, ⇧2 fits the selection, ⌘0 snaps to 100%.
Import that meets your files where they are
Drop a folder
Drag an export folder from Finder and its pictures land in a tidy grid, in natural filename order, so shot-9 comes before shot-10 and the sheet reads in shooting sequence. Subfolders stay untouched on purpose.
HEIC, straight off the iPhone
iPhone photos convert on the way in using macOS's own engine, no exporting to JPEG first. Orientation metadata is honoured, so portraits land upright.
Video clips too
.mov and .mp4 files import as poster frames with a ▶ badge: draggable, croppable, cullable like any photo. The clip itself plays in the full-screen view, and exports hand you the original file.
Paste works
⌘V an image from anywhere and it lands at your cursor. Same photo imported twice? The vault stores it once.
Sorting, at thinking speed
Full-screen, three keys, no timer. Keepers and outs are just labels on the mess: nothing is deleted, everything is undoable.
- Space or a double-click opens the lightbox; ←→ walk the shoot in reading order
- 1 rejects, 2 keeps, 3 or U back to neutral; 1 and 2 advance automatically
- The same keys work on the board: marquee five near-duplicates, press 1, done
- Z or a click zooms to true pixels from the original file. Judge focus, not previews; drag to pan the frame
- C compares 2–4 selected frames side by side (four go 2×2), with keep/reject under each
- Keepers wear a soft glow, rejects dim to a whisper; marks survive quitting and every one is undoable
- The sidebar reorganises itself live into Keepers · Unsorted · Rejected; click a group's count to select them all
- Toolbar chips: ✓ selects all keepers, ✗ all rejects (one ⌫ clears them off the board), ⟲ wipes the marks
- Right-click an empty spot → Gather here: scattered keepers fly into a tidy pile, still selected, ready to drag
Carousels as one object
Frames are viewports, not containers: they own nothing and clip nothing. You slide photos underneath until the crop reads right.
Create the whole strip
Press F, pick a ratio (4:5, 3:4, 9:16, 1:1, 5:4, 4:3, 16:9) and a slide count, and the strip appears abutting and selected, at true 1080px export dimensions.
Decks move together
Grab any slide's border and the whole carousel moves; resize a corner and every slide scales in step. Slides reorder by drag in the sidebar, taking their photos with them.
Magnet snapping
Frames snap flush to frames, photos to frame and photo edges, moving and resizing, with pink guides at the matched edge. S toggles it when you need freedom.
Fill or fit in one click
Right-click a photo overlapping a slide: Fill frame covers it exactly with an auto-crop, Fit in frame letter-boxes it. Works on a whole selection at once.
Slide backgrounds from the photos
Each slide can carry a background colour: typed as hex, or picked from ten swatches sampled from the photos actually sitting in that frame.
Badges and labels
Every slide shows its position; click the badge to rename it, renumber it, move it between carousels, or add the next slide.
Enough photo editing, and no more
This is a planning surface, not a darkroom, but framing decisions live here.
Non-destructive crop
Right-click → Crop: the full image ghosts behind a bright window with a rule-of-thirds grid. Drag edges to reframe (they snap to nearby frames and photos) or drag inside to slide the photo behind the window. Pixels never move on the board; Uncrop restores everything.
Rotate in place
↺ ↻ in the crop view turn the photo in 90° steps. The crop turns with it, and exports render the rotation from the original.
Photo frames
A solid border in any colour, drawn inside the photo's bounds so layout and snapping stay exact. The colour picker offers the photo's own dominant tones, sampled from the visible crop, not parts you removed.
Find the source
Right-click → Find in Finder reveals the original file in the vault. Export a selection and you get those originals back, byte for byte.
Collage maths, done for you
Exact gaps
Select photos, type a pixel gap, and pack them into a row (⇥) or column (⤓): every gap identical, heights untouched. Zero packs edge to edge.
Spread evenly
With three or more selected, Even pins the end photos and equalises every gap between. The "stop looking accidental" button.
Gather anywhere
Right-click a spot → gather the selection into a compact pile centred exactly there, sizes preserved, no overlaps, one undo.
Group resize
Any mixed selection gets resize handles; corner-drag scales the whole arrangement as one object, aspect held for photos.
Notes that behave like stickers
Instant text
N drops a note, you're typing immediately. Six colours, bold, italic, centred by default; the colour controls appear only while a note is selected.
Text scales with the note
Drag a corner and the type grows live with the box: headline-sized for section markers, small for caption drafts. Presets from 56 to 256px when you want exact.
They export too
Notes inside a slide render into the exported PNG, centred. Usable for text slides, not just margin scribbles.
Exports for every audience
- Slides: each frame as a 1080px PNG (or 2× for 2160), named
carousel-1.pngonward in deck order, drawn from the untouched originals - Carousel as one image: the whole strip stitched wide, for seeing the swipe at a glance
- Whole board: a moodboard PNG or JPEG of everything, frames as thin outlines
- Picked photos: your keepers copied out as byte-identical originals with their real filenames; videos come out as the actual clips
- Copy slide: ⇧⌘C puts the current slide straight on the clipboard
- No silent overwrites: an existing filename prompts: overwrite, skip, or keep both (auto-numbered)
A vault you can trust, and read
Boards are plain JSON in ~/Documents. Photos are content-addressed copies. Nothing phones home.
Autosave, atomically
Every change hits disk within a second, written to a temp file and renamed, so a crash can never leave a half-written board. Closing flushes first, and refuses to quit if a save fails.
Undo everything
Moves, crops, marks, deletions, whole gather operations: each one is a single ⌘Z step, coalesced sensibly.
Archive finished boards
One click releases a board's full-res originals but keeps it browsable from previews forever, with typically 90% of the space back. Archived boards live in their own menu, out of the way.
Trash with a way back
Deleted boards go to an in-vault trash. The Storage view lists them with a Restore button, shows exactly what everything weighs, and empties the trash only when you say so.
Space accounting
Storage… in the menu breaks the vault into originals, previews, boards and trash, with proportional bars, and Clean Unused Assets reclaims photos no board references.
Many boards, one switcher
⌘K opens a fuzzy-search switcher with live thumbnails; boards reorder by drag in the sidebar.
The whole keyboard map
Newsletter
Watch it get built
Occasional notes on what changed, what broke, and what a tool looks like when it is written for exactly one person's workflow.