What It Does
The motivating use case: copying one column out of an HTML table in an email. The boring solution is to copy the whole table, paste it somewhere, and trim it back to the column you wanted. CopyLens makes “this column I’m looking at” the same gesture as “this whole table” — you just draw a tighter box.
Hit your shortcut, drag a rectangle, release. A transparent overlay covers every connected display while you draw. CopyLens captures that rectangle at native pixel density via ScreenCaptureKit and runs Apple’s Vision framework over it. You get one of three outcomes:
- A table — if the text forms a grid, it’s copied as both an HTML table and tab-separated values, so it pastes as real cells into Numbers, Excel and Sheets, as a formatted table into Word, Pages and Mail, and as clean tab-separated columns into plain-text editors.
- Text found — joined and placed on the clipboard as plain text, sorted top-to-bottom and left-to-right in reading order.
- No text found — the cropped image is placed on the clipboard as PNG + TIFF, ready to paste into any app that accepts images.
Because the gesture is the same regardless of content, you don’t have to decide ahead of time whether you want text or an image. Draw the box; CopyLens does the right thing.
One Gesture, Three Outcomes
One column from a table. Draw a tight rectangle that covers just one column’s width. Vision only sees text inside the rectangle, so the result is exactly that column — top to bottom, one line per row, plain text. Paste anywhere. Tables in Mail, in browser pages, in PDFs, in screenshots-of-PDFs — all the same gesture.
A whole table. Draw a rectangle around a multi-column table and CopyLens reconstructs the grid geometrically — clustering recognised words into rows by their vertical position and into columns by the whitespace corridors between them. It’s copied in two forms at once, so it pastes as cells into a spreadsheet, as a formatted table into Word or Mail, and as tab-separated columns into a code editor. Detection is automatic and conservative; if the region isn’t convincingly tabular, CopyLens falls back to plain text.
A region of a diagram. Draw a rectangle around a chart, a panel of an image, a UI mockup. Vision finds no text (or filters out as noise anything it does), so CopyLens drops the cropped image on the clipboard instead. Paste into Notes, into a message, into a Keynote slide.
Controls
| Action | Result |
|---|---|
| controloptionshiftcommand\ | Open the selection overlay (default hotkey — configurable). Pairs naturally with HyperCaps as Hyper-\. |
| Drag | Draw a rectangle around the content you want to capture |
| Release mouse | Commit the capture |
| escape | Cancel without capturing |
A brief HUD confirms which path ran (“Copied table — 18 rows × 4 cols” / “Copied 247 chars” / “Copied image 320×180”). All outputs are paste-targetable immediately.
Multi-Display
The overlay covers every connected screen at once; you can drag your rectangle starting on whichever screen you’re working on. The capture is taken from the screen containing the rectangle’s midpoint, so a rectangle that physically straddles two screens captures from the screen it’s mostly on — a deliberate simplification, since straddling captures are rare enough not to warrant the per-display composition cost.
Settings
Right-click the menu bar icon and choose Settings… to configure:
- Hotkey — click the field and press the combination you want. Default is controloptionshiftcommand\ (Hyper-\); change it to anything that includes at least one modifier.
- Show feedback HUD — toggle the toast that appears after each capture. Off if you’d rather work silently.
- OCR languages — read-only display. CopyLens picks recognition languages from your system’s preferred language list, intersected with Vision’s supported set, with English always appended as a fallback. If your Mac is set to French, you’ll see
fr-FR, en-UShere and both will be recognised on every capture. - Show icon in menu bar — hide the menu-bar icon while CopyLens keeps running. The app remains reachable via its keyboard shortcut; your choice persists across launches, including login auto-start. Shown only on macOS 14–15; on macOS 26 (Tahoe) and later, use System Settings → Menu Bar, which provides this natively.
- Launch at Login — start automatically when you log in.
If you’ve hidden the menu-bar icon and want it back, just re-open CopyLens from your Applications folder — it reappears immediately.
All settings persist immediately, no Save/OK button.
Auto-updates are handled by Sparkle. Use the “Check for Updates…” menu item to check on demand; Sparkle’s prompt offers an “Automatically download and install updates in the future” checkbox the first time an update is available. CopyLens checks for new versions automatically once a day in the background.
Permissions
Screen Recording is the only permission CopyLens requests — it has to read pixels off your screen to OCR them; macOS prompts on first capture.
Accessibility is not required. The hotkey uses Carbon’s RegisterEventHotKey, which doesn’t need AX.
Privacy
- No telemetry. No usage reporting, no log file unless you explicitly turn one on, no network requests beyond Sparkle’s appcast fetch.
- No camera, microphone, or network access. Captures stay on-device — Vision OCR runs locally; pasteboard writes are local.
- Updates are EdDSA-signed. Your copy will only install genuine Jorvik Software releases.
Installation
Two formats on every release — both signed and notarised, pick whichever suits:
- Installer (
.pkg) — recommended for first-time installs. Double-click to run; macOS Installer placesCopyLens.appin/Applicationswithout quarantine or App Translocation. - Download (
.zip) — unzip and dragCopyLens.appto your Applications folder.
After installation, launch CopyLens and grant Screen Recording permission when prompted.
Building from Source
CopyLens builds via the shared Jorvik release.mk. With the jorvik-release sibling repo cloned alongside it and GNU Make 4 installed:
- Clone the repo:
git clone https://github.com/PerpetualBeta/CopyLens.git - Local install (signed with the Jorvik Developer ID):
gmake dev-build - Run the freshly-built copy:
gmake run - Signed, notarised, stapled
.zip+.pkgready to ship:gmake release
Requirements
macOS 14 (Sonoma) or later. Universal binary (Apple Silicon and Intel).