Features

Everything it does, grouped by what you're trying to do.

Not a checklist. The detail that matters here is how each thing behaves when something goes wrong — which is the difference between a utility you trust with your screenshots and one you don't.

01 — Find

Retrieval is the whole product.

Everything else exists to make this two-second interaction possible.

timeoutesc
$ swift build -c release
Compiling ScreenshotInboxCore (48 sources)
error: connection timeout after 30000ms
at PackageResolver.resolve(_:) line 212
host: github.com attempt 3 of 3
** BUILD FAILED **
Terminal — build failureTerminal9 Augerror: connection timeout after 30000ms
OCRQualityTool — batch run
thermal state: nominal
low power pause triggered 0 times
no timeout observed
queue drained, newest first
Xcode — Vision throughputXcode22 Julthermal state: nominal, no timeout observed
$ swift build -c release
Compiling ScreenshotInboxCore (48 sources)
error: connection timeout after 30000ms
at PackageResolver.resolve(_:) line 212
host: github.com attempt 3 of 3
** BUILD FAILED **
Copy TextCopy ImageCopy Both
↑↓ move copy text⌘↵ copy image On this Mac only
The Search Overlay. Opens over whatever you're doing, searches as you type, and puts the result on your pasteboard without you leaving the app you were in.
Global overlayA configurable shortcut opens a Spotlight-style panel over any app. It doesn't steal focus permanently or disturb the app underneath.
Full-text searchSQLite FTS5 across every word Vision recognized, with prefix matching as you type.
Typo tolerantWhen exact search finds nothing, a bounded edit-distance pass runs — so one wrong character doesn't hide the capture.
Meaning fallbackA local semantic mode finds captures when you remember the gist but not the wording. Still entirely on-device.
Match highlightingWord-level bounding boxes are stored at recognition time, so the matching region glows on the image itself.
FiltersDate range, source app, tag, has-URL, content type, extracted entity, sensitive content.
Smart collectionsSave any combination of search and filters as a live collection, custom date ranges included.
Grid, list, detailBrowse newest or oldest, page through deterministically, and Quick Look the full image with a click.
02 — Capture

An empty Desktop, with zero configuration.

The ideal user installs it and never thinks about it again.

Settings
Screenshot folder
Use macOS Setting~/Desktop — followed automatically if you change it
Watching
Choose a different folder
Choose Folder…
Original files
Move into the library immediately
Keep the original for 24 hoursA safety net while you're still deciding to trust it
Leave a permanent copy in place
Manual import
Add existing screenshots
Import Images…Import Folder…
Importing folder~/Pictures/Old screenshots
1,840 of 5,000
PauseDiscard Saved Import
Progress is journaled to disk. Quit mid-import and it resumes exactly where it stopped — and screenshots you take right now are still indexed first.
Settings → Capture. Choosing a folder is an override, not onboarding — on a normal first run this page needs no attention at all.
Finds your folder itselfReads your live macOS screenshot location, including a custom one, and follows it if you change it.
Ingests in about a secondNative FSEvents watching, with file-stability checks so a partially written screenshot is never half-imported.
Catches up while you're awayScreenshots taken while the app was quit are ingested at next launch.
You choose the original's fateMove it immediately, keep it for a 24-hour grace period, or leave a permanent copy where it was.
Backlog import that survives a quitPoint it at folders holding thousands of screenshots. Progress is journaled, so pausing, cancelling or quitting mid-import loses nothing.
Live captures always winA screenshot you take right now jumps ahead of the backlog queue and is searchable first.
Drag anything inDrop images onto the Library, or use the import panel. PNG, JPEG, HEIC, TIFF and GIF.
Pause when you need toOne toggle in the menu bar stops capture — for a screen share, a demo, or anything you'd rather not index.
03 — Read

Apple Vision, tuned for screens.

Screenshot text is the easiest case in OCR — high contrast, aligned, no skew. No model downloads, no Python runtime, nothing added to the app's size.

Settings
Recognition
Profile
AutomaticScreen textHandwriting
LanguagesDiscovered from what your Mac has installed
3 selected
Automatic picks a profile per image using recognition confidence — screen text for a terminal window, the handwriting model for a photo of a whiteboard.
Power and background work
Pause in Low Power Mode
ProcessingNewest captures first
Idle
Re-run recognition on every screenshotUse after changing language or profile
Reprocess All
Settings → Text Recognition. The Low Power Mode toggle exists because a background OCR queue is exactly the thing that gets blamed for battery drain — so it stops on its own.
Two recognition profilesOne tuned for screen text, one for handwriting and whiteboards. Automatic mode picks per image using recognition confidence.
Your installed languagesThe app discovers which Vision languages your Mac has and lets you choose among them.
Newest first, in the backgroundRecognition never blocks the interface, and the capture you just took is processed before the backlog.
Honest statesPending, no text found, completed and failed are four different things — an image with no text is a valid result, not an error.
Stops on low batteryRecognition pauses in Low Power Mode and resumes when you're plugged back in.
Reprocess anythingChanged a language or profile? Re-run recognition across the whole library from Settings.
04 — Act

