№ 01The brief

Heist the value,
not just text.

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

A Dutch utility bill from Vesta Energie. A dashed green rectangle marks the payment block — IBAN, Betalingskenmerk, amount, recipient.

Result · validated, formatted, clipboard-ready

The TextHeist result popup after the heist. The IBAN NL48 INGB 0001 1843 02 and the Betalingskenmerk 5000 0567 8901 2345 are highlighted in the text, and the chip toolbar shows IBAN and Betalingskenmerk chips alongside Copy.

№ 02The act

Three motions. About four seconds.

If something takes longer than that, TextHeist isn't doing it. No cloud round-trip, no model loading, no nag screen.

i. Step one

The hotkey

⌘⇧2 by default. Rebind to anything.

ii. Step two

The rectangle

Same crosshair Apple ships, optional magnifier loupe, live dimension readout. Multi-display, Retina-correct.

iii. Step three

The understanding

On-device OCR + validators. Each detected entity is highlighted, formatted, and a click away from your clipboard.

№ 03Exhibit A — The Result

Highlighted text. One-click copy.

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).

The TextHeist result popup with IBAN and Betalingskenmerk highlighted and chips for each.

№ 04The Specimens

Ten kinds of structured text, recognised on sight.

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

Pay to

NL48 INGB 0001 1843 02

Checksum-verified — typos and OCR slip-ups don't sneak through. Formats: pretty 4-blocks · no spaces · lowercase.

Betalingskenmerk

Ref.

5000 0567 8901 2345

The 16-digit reference Dutch banks auto-route payments by. Verified with the standard banking check (the "11-proef").

Credit Card

•••• 1234

4242 4242 4242 4242

Verified by the standard card-number check. Spacing follows the issuer (Amex is 4-6-5). Formats include masked & brand-prefixed.

Email

you@example

support@vestaenergie.nl

Real validation — pluses, dots, hyphens, sub-domains, two-letter TLDs all handled. Copy as an address or as a mailto: link.

URL

https://

vestaenergie.nl/factuur

Full URLs and bare domains. Outputs: as detected · without scheme · domain only · without query string.

Phone

+31 6 …

020 555 4040

250+ regions supported, picked per-entity. Copy as international, national, E.164, or a tel: link.

MAC Address

aa:bb:cc

aa:bb:cc:dd:ee:ff

Colon, hyphen, or Cisco-dotted. Uppercase or lowercase. Always canonicalised on the way to your clipboard.

UUID

550e8400…

550e8400-e29b-41d4-a716-446655440000

Hyphenated and bare 32-character forms. Tolerant of stray spaces that OCR sometimes inserts.

IPv4

10.0.0/24

192.168.1.42

CIDR notation supported. Each number is validated — 10.0.300.5 doesn't make the cut.

IPv6

2001:db8::1

fe80::1%en0

Compressed or full, CIDR notation supported. Properly verified, not just pattern-matched.

№ 05Exhibit B — The Overlay

The same rectangle you already know.

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.

The selection overlay mid-drag with a magnifier loupe and 507x206 dimension chip.

№ 06Exhibit C — Custom rules

Your invoice numbers. Your ticket IDs. Your SKUs.

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 regexthe 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.

strip ORD- find (\d{4})(\d{6}) replace $1-$2 2026-001234

Full walkthrough on the Support page →

The New Extractor sheet with a sample regex, test sample, and live-matched values.

№ 07Exhibit D — Disambiguation

Two matches at one spot? You pick.

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.

The disambiguation popover anchored to a highlighted IBAN, showing two candidates and a Copy all 2 IBAN button.

№ 08Exhibit E — Configurable

Every detected type, on its own row.

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.

Settings Extractors listing all ten built-in entity types in collapsed rows.

№ 09The promise

Nothing leaves your Mac. Nothing.

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.

What we collect
Nothing.
What we send to a server
Nothing. There is no server.
Where the captures go
A private area macOS reserves for the app on your Mac. Clearable from Settings → General → History → Clear All.
Where your settings go
Plain files on your Mac, yours to read or delete.
Auto-delete history
7 days, 30 days, 90 days, or never. You pick.

Read the full privacy policy →

№ 10The CTA

OCR is the easy part.
The understanding is where it gets fun.

macOS 15 Sequoia & 26 Tahoe · Universal · No account · Made in the Netherlands

× Result popup with IBAN and Betalingskenmerk chips.

Result popup · heisted from a Vesta Energie invoice

× Selection overlay with magnifier mid-drag.

Selection overlay · magnifier loupe · 507 × 206 dimension chip

× New Extractor sheet with live match preview.

New Extractor sheet · live pattern match preview

× Entity popover disambiguating two IBANs.

Entity popover · two IBANs at the same span

× Settings Extractors tab listing all ten built-in types.

Settings · Extractors · ten built-in types