iOS · Live on the App Store

Snap a photo.Feed your AIat the speed of light.

Handwriting, whiteboards, code, receipts, packaging — ZapCopy turns any photo into clean, paste-ready text. So the data in the world around you gets to ChatGPT, Claude, and your notes faster than you can type it.

Feed your AI faster · paste-ready outputHandwriting → text in secondsPhoto · Multi-shot · Video
See it teleport · v2

Photo in. Through the bolt. Text out. Shared.

A vertical scroll-driven teleport: an iPhone 17 snaps the photo, the photo falls through ZapCopy's bolt, the extracted text emerges below, and finally lands in your favorite apps. Scroll to drive it; scroll up to reverse.

Variant 02 · Vertical teleport

From shutter to share sheet — the whole journey, scrubbable.

GSAP scroll-scrub · top-to-bottom · pinned
Step 01 · Snap

Point. Tap. Done.

Open ZapCopy, frame the page, take the shot. One tap, no setup.

Step 02 · Zap

Through the bolt.

Your photo drops into ZapCopy's pipeline. OCR, layout, language — all in seconds.

Step 03 · Done

Clean text out.

The extracted text emerges, ready to copy or share. Layout preserved, formatting intact.

Step 04 · Share

One tap. Anywhere.

From a photo to ChatGPT, Cursor, or your teammate's inbox — in a single tap. No retyping. No emailing yourself. No thumb drives.

9:41
⚡︎PHOTOLIVE
.523
Scroll down
One QR · Any editor

One QR. Any editor.

Snap. Show QR. Land. ZapCopy moves text from a locked screen onto whatever editor is in front of you.