Finding it is half. Using it is the other half.

Screenshot reservedRedaction editor — drag regions, blur or black box, detected secrets pre-filled
Redaction. Detected emails and API-key-shaped strings can pre-fill the regions. The redacted copy is a separate file — the original is never modified.
Copy text, image, or bothThree distinct actions. “Both” writes one pasteboard transaction carrying both representations, so the destination app takes whichever it supports.
Redaction editorDrag regions, apply blur or a black box, save reusable recipes. Detected emails and secrets can pre-fill the regions.
The original is never touchedRedaction writes a separate file. What you share is the redacted copy; what stays local is the original.
Send it somewhereReminders, Things, Obsidian (straight into your vault as Markdown), Apple Notes, and the native macOS share sheet.
Rename from what it saysGenerate a real filename from the recognized text, preview before and after, and undo. Files are never renamed automatically.
Export without lock-inExport a selection or the entire library to a folder, with a sidecar JSON of extracted text and metadata.
Tags and bulk actionsSelect many, tag them, trash them, export them. A tag manager keeps the vocabulary tidy.
Quick Look and FinderSpace-bar preview of the full screenshot, and Reveal in Finder for the underlying file.
05 — Keep

A library that doesn't become the mess it replaced.

Sixty screenshots a week is roughly 4.5 GB a year. Retention isn't optional at that rate — but nothing is deleted without you seeing it first.

Settings
Stored screenshots
Library~/Library/Application Support/Screenshot Inbox
1,284 · 3.9 GB
TrashRecoverable for 30 days
12 · 41 MBTrash…
Retention rules
Archive older screenshots
Older than 180 days
Delete older screenshots
Older than 365 days
Pending review24 screenshots are waiting for you to confirm
Needs attentionReview…
A rule never acts on its own. It proposes a set, you review it, and only checked screenshots are changed.
Retention Review. A rule proposes a set; you confirm it. Uncheck the invoice you still need and the rule leaves it alone.
Retention rulesArchive or delete captures older than N days — with a review sweep showing exactly what's about to change.
Recoverable TrashRemoved captures go to an in-app Trash with a grace period, and can be restored until it's purged.
Near-duplicate reviewPerceptual hashing groups the four almost-identical shots you took seconds apart. “Keep Newest” merges their tags; “Not Duplicates” is remembered.
Nothing automaticEvery destructive action is proposed and confirmed. The app never removes one of your screenshots on its own.
06 — Protect

Built for people who screenshot things they can't upload.

Settings
What stays local
Screenshot imagesStored as ordinary files in your Library folder.
On this Mac
Recognized textApple Vision, on this device.
On this Mac
Source application metadataStored locally with each capture when available.
On this Mac
Search and meaning indexPlain SQLite you can open and inspect.
On this Mac
Network access
Capture, recognition and searchNo network code exists on this path.
Never
Check for UpdatesOnly when you press the button.
On request
License activationOne call, at activation.
On request
Encrypt the recognized-text index
AES-GCM, key held in this Mac's KeychainSearchable prefixes are stored only as keyed hashes
Optional, and honest about the trade: encrypting gives up the inspectable-SQLite property above.
Settings › Privacy. Written to be read by a sceptic. Every row states a fact you can check from outside the app.
Zero network calls in the core loopEnforced by the build, not by policy. Capture, recognition and search cannot reach a network.
Optional index encryptionAES-GCM over recognized text and word boxes, keyed to this device via the Keychain. Searchable prefixes are stored only as keyed hashes.
Safe if the key is lostYour images are untouched, and the app offers to rebuild recognition rather than silently writing new plaintext.
A settings page that says it plainlyExactly what stays local, which permissions are in use, and what network access exists — in one pane.

Two dependencies, and neither talks to a network

The whole application depends on GRDB for storage and Sparkle for updates. That isn't minimalism for its own sake: every dependency is a licence to audit and a claim to defend. The commit gate rejects a third one, rejects a network call in the core module, and rejects a force-unwrap that could crash on your library.