Skip to main content
Image Tools

Image to Text (OCR)

Pull the text out of a photo, screenshot, or scan — recognised locally in your browser.

document_scanner

Drop an image here or click to browse

JPG, PNG, WebP — your image stays on your device

How to Use

  1. 1. Upload a photo, screenshot, or scan containing text.
  2. 2. Choose the language the text is written in.
  3. 3. Click Extract Text and wait for the scan to finish.
  4. 4. Copy the recognised text or download it as a .txt file.

How OCR Works — and Where It Struggles

Optical character recognition finds the lines and word shapes in an image, then matches each glyph against a trained model for the language you selected. Picking the right language genuinely matters: the model carries the alphabet and the letter-sequence probabilities used to resolve ambiguous characters, which is how an engine tells a capital I from a lowercase l.

Accuracy depends far more on the source image than on the engine. Sharp, straight, high-contrast text at decent resolution reads almost perfectly. Blur, skew, shadows, busy backgrounds, and low resolution all degrade it quickly — as do decorative fonts and handwriting, which Tesseract is not trained for.

The confidence percentage is the engine's own average certainty. Treat anything below about 80 as a prompt to proofread the output, and remember the text box above is editable so you can fix stray characters before copying.

Your image is processed entirely on your device. The engine and language model are fetched once from a public CDN and then cached by your browser, which is why the very first scan takes noticeably longer than the ones after it.

Related tools: Extract Text from PDF, EXIF Viewer & Remover, and Word Counter.

Frequently Asked Questions

Is my image uploaded to a server?

No. Recognition runs in a Web Worker inside your browser, so the image itself never leaves your device. The first run downloads the OCR engine and language model from a public CDN — that is code and data coming in, not your image going out.

Why is the first scan slow?

The recognition engine and the language model together are several megabytes and are fetched once, then cached by your browser. Subsequent scans in the same session start almost immediately.

How do I get the most accurate result?

Use the highest resolution version you have, keep the text horizontal, and prefer sharp, high-contrast images. OCR struggles most with blur, skewed angles, low contrast, and decorative or handwritten fonts.

Does it handle handwriting?

Not reliably. Tesseract is trained on printed text; neat block capitals sometimes work, but cursive handwriting generally does not.

What does the confidence score mean?

It is the engine's own average certainty across the characters it recognised, from 0 to 100. Anything above roughly 80 is usually clean; a low score is a good signal to check the output carefully or try a better scan.

Was this tool helpful?

Share:

Guide

How to extract text from an image with OCR

Optical character recognition, or OCR, turns a picture of text into text you can copy, edit and search. This tool reads photographs, screenshots and scans in twelve languages including English and Hindi, shows a confidence score, and lets you copy the result or save it as a plain text file.

It runs the Tesseract engine inside your browser. That keeps the image on your device, but the engine and the language data for the language you pick are downloaded from a public content network the first time, so a connection is needed. Accuracy depends much more on the quality of the picture than on the settings, which is why the tips below focus on preparing the image.

Step by step

  1. Click the upload area or drop an image onto it. Any image file is accepted, and a preview appears with its name.
  2. Open 'Language of the text' and choose English, Hindi, Spanish, French, German, Portuguese, Italian, Russian, Arabic, Chinese (Simplified), Japanese or Korean. English is selected by default.
  3. Click 'Extract Text'. The button shows the current stage, such as 'Loading OCR engine...', 'Downloading language model...', 'Starting engine...' and 'Reading text...', and a note says the engine downloads once.
  4. Read the result in the text box. A badge shows the confidence percentage and a word count. The box is editable, so you can fix mistakes before using it.
  5. Click 'Copy' to put the text on your clipboard, or 'Download .txt' to save it under the image's name with a .txt extension.

When this is useful

  • Copying a paragraph from a screenshot of a chat, article or PDF page.
  • Pulling the text out of a photographed notice, bill or printed form so you can edit or translate it.
  • Digitising a scanned page of a book or a typed document.
  • Reading Hindi or other non-English printed text into an editable form.
  • Making screenshot-based notes searchable.

Worked example: The same page at two scan resolutions

An A4 page (8.27 x 11.69 inches) scanned at 300 DPI is 2480 x 3508 pixels. Body text at 11 pt has an em size of 11 / 72 x 300, about 46 pixels, which gives the engine plenty of detail. Scanned at 100 DPI the page is only 827 x 1169 pixels and the same text is about 15 pixels tall, so letters like e, c and o blur together and errors climb. Upload the 300 DPI version, pick the language, press 'Extract Text', and check any figure with a low-confidence warning against the page.

Tips for better results

  • Use the highest resolution you have and keep the text horizontal. Straighten tilted photos before uploading.
  • Choose the language that matches the text. The model for that language carries its alphabet and letter patterns, which resolves lookalike characters.
  • Crop out photos, borders and decorations around the text so the engine does not try to read them.
  • Treat a confidence figure under about 80 as a prompt to proofread. Always check numbers, names and codes against the original.

Common mistakes

  • Expecting handwriting to work. The engine is trained on printed text, so cursive generally fails and even neat capitals are hit and miss.
  • Choosing the wrong language. English selected for Hindi text produces nonsense, and the tool allows one language per scan, so a page mixing scripts will read one of them poorly.
  • Photographing a page at an angle or in shadow. Skew and uneven light hurt more than almost anything else; take the picture straight on in even light.
  • Starting on a poor connection and assuming it has stalled. The first scan downloads the engine and language data; wait for the status to change.

Your files and privacy

Recognition happens in a background worker in your browser, so the image is not uploaded. On first use the OCR code and the language data are downloaded from a public CDN (jsDelivr) and the browser may cache them. That traffic goes to you, not from you. The page also sends an anonymous usage event (tool name and a random session ID) when it opens.

Frequently asked questions

Is my picture sent to a server?

No. The image is read inside your browser. Only the OCR engine and the language data are fetched from a public CDN, which is code coming in rather than your image going out.

Why does the first scan take longer?

The engine and the language model must be downloaded before reading starts, and your browser may keep them for later. Slow connections make that first wait noticeable.

Which languages are supported?

English, Hindi, Spanish, French, German, Portuguese, Italian, Russian, Arabic, Chinese (Simplified), Japanese and Korean. You select one language per scan.

What does the confidence percentage mean?

It is the engine's own average certainty across the text it recognised, from 0 to 100. A high score usually means clean output, but it is not a guarantee of correctness.

Can it read handwriting or stylised fonts?

Not reliably. It is designed for printed text, and decorative fonts, cursive writing and very small or blurry text reduce accuracy sharply.

Can I edit the text before copying?

Yes. The result appears in an editable box, so correct any errors there and then use 'Copy' or 'Download .txt'.

Guide reviewed 2026-10-11 by the useToolify team.