Nobody should retype a screenshot by hand

There's a moment we've all had: a quote inside an image, a table locked inside a PDF-shaped picture, a serial number living in a photo of a label — and a deadline that requires those characters in a document. The old solution was squinting and typing. The modern one is the tool at the top of this page. Drop the image in, get selectable, searchable, copyable text out.

It's optical character recognition — OCR — running at full speed inside your browser. No account, no upload, no queue behind other people's scans. The engine is the same open-source project that powers document digitization pipelines around the world, compiled to run on your own machine instead of a server farm.

I spend my weeks dragging research material into documents — conference posters, archive clippings, photographs of whiteboards after interviews. This page is the write-up I wish existed when I started: how OCR actually works, which images it devours happily, which ones it chokes on, and the handful of preprocessing tricks that turn a 60% mess into a 98% clean extraction.

One more thing before the mechanics. Every tool on this page obeys the same rule: the file you drop stays on your machine. That matters more for OCR than for almost any other tool category, because the images people want text from — receipts, contracts, medical labels, ID cards — are exactly the images you should never paste into an unknown uploader. More on that in the privacy section, but it frames everything else here.

What OCR is, and the engine behind this one

Optical character recognition is older than the web — banks were reading machine-printed checks with it in the 1960s. The modern chapter matters more here: Tesseract, the engine this tool runs, started at HP Labs in the 1980s, was donated to open source in 2005, and is maintained today under Google's umbrella. Version 4 in 2018 replaced its old character-matching approach with an LSTM neural network, and accuracy on difficult scans jumped accordingly.

The problem is old enough to have retirement paperwork. Banks used magnetic ink characters in the 1950s precisely because general reading was too hard — if you can dictate the font, you can cheat. The US Postal Service automated address reading in the 1990s with systems that were miraculous for their time and would embarrass a modern phone.

Two things changed the game. First, machine learning replaced hand-written rules: instead of engineers describing what an A looks like, networks learned from millions of labeled examples. Second, the training data moved from clean scans to the mess of real-world images — photographed pages, skewed labels, low-contrast receipts — so the systems got good at exactly the inputs people actually have. Tesseract's 2018 LSTM rewrite rode both waves, which is why a free browser tool in 2026 outperforms commercial software that cost real money fifteen years ago.

In the browser, Tesseract runs as WebAssembly — a compiled binary your browser executes at near-native speed, sandboxed inside the tab. Language models (the 'trained data' that teaches the network what characters look like) load on demand, so you only download the models for the languages you actually select. English is a few megabytes; Chinese models are larger and worth the wait.

What makes browser OCR remarkable isn't raw speed — desktop tools are faster on hundred-page batches. It's the trust model. The image of your expense receipt, your signed contract, your grandmother's prescription label never leaves your device. That single architectural fact changes what you're willing to extract.

Pull text from any image in five steps

  1. Drop the image

    Drag a JPG, PNG, WebP, or screenshot onto the tool, or paste straight from your clipboard — Ctrl+V works after copying a screenshot, which saves a step for anything on screen.

  2. Pick the language

    English is default. If the text is in another language, select it — recognition quality drops sharply when the model and the script disagree. Mixed-language documents work best by running the dominant language first.

  3. Choose a mode

    Line mode keeps the physical layout, which suits tables and forms. Paragraph mode reflows text into continuous prose, which suits articles and letters.

  4. Run recognition

    Progress reports as the engine works through the image. A receipt takes a second or two; a dense A4 page at high resolution can take ten to twenty seconds on a laptop.

  5. Copy or download

    Copy the text to your clipboard with one click, or download it as a .txt file. Nothing is stored — refresh the page and it's gone.

The pipeline your image goes through

