№ 01The brief
Other OCR tools hand you raw text. TextHeist hands you the IBAN, the phone number, the payment reference — already checked, already formatted the way you want, on your clipboard the moment you click. Nothing ever leaves your Mac.
Source · a rectangle on your screen
Result · validated, formatted, clipboard-ready
№ 02The act
If something takes longer than that, TextHeist isn't doing it. No cloud round-trip, no model loading, no nag screen.
⌘⇧2 by default. Rebind to anything.
Same crosshair Apple ships, optional magnifier loupe, live dimension readout. Multi-display, Retina-correct.
On-device OCR + validators. Each detected entity is highlighted, formatted, and a click away from your clipboard.
№ 03Exhibit A — The Result
Every recognised entity is highlighted in the OCR'd text, and each one gets a chip in the toolbar. Click a chip and the value is on your clipboard in its chosen format. Click a highlight, same thing. Hold ⌥ to keep the popup open and grab more.
Heisted from a Vesta Energie invoice
The IBAN is verified — typos and OCR slip-ups don't make it onto your clipboard. The Dutch Betalingskenmerk (the 16-digit reference Dutch banks auto-route by) passes the standard banking check. Both show up as chips, formatted the way you want. Click Betalingskenmerk and your bank app accepts it without complaint.
Don't like the format on a chip? Pick a different preset on the Extractors tab — or add your own (see Exhibit C).
№ 04The Specimens
No pattern-writing on your part. Each type ships with its own format presets and (where it matters) a real validator — so you don't accidentally copy a sixteen-digit number that looks like a card but isn't.
IBAN
Checksum-verified — typos and OCR slip-ups don't sneak through. Formats: pretty 4-blocks · no spaces · lowercase.
Betalingskenmerk
The 16-digit reference Dutch banks auto-route payments by. Verified with the standard banking check (the "11-proef").
Credit Card
Verified by the standard card-number check. Spacing follows the issuer (Amex is 4-6-5). Formats include masked & brand-prefixed.
Real validation — pluses, dots, hyphens, sub-domains, two-letter TLDs all handled. Copy as an address or as a mailto: link.
URL
Full URLs and bare domains. Outputs: as detected · without scheme · domain only · without query string.
Phone
250+ regions supported, picked per-entity. Copy as international, national, E.164, or a tel: link.
MAC Address
Colon, hyphen, or Cisco-dotted. Uppercase or lowercase. Always canonicalised on the way to your clipboard.
UUID
Hyphenated and bare 32-character forms. Tolerant of stray spaces that OCR sometimes inserts.
IPv4
CIDR notation supported. Each number is validated — 10.0.300.5 doesn't make the cut.
IPv6
Compressed or full, CIDR notation supported. Properly verified, not just pattern-matched.
№ 05Exhibit B — The Overlay
If you've used ⌘⇧4, you've used this. Crosshair, optional magnifier loupe with pixel grid, live dimension readout, Escape to cancel. Works across multiple displays at Retina resolution, with nothing new to learn.
Selection overlay · magnifier on · mid-drag
The overlay reads from a one-shot snapshot taken the moment you press the hotkey, not from live screen content. The magnifier doesn't lag, the rectangle doesn't jitter, and the final crop is pixel-identical to the image you were drawing on.
Hate the magnifier? Turn it off. The default is matched to Apple's built-in screenshot tool: just the crosshair.
№ 06Exhibit C — Custom rules
Describe what your value looks like and TextHeist will pick it out, then run it through a clean-up pipeline on the way to your clipboard. No plugins, no installer, nothing to set up — just a sheet with a field and a live preview.
Add an "Invoice number" custom extractor
Drop in a name, a pattern (this is called a regex — the Support page walks you through one if you've never written one), and a test sample. Matches preview live as you type, without a save-or-apply round trip.
Add a clean-up pipeline if the matched value needs work. Lowercase, strip non-digits, find-and-replace, trim, collapse spaces, add a prefix or a suffix — chain the steps in any order. They run on every match before it lands on your clipboard.
ORD-
→
find (\d{4})(\d{6})
→
replace $1-$2
→
2026-001234
№ 07Exhibit D — Disambiguation
A 16-digit run can be a Dutch Betalingskenmerk and a valid credit-card number at the same time. Both checks legitimately pass. TextHeist shows you both. Click the highlight; pick which one to copy.
Entity popover · two IBANs at the same span
The popover anchors to the exact glyph rectangle of the match — one button per validator, with a formatted preview next to each, plus a footer that joins them all together if that's what you actually wanted.
For chips with more than one match (e.g. Email (2)), the same popover opens with one row per match. ⌥-click anywhere to keep the popup open after a copy.
№ 08Exhibit E — Configurable
Each built-in entity expands into its own panel. There's a format picker (built-in presets plus any named formats you add on top of them), a region picker where it matters (Phone), an example caption, and the list of your custom formats with edit and delete buttons.
Settings · Extractors
The "Pretty 4-blocks" IBAN format is fine for most. Want it lowercased? Add a named user format on top of it — a base built-in plus a transform pipeline — and it appears in the picker, ready to be your default.
Toggling a type off removes it from the chip toolbar and the highlight pass. You can't break the validators, you just stop using them.
№ 09The promise
Apple's on-device OCR does the reading. The validation and formatting happen locally too, and so does your history. TextHeist makes no network requests. No analytics, no telemetry, no accounts.