Image to Text — Free, Fast & Private
Optical character recognition is a solved problem that the web has managed to wrap in unsolved nuisances: upload queues, page-per-day quotas, email walls, and the quiet detail that your document is being read on someone else's server. This tool takes the other route. The recognition engine — a self-hosted build of Tesseract, the open-source OCR project that has been refined for over three decades — is downloaded to your browser and runs there. The first visit fetches the English model, about 2 MB, from this site's own servers; after that it is cached, recognition starts immediately, and the whole tool keeps working with the network unplugged. Drop in a picture, get back plain text you can select, copy, and paste anywhere, along with a confidence score that tells you how sure the engine is about what it read.
Screenshots: the text you can see but cannot copy
The most common OCR job in 2026 is not a scanned book — it is a screenshot. An error message someone pasted into chat as a picture, a slide from a webinar, a code snippet in a video frame, an address in an Instagram story, a paragraph in a PDF that disabled selection. The text is right there on your screen and utterly un-copyable. Screenshots are also the best-case input for OCR: rendered type is perfectly sharp, perfectly aligned, and high-contrast by design, so recognition on a clean screenshot is routinely near-perfect. iPhone screenshots in HEIC format work directly — the tool decodes HEIC and TIFF itself rather than relying on the browser — as do JPEG, PNG, WebP, AVIF, BMP, and GIF. If the screenshot is destined to be shared afterwards, run it through the tool first: once you have the text extracted, you can compress the screenshot for wherever it is going without worrying about crushing the legibility you no longer need.
Why on-device OCR matters more than on-device anything else
Think about what people actually point OCR at: contracts, invoices, payslips, prescriptions, medical reports, ID cards, bank statements, exam certificates. These are, almost by definition, the most sensitive documents a person owns — that is why they exist on paper and need digitising. Every mainstream OCR site works by uploading that document to a server, running recognition there, and returning the text; you are trusting an unknown operator's retention policy, logging, and security with the exact papers you would never hand a stranger. Here the trade does not exist to make. The image is decoded on your device, read on your device, and the text never leaves your device — there is no network request carrying image data to inspect, and you can verify that in your browser's DevTools Network tab while the tool runs. For a one-off screenshot the difference is philosophical. For a salary slip, it is the entire point.
Printed text, yes. Handwriting, honestly, no.
The engine's neural recognition (an LSTM, trained on typeset text) is very good at what it was trained on: printed and rendered type — documents, books, labels, screenshots, receipts from a thermal printer. It is not a handwriting reader. Neat, separated block capitals will sometimes come through; cursive, mixed slants, and ordinary quick handwriting will mostly come out as confident-looking nonsense. Plenty of OCR sites bury that caveat; it is better stated plainly, because the failure is silent — you get text back either way, and only the confidence score hints that the engine was guessing. If your job is digitising handwritten notes, this tool will disappoint you, and no amount of photo quality will fix it. For anything that came out of a printer or off a screen, it is the right tool.
Getting a clean read from a phone photo
Screenshots need no preparation, but a phone photo of a paper document rewards thirty seconds of care. Recognition quality tracks three things almost linearly. Sharpness: focus on the text, hold still, and avoid the wide-angle lens if your phone offers a choice — edge distortion bends baselines. Contrast: dark ink on light paper in even light; a shadow falling across the page is the single most common cause of a garbled region, because the engine binarises the image and a shadow flips that threshold mid-paragraph. Alignment: shoot square-on so lines run horizontally. Slight skew is tolerated; sideways is not — if the photo came in rotated, rotate it upright before recognition rather than hoping. Fill the frame with the page, and skip glossy-paper glare by shooting at a slight angle to the light source. None of this is specific to this tool — it is how OCR works everywhere — but on-device processing means you can simply retry a better shot in seconds without re-uploading anything.
What the confidence score is actually telling you
Alongside the text, the tool reports a confidence percentage — the engine's own estimate, averaged over the words it recognised, of how likely each reading is to be correct. Treat it as a proofreading budget. Above 90, the text is usually clean enough to paste and skim. In the 70s and 80s, expect scattered character-level slips — the classics are 0/O, 1/l/I, 5/S, rn/m — concentrated wherever the source was blurry or shadowed. Below 70, read everything against the original, and treat every number as suspect: a mangled word announces itself, but a digit swapped in an amount, a date, or a reference number looks perfectly plausible and is exactly the kind of error that survives into a spreadsheet. Low confidence is also the tool's only way of telling you the input was out of its league — most often handwriting or a badly lit photo — since it will always return something.
English only, for now — and why
Version one recognises English. That is a real limitation and the interface says so rather than letting you discover it via garbage output on a Hindi form or a French invoice. The reason is the same architecture that makes the privacy promise possible: every language is its own trained model that has to be downloaded to your device, and shipping one well-cached 2 MB model was the honest v1 — a language picker that quietly triggered a 50 MB multi-language bundle would betray the "fast, light, local" contract the rest of this site keeps. More languages are planned, added the same way: self-hosted, downloaded once, cached. Latin-script text embedded in an otherwise English document (names, product codes, URLs) generally reads fine already; full non-English documents should wait for their model.