Source · No AI
🔒 No AI
Visual Studio Code — primes.py
primes.pyutils.pyREADME.md
1
2
3
4
5
6
7
8
def is_prime(n):
if n <= 1:
return False
for i in range(2,
int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
Beamed via ZapCopyUTF-8 · Python
1Source content on a locked screen
⚡ ZapCopy
9:41
Capturing source…
🔒 No AI
Visual Studio Code — primes.py
primes.pyutils.pyREADME.md
1
2
3
4
5
6
7
8
def is_prime(n):
if n <= 1:
return False
for i in range(2,
int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
Beamed via ZapCopyUTF-8 · Python
Aiming…
Composing…
2Phone captures the source, then receiver QR
Destination
Visual Studio Code — primes.py
primes.pyutils.pyREADME.md
ZapCopy · awaiting scanPoint your phone at this code
Ready · expires in 30s
Awaiting QR scanUTF-8 · Python
3QR → text appears in your editor
How it works

Three steps. About ten seconds.

Not a workflow. Not a tutorial. Just the shortest path from a photo to clean text you can paste anywhere.

01

Snap.

Open ZapCopy, point your camera, tap the shutter. Single photo, multi-photo mosaic, or video pan — your call.

02

Zap.

A few seconds later, clean, structured text appears — formatting intact, languages preserved, nothing invented.

ChatGPTClaudeNotionGeminiGmailSlack
⌘V
03

Paste.

Drop it into ChatGPT, Claude, your notes, a doc, a message. Your data is finally in a form your AI can actually use.

Video OCR · live capture

When copy-paste isn't an option.

Point your phone at any screen — locked PDFs, secure VMs, a printout. ZapCopy reads the text live and reconstructs it cleanly.

1Source · No AI
useDebounced.tsx — Read-only screenshare
1import React from 'react';
2 
3function useDebounced(value, delay) {
4 const [v, setV] = React.useState(value);
5 React.useEffect(() => {
6 const id = setTimeout(() => setV(value), delay);
7 return () => clearTimeout(id);
8 }, [value, delay]);
9 return v;
10}
11 
12export default function SearchBar({ q, onChange }) {
13 const debounced = useDebounced(q, 250);
14 React.useEffect(() => {
15 if (debounced) fetchResults(debounced);
16 }, [debounced]);
17 return <input value={q} onChange={onChange} />;
18}
1import React from 'react';
2 
3function useDebounced(value, delay) {
4 const [v, setV] = React.useState(value);
5 React.useEffect(() => {
6 const id = setTimeout(() => setV(value), delay);
7 return () => clearTimeout(id);
8 }, [value, delay]);
9 return v;
10}
11 
12export default function SearchBar({ q, onChange }) {
13 const debounced = useDebounced(q, 250);
14 React.useEffect(() => {
15 if (debounced) fetchResults(debounced);
16 }, [debounced]);
17 return <input value={q} onChange={onChange} />;
18}
2⚡ ZapCopy
import React from 'react';
 
function useDebounced(value, delay) {
const [v, setV] = React.useState(value);
React.useEffect(() => {
const id = setTimeout(() => setV(value), delay);
return () => clearTimeout(id);
}, [value, delay]);
return v;
}
 
export default function SearchBar({ q, onChange }) {
const debounced = useDebounced(q, 250);
React.useEffect(() => {
if (debounced) fetchResults(debounced);
}, [debounced]);
return <input value={q} onChange={onChange} />;
}
import React from 'react';
 
function useDebounced(value, delay) {
const [v, setV] = React.useState(value);
React.useEffect(() => {
const id = setTimeout(() => setV(value), delay);
return () => clearTimeout(id);
}, [value, delay]);
return v;
}
 
export default function SearchBar({ q, onChange }) {
const debounced = useDebounced(q, 250);
React.useEffect(() => {
if (debounced) fetchResults(debounced);
}, [debounced]);
return <input value={q} onChange={onChange} />;
}
LIVE0 fps · OCR0/18
STOP
3Destination · Your Mac
extracted.tsx0 / 18 lines
1import React from 'react';
2 
3function useDebounced(value, delay) {
4 const [v, setV] = React.useState(value);
5 React.useEffect(() => {
6 const id = setTimeout(() => setV(value), delay);
7 return () => clearTimeout(id);
8 }, [value, delay]);
9 return v;
10}
11 
12export default function SearchBar({ q, onChange }) {
13 const debounced = useDebounced(q, 250);
14 React.useEffect(() => {
15 if (debounced) fetchResults(debounced);
16 }, [debounced]);
17 return <input value={q} onChange={onChange} />;
18}
Multi-Photo

Multi-Shot OCR

Capture text from multiple photos and combine them into a single, organized document.

Photographing a multi-page document? A whiteboard covered in notes? With Multi-Shot OCR you can take several photos in one session and ZapCopy will extract and merge all the text into one clean output.

  • 📸
    Batch capture

    Take multiple photos in one session without switching apps.

  • 📄
    Auto-merge

    All extracted text is combined and organized automatically.

  • One-tap export

    Send the combined text anywhere: Notes, ChatGPT, VS Code, or clipboard.

Video OCRBeta

Video text extraction

Point your camera at text on any screen or surface, and ZapCopy reads it frame by frame.

Need to capture text from a presentation, a scrolling terminal, or a video playing on another screen? Video OCR analyzes each frame using AI and extracts every piece of text it finds. No more pausing and screenshotting.

  • 🎥
    Frame-by-frame AI

    Specialized AI analyzes video frames to detect and extract all visible text.

  • 🖥️
    Works on any screen

    Presentations, terminals, tutorials, whiteboards, even scrolling content.

  • 📋
    Structured output

    Extracted text is cleaned and organized, ready to use immediately.

AI-ready output

The shortest path
from paper to prompt.

Every menu, whiteboard, meeting note, and packaging label is data your AI can’t see yet. ZapCopy hands it over, clean and paste-ready — so the physical world starts working for your models, not against them.

paste destination
also works with
ChatGPT
New conversation
✓ pasted
Summarize these whiteboard notes into action items and owners.
extracted.txt284 tokens · from ZapCopy
Real-world scenarios

Bridge the gap.

When copy-paste isn't an option, ZapCopy is your answer.

01

Code stuck on a disconnected computer?

You're working on a laptop that can't connect to the internet — maybe it's a secure work machine, or you're somewhere with no Wi-Fi. ZapCopy bridges the gap.

The Problem (offline laptop)
The Problem
The Solution
📸 Snap
ZapCopy extracts & sends
Send Anywhere
🤖Ask ChatGPT for help
💻 VS Code💬 Text📧 Email✨ More
02

Digitize handwritten notes instantly

Got a notebook full of ideas, a grocery list on a whiteboard, or meeting notes on paper? Turn physical writing into digital text you can actually use.

Physical Notes
Physical Notes
The Solution
📸 Snap
ZapCopy extracts & sends
Now It's Digital
Now It's Digital
📱Saved to Notes app
📋 Clipboard📤 Share🤖 AI Summary
03

Extract text from documents & products

Whether it's a printed document, a product label, or text on another screen — if you can see it, ZapCopy can extract it.

Any Text Source
Any Text Source
The Solution
📸 Snap
ZapCopy extracts & sends
Use It Anywhere
Use It Anywhere
Send to your favorite editor
💻 VS Code📝 Notes📧 Email
Pricing

Pay for what you scan.

One credit per photo. Multi-photo and video use credits in proportion to length. Unused monthly credits roll over up to your plan cap.

Free
$0
10 credits · lifetime
  • Single-photo scans
  • Clean, paste-ready text
  • Copy to any AI or app
  • Multi-photo & video
  • Cloud sync
Start free
Ultra
$19.99 / month
1,000 credits · per month
  • Everything in Premium
  • High-volume use
  • Priority processing
  • Remove branding
  • Early access to new features
Start on Ultra

1 credit = 1 photo scan. Cancel anytime from the App Store.

Reviews

What people actually say.

★★★★★

"Scanned 40 pages of my grandmother's recipe cards in ten minutes. Cursive and all."

Mara · ★★★★★
★★★★★

"I take photos of whiteboards after every standup. This replaced three apps for me."

Dev · ★★★★★
★★★★★

"My secret weapon for feeding meeting notes straight into ChatGPT. Saves me hours a week."

Priya · ★★★★★
★★★★★

"Finally an OCR app that doesn't make up words when it can't read my scribbles."

James · ★★★★★
// replace with real App Store reviews before launch
FAQ

The honest answers.

Does ZapCopy work offline?

The shutter works offline — your photo is captured and queued. The actual text extraction needs a connection, because it runs on our secure cloud pipeline. We'll process your queue the moment you're back online.

Is my photo data kept on your servers?

Photos are sent to our OCR endpoint, processed, and dropped — we don't retain source images after the extraction returns. The extracted text lives in your app and (on Premium+) in your private cloud sync. Full details in our privacy policy.

What languages does the OCR support?

100+ languages, including mixed-script documents. The packaging demo above has Chinese, English, Japanese and Korean on the same box and it comes back intact. Handwriting is supported in every major script we've tested.

How accurate is it on handwriting?

Better than you'd expect, not magic. Clean cursive on ruled paper is near-perfect. Doctor's-signature scrawls are hit-and-miss — we flag low-confidence characters rather than invent them.

Why is this better than just pasting a photo into ChatGPT?

It's faster, cheaper per scan, and the output is structured text you can edit, search, diff, and reuse across every tool you own — not locked inside one chat thread. Plus it handles multi-page, multi-photo and video pans that chat interfaces choke on.

Can I cancel my subscription anytime?

Yep — standard App Store subscription, cancel from your Apple ID subscriptions page. You keep access until the end of your paid period. No email, no dark patterns.

Ready to zap some text?

Download on theApp Store