Understanding the stages explains almost every OCR failure and every fix, so here's the honest tour. Your image doesn't get 'read' in one motion; it gets progressively reduced until the actual recognition step sees clean, ordered, bite-sized chunks.

  • Grayscale and binarization — color collapses to luminance, then to pure black and white using an adaptive threshold, so a photo taken under yellow kitchen light behaves like a scan
  • Skew correction — the page's angle is estimated and rotated flat; a page photographed 5 degrees off axis otherwise turns every line into a staircase
  • Layout analysis — the engine finds columns, paragraphs, and individual text lines, deciding what is text and what is a coffee stain or a photo
  • Character recognition — the LSTM network reads each line, left to right, predicting characters from pixel sequences
  • Language model pass — a dictionary-aware step rescoring output, which is how 'rn' gets corrected to 'm' and 'l' to 'I' in English text

Every word also gets a confidence score from 0 to 100. The tool surfaces these because they're genuinely useful: words in the 90s are safe to trust, words in the 60s deserve a human glance, and a page whose average confidence reads low is telling you the image itself is the problem — retake the photo rather than proofreading garbage.

One receipt, one poster, one medicine label

Three extractions from my own week, with the honest numbers attached. The point is less the text than the spread — three very different inputs, three usable outputs.

The grocery receipt

Input

Photo of a 9-inch-long thermal receipt, 1080 px tall, mild camera shake

Output

38 lines extracted in 1.4 seconds — every total correct, two product names off (store-brand items with stylized logos)

Thermal paper is OCR's favorite surface: high contrast, consistent font, no color noise. The stylized store-brand names failed because decorative fonts are precisely where pattern recognition earns its reputation for humility. The numbers — the part that matters for expense reports — were flawless.

The conference poster

Input

Phone photo of a 36×48-inch research poster, 4032×3024, slight angle

Output

Roughly 2,900 words extracted in 18 seconds; three words mangled in a low-contrast figure caption

The result needed paragraph mode and one manual fix: the poster's two-column layout confused line grouping in two spots. I cited it in a piece two hours later, which would have been twenty minutes of retyping at best, and a citation full of transcription errors at worst.

The Chinese supplement label

Input

Photo of a bottle label with mixed Chinese characters and English text

Output

Chinese characters recognized at ~96% accuracy with the simplified-Chinese model; English ingredients line extracted separately

This is the one that sold me on browser OCR. A language I read slowly, a label I needed to understand before dinner, and no willingness to upload a health product photo to a random conversion site. Select language, drop image, read answer.

Languages, scripts, and model sizes

LanguageModel size (approx.)Typical accuracy on clean printNotes
English~12 MB99%+Fastest option; includes the strong dictionary pass
Spanish / French / German~1–15 MB each98–99%Accent marks handled well; pick the right one or expect mangling
Chinese (simplified)~20 MB93–97%Handles thousands of characters; benefits from higher-resolution images
Japanese~20 MB92–96%Mixed scripts (kanji + kana + Latin) all recognized
Arabic~1–15 MB88–95%Right-to-left; output is logical order and pastes correctly into editors
Hindi~1–15 MB85–93%Complex ligatures need clean, larger text to shine

Sizes load once and cache, so a German receipt today costs you nothing tomorrow. The accuracy column is my field experience, not a benchmark chart — clean print means flat paper, even light, and text at least 10 pixels tall. Real-world photos subtract five points from everything, more if your hands shake like mine after the second coffee.

Setting expectations: what accuracy really looks like

Marketing pages quote 99% accuracy as if it were a property of software. It's a property of the input. The same engine scores above 99% on a crisp scan and below 70% on a photo of a crumpled page in evening light. The honest tiers:

  • Flatbed scans and born-digital screenshots — 99%+ character accuracy; proofread only the critical numbers
  • Phone photos of flat, well-lit documents — 90–97%; a quick read-through catches the rest
  • Receipts and labels with stylized fonts — 80–95%; expect product names to suffer while totals survive
  • Photos of curved pages, books, or glossy packaging — 60–85%; worth extracting, but budget editing time
  • Handwriting — mostly below 50%; type it, or dictate it, and save yourself

