Free tool · OCR · Runs in your browser
Image to text
Short answer
Choose a photo, scan or screenshot and the tool reads the text in it, in your browser with no upload.
Nothing is uploaded: the picture is read in your browser. The engine and the language file download once, then work offline. Printed text and screenshots read well; handwriting does not.
Key takeaways
- Size decides everything: the character error rate on printed text was 0.0% at 14 px, 1.3% at 10 px, 15% at 8 px and 79% at 6 px. Body text of a normal page is 16 px or more.
- Screenshots are the easy case: 6 screenshots of this site's pages at desktop and phone width had 0.0% to 0.7% character errors against the real page text.
- Blur is the killer: a 2.5 px blur on 12 px text raised errors from 0.2% to 87%, while a heavy JPEG at quality 10 only reached 3.6%.
- Tilt matters: a 0.4% error at 3 degrees grows to 19% at 8 degrees and 59% at 15 degrees on 12 px text. Straighten the photo first.
- Handwriting is out of reach: the manuscript scan got 103% of characters wrong with confidence 33. Use a different tool for it.
- The English model is 4.1 MB and downloads once; after that the tool works offline. Reading a paragraph took 0.13 to 0.44 seconds in our runs.
Measured: how small can the text be?
On printed text at 14 pixels or larger, our test error rate was 0.0% of characters (confidence 95 of 100); at 10 pixels it was 1.3%, and at 6 pixels it was 79%, which is useless. It reads English, Spanish, French, German, Portuguese and Russian. Handwriting does not work: the same test on a handwritten manuscript got 103% of the characters wrong.
Measured in headless Chromium with the tool's own recognition code and the same models your browser downloads. The test texts are the Gettysburg Address (public domain), a passage of the U.S. Constitution and a paragraph of Pride and Prejudice, drawn by Chromium in DejaVu Serif and DejaVu Sans, plus Spanish, French, German, Portuguese and Russian classics. Error rates compare the output with the known text after collapsing spaces and line breaks: CER counts wrong characters, WER wrong words, and 0.00 is perfect.
| Text size | Characters wrong (CER) | Words wrong (WER) | Engine confidence | Verdict |
|---|---|---|---|---|
| 6 px | 79% | 99% | 42 of 100 | Unusable |
| 8 px | 15% | 55% | 56 of 100 | Many errors |
| 10 px | 1.3% | 8.8% | 89 of 100 | Check proper names and numbers |
| 12 px | 0.2% | 1.0% | 94 of 100 | Reliable |
| 14 px | 0.0% | 0.0% | 95 of 100 | Reliable |
| 20 px | 0.0% | 0.0% | 95 of 100 | Reliable |
| 28 px | 0.0% | 0.0% | 95 of 100 | Reliable |
Below about 10 pixels the letters are only a few pixels tall and the engine guesses. Tesseract's documentation says the engine works best on images of at least 300 dpi, which is why enlarging a tiny scan sometimes helps; this tool reads the picture at the size you give it, so make the scan at 300 dpi or take the screenshot at a larger zoom. At 10 pixels the words were wrong 8.8% of the time even though only 1.3% of characters were, because one wrong letter spoils a word.
Measured: blur, noise, JPEG and tilt
Phone photos of pages are blurred, noisy, compressed and a little crooked. We damaged the same text on purpose, one kind at a time, and measured the errors.
| Damage | Text size | Characters wrong | Words wrong | Confidence |
|---|---|---|---|---|
| None | 20 px | 0.0% | 0.0% | 95 |
| None | 12 px | 0.2% | 1.0% | 94 |
| blur 1.5 px | 20 px | 0.0% | 0.0% | 95 |
| JPEG q30 | 20 px | 0.0% | 0.0% | 95 |
| noise | 20 px | 0.0% | 0.0% | 95 |
| low contrast | 20 px | 0.0% | 0.0% | 95 |
| rotated 3° | 20 px | 0.4% | 2.0% | 95 |
| JPEG q10 | 12 px | 3.6% | 16% | 83 |
| noise 100 | 12 px | 8.5% | 36% | 72 |
| blur 2.5 px | 12 px | 87% | 97% | 27 |
| rotated 8° | 12 px | 19% | 44% | 67 |
| rotated 15° | 12 px | 59% | 89% | 40 |
Mild blur, JPEG compression down to quality 30 and moderate noise left the 20 px text untouched. Heavy blur is the one thing that cannot be undone: once the edges of the letters are gone, no engine can read them. Tilt is cheap to fix before you upload: rotate the picture so the lines are horizontal. Tesseract's own guidance says the same, that line detection falls apart when the page is too skewed.
Other languages
Each language has its own model: English 4.1 MB, Spanish 2.3 MB, French 1.1 MB, German 1.5 MB, Portuguese 2.0 MB, Russian 3.9 MB. Choosing the right one matters most when the text has accents or a different alphabet. We read a classic passage in each language at 16 px with its own model and with the English one.
| Language | Own model: characters wrong | English model: characters wrong | English model: words wrong |
|---|---|---|---|
| Spanish | 0.0% | 2.9% | 14% |
| French | 0.0% | 1.4% | 8.1% |
| German | 0.0% | 1.7% | 9.1% |
| Portuguese | 0.0% | 3.0% | 17% |
| Russian | 0.0% | 86% | 100% |
With the matching model all five passages were read without a single error. The English model lost the accents and 8.1% to 17% of the words in the four Latin-script languages, and it could not read the Russian at all (86% of characters wrong).
What does not work: handwriting
We scanned a handwritten manuscript of the Gettysburg Address (a public domain image, 1.4 MB) and ran it. The result: 103% of the characters wrong, more than there are in the real text, with an engine confidence of 33 of 100 and 1.9 seconds of work. The engine reads printed fonts, not cursive. The confidence score is a useful warning: it was 94 to 95 on every clean printed test and 33 here. If the readout says below 60, check every line.
How to get a better result
- Zoom in before you screenshot: text of 14 to 16 pixels or more reads reliably; under 10 pixels it does not.
- Straighten a photographed page so the lines are horizontal; 3 degrees is fine, 8 is not.
- Hold the camera still or use a scan: blur cannot be repaired.
- Crop to the text. Large empty margins or big pictures around the text can confuse the layout analysis, as Tesseract's documentation notes.
- Choose the language of the text before you read it, especially for accents and non-Latin alphabets.
- Check numbers, URLs, names and code: they are the places where one wrong character changes the meaning.
Free tools:Screenshot to textCompress an imageConvert HEIC to JPGConvert any image to PNG
How it works and why it is private
The tool runs Tesseract 5 compiled to WebAssembly, using its neural network (LSTM) engine and the "fast" integer models from the tessdata_fast project, a trade of speed against accuracy chosen by the Tesseract team. The engine and the language file are served from this site, not a third party, and they download the first time you read a picture: 4.1 MB for English. After that the page works without a connection. Your picture is read by your own browser, so it is not sent anywhere.
The recognition runs in a background worker so the page stays responsive. iPhone HEIC pictures are decoded first with the same in-browser decoder as our HEIC converter.
How the numbers were measured
Every figure on this page comes from running the tool's own recognition function in headless Chromium and comparing the output with the known text. The table of 61 runs is saved with the page's evidence. Character error rate is the edit distance between the output and the real text, counting substitutions, insertions and deletions, divided by the length of the real text, after collapsing all runs of spaces and line breaks into one space. Word error rate is the same at word level. Confidence is the engine's own score from 0 to 100, which is not an accuracy: it only says how sure the engine was.
Questions people ask
How do I get the text out of an image?
Choose the picture or paste a screenshot above, pick the language, and the text appears in a box you can edit, copy or download as a .txt file.
Is my picture uploaded?
No. The recognition runs in your browser. The engine and the language file are downloaded from this site once.
How accurate is it?
On printed text of 14 pixels or larger the error rate in our tests was 0.0% of characters; at 10 pixels it was 1.3%; at 6 pixels it was 79%. Screenshots of real pages had 0.0% to 0.7% errors.
Can it read handwriting?
No. A handwritten manuscript got 103% of its characters wrong in our test. It is built for printed text.
Which languages does it read?
English, Spanish, French, German, Portuguese and Russian. Pick the language that matches the text for the best result.
Why is the text wrong or full of strange characters?
Usually the letters are too small, the picture is blurred or tilted, or the wrong language is selected. Zoom in, straighten the picture, or change the language.
Can it read a photo from my iPhone?
Yes. HEIC files are converted in your browser first.
Does it keep the layout?
It returns the text in reading order with line breaks, not the layout of columns, tables or fonts.
Does it work offline?
After the first use the engine and language file are saved by your browser, so later reads can work without a connection.
Related
Sources and how we checked
- Tesseract OCR: README (LSTM engine) (read 2026-10-10)
- tessdata_fast: fast integer versions of trained models (read 2026-10-10)
- Tesseract documentation: Improving the quality of the output (read 2026-10-10)
Reviewed October 10, 2026. The measurements ran the tool's own recognition code in headless Chromium and compared the output with known text. The runs and the script are in data/seo/hub/evidence/2026-10-10/ocr.