One class of error deserves special paranoia: digits. OCR confuses 8/3/B, 1/l/I, 0/O, 5/S, and 2/Z with enthusiasm, and a misread number in a serial code, a bank account, or a dosage is worse than no extraction at all. My rule for numbers is a second pass — re-run the crop and compare, or type the critical digits manually while looking at the image.

Why local OCR matters more than local converting

With a sunset photo, uploading to a converter site risks little more than a sunset. OCR inputs are different animals. The images people need text from are receipts with card digits visible, signed contracts, medical paperwork, ID documents, board photographs from confidential meetings, screenshots of private messages.

A server-side OCR site receives the full image and, by default, keeps a copy while it processes — retention policies vary from 'immediately deleted' to 'we keep things for 30 days to improve our services,' and you cannot audit which. Under GDPR, feeding photographs of identifiable individuals or their personal documents to a third-party processor counts as data processing; EU readers should think twice before pasting a client's signed page into an unknown uploader.

The architecture here makes the question moot. The image loads into your tab's memory, the WebAssembly engine reads it there, and the text appears on screen. There is no upload step to have a policy about. Close the tab and the receipt, the contract, and the prescription are gone from the machine entirely.

When OCR chokes — and how to rescue it

Failures cluster into six familiar patterns. Each has a fix that doesn't require buying anything, and none of them require you to understand the neural network — just its appetite:

  • Blurry text — the killer. Camera shake smears character boundaries. Re-shoot bracing the phone against a table, or use the timer; no software fully recovers blur.
  • Low contrast — gray-on-gray print (parking receipts, faxed pages). Boost contrast in any photo editor first, or take the photo in daylight against a darker background.
  • Skew — pages photographed at an angle produce staircase lines the layout stage hates. Straighten the image a few degrees and re-run; accuracy recovers dramatically.
  • Tiny text — text under about 10 pixels of height doesn't contain enough information. Crop the region and upscale it 2× before extracting, which the recognition stage handles far better.
  • Inverted text — white characters on dark background confuse default binarization. Invert the image first (every photo app has a filter), then extract.
  • Clutter — stamps, logos, coffee rings, and underlines get read as characters. Crop tightly to the text region you actually need; OCR rewards narrow missions.

Preprocessing moves that earn their keep

Before you blame the engine, spend thirty seconds on the image. These are the interventions with the best return on effort, roughly in order of payoff:

  • Crop to the text — remove backgrounds, table edges, and other pages from the frame entirely
  • Straighten — even 2 degrees of rotation measurably hurts line detection
  • Upscale small regions — a 2× enlargement of a blurry little label often doubles usable accuracy
  • Bump contrast — push the histogram so ink is dark and paper is light
  • Photograph in daylight — a free upgrade no software matches; overhead lights and phone flashes create glare and color casts
  • Flatten the page — books fight you; press the spine down or copy one page at a time on a flat surface

Who runs this daily

Researchers and journalists pulling quotes from images and archives. Accountants and freelancers digitizing receipts at tax time — thousands of thermal slips turned into searchable text without a scanner. Students photographing whiteboards and handouts into their notes app and then, crucially, making that content searchable. Translators reading menus, labels, and letters in languages they speak better than they read. Property managers capturing meter serials and model numbers from aging hardware.

The common thread is the same: text trapped in pixels, and a need for it in a form a keyboard, a search box, or a spreadsheet can accept. OCR is the bridge, and the bridge is finally short enough to cross without handing your documents to a stranger.

Getting the text out cleanly

Raw OCR output carries the physical world's fingerprints: hard line breaks at the end of every visual line, hyphenation from justified print, double spaces from layout gaps, occasional confidence-confused capitals in the middle of words. Paragraph mode fixes most of the line-break noise by reflowing text. For everything else, a quick cleanup pass does the rest.

Watch for two specific artifacts. Hyphenated line breaks — 'docu-' followed by 'mentation' — need the join reversed, since the dictionary pass can't always tell a real hyphen (state-of-the-art) from a typesetter's convenience. And watch capitalization at line starts: engines capitalize after breaks they mistook for sentence ends, which matters if the text is heading into something formal.

The habit worth building: extract, clean, then verify. A text statistics analyzer tells you the word count of what you captured so you can sanity-check against the source; a text cleaner strips the residue. Two minutes of cleanup beats an hour of retyping, which was always the bargain OCR offered.

Photographing text: the thirty-second field guide

Since most OCR inputs start as phone photos, the cheapest accuracy upgrade happens before the tool is ever involved. You already own the equipment; the technique is four habits.

  • Hold the camera parallel to the page, not angled from above — parallelism kills skew before it exists
  • Get close enough that the text fills the frame; the edges of the page are just noise the engine will trip over
  • Tap to focus on the text itself, and let exposure settle before shooting
  • Shoot two frames. The second one is the one that's sharp, in my experience and probably yours

Do those four things and your phone photos land in the 95% accuracy tier that used to require a scanner. Skip them and no amount of preprocessing recovers what the sensor never captured — the physics of garbage in, garbage out applies to neural networks exactly as it applied to everything before them.

Questions people actually ask

Is this image to text converter free?

Completely free, with no signup, no watermark, and no page-per-day limit. The OCR engine runs in your browser, so there's no per-file server cost to pass on to you — clearly labelled ads cover hosting.

How many languages does the OCR support?

Over 100. English, Spanish, French, German, and Portuguese work out of the box; Chinese (simplified and traditional), Japanese, Korean, Arabic, Hindi, Russian, Greek, and Vietnamese are among the scripts the engine recognizes with the right language model selected.

Can OCR read handwriting?

Not reliably. Tesseract's LSTM models are trained on print, so neat handwriting sometimes comes through but cursive and inconsistent letterforms mostly don't. For handwritten notes, transcribing by voice or typing remains the honest answer.

How accurate is OCR on a photo versus a scan?

A clean 300 DPI scan of printed text runs above 99% character accuracy. A phone photo of a document typically lands between 90% and 97% depending on lighting and camera steadiness; a photo of a curved page or glossy label can fall much lower. Always spot-check numbers.

Does the tool work with PDFs?

This tool takes images — JPG, PNG, WebP, and screenshots. For PDF pages, use the dedicated PDF text extractor, which reads the embedded text layer directly and only falls back to OCR for scanned pages.

Are my images uploaded anywhere?

No. Decoding and recognition both run locally in your tab — the engine is compiled to WebAssembly and executes on your device. Your receipts, contracts, and medical paperwork never leave the browser, and closing the tab clears everything.

Can I use it offline?

Mostly, yes. After the language models cache on first use, recognition continues to work without a connection. The page itself needs one initial load.

Why does the result include strange line breaks?

OCR returns text line by line, mirroring the physical layout. Turn on paragraph mode to reflow lines into paragraphs, or run the output through a text cleaner afterward to strip hyphenation and stray breaks.

Tools that pair well with this one

Text extraction is usually the first link in a chain — the words come out, then they need checking, cleaning, or counting. These three cover the rest of that workflow.

  • Extract Text from PDF — the same idea for PDF pages, reading the text layer directly when it exists
  • Text Statistics Analyzer — word, sentence, and character counts to sanity-check an extraction against its source
  • ChatGPT Text Cleaner — strips OCR residue, fixes hyphenation, and normalizes the spacing artifacts recognition leaves behind

Sources and further reading

Sources and further reading

  • Tesseract OCR engine — https://github.com/tesseract-ocr/tesseract (the recognition engine this tool runs, including its LSTM pipeline history)
  • Tesseract trained models — https://github.com/tesseract-ocr/tessdata (the language data files covering 100+ languages and scripts)
  • MDN Web Docs — https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/getImageData (how pixel data is read locally in the browser)
  • MDN Web Docs — https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img (native image decoding that precedes recognition)
  • GDPR Article 6 overview — https://gdpr-info.eu/art-6-gdpr/ (lawful-basis rules that apply to uploading personal documents to third-party processors)

We cite primary sources (standards bodies, government agencies, official documentation) wherever they exist so you can verify every number on this page yourself.