Read the text out of screenshots, photos, and scans — in your browser
Click or drag images here — PNG, JPG, WebP, BMP (multiple allowed)
| Language | Code | Fast model | Standard model |
|---|---|---|---|
| English | eng | 1.9 MB | 10.4 MB |
| Spanish | spa | 1.1 MB | 8.0 MB |
| German | deu | 0.8 MB | 6.8 MB |
| French | fra | 0.6 MB | 6.0 MB |
| Italian | ita | 1.2 MB | 6.6 MB |
| Portuguese | por | 1.0 MB | 6.4 MB |
| Dutch | nld | 2.9 MB | 9.7 MB |
| Russian | rus | 1.5 MB | 8.2 MB |
| Chinese (Simplified) | chi_sim | 1.6 MB | 19.2 MB |
| Japanese | jpn | 1.5 MB | 15.4 MB |
| Korean | kor | 1.1 MB | 6.6 MB |
| Arabic | ara | 0.7 MB | 1.6 MB |
| Hindi | hin | 0.9 MB | 1.3 MB |
Sizes are the compressed .traineddata.gz files the tool fetches once from the Tessdata CDN, then your browser caches them. Over 100 languages are available — the dropdown lists the twenty most requested. The engine core itself (LSTM WebAssembly) is 2.7 MB, downloaded once regardless of language.
| Image type | Typical size | Expected result |
|---|---|---|
| Screenshot (UI, code, chat) | 1200×900 = 1.08M px | Near-perfect — flat, sharp, straight |
| 300 DPI document scan | 2550×3300 = 8.4M px | Excellent; proofread numbers |
| Phone photo, page filling frame | 4000×3000 = 12M px | Good with preprocessing; watch skew |
| Phone photo at an angle | varies | Fair — straighten and re-shoot |
| Small crop of a few words | < 50px text height | Poor — text is too small to segment |
| Handwriting | any | Unreliable — engine is trained on print |
The pattern: OCR rewards flat, straight, evenly lit, adequately sized text. The two failure levers you control are resolution (text needs roughly 20 pixels of x-height — the height of a lowercase letter — for reliable segmentation) and contrast.
Optical character recognition looks at the pixels of an image and works out which characters they form. This tool decodes your image to a canvas in the browser, optionally converts it to high-contrast grayscale, then hands the pixels to Tesseract — the OCR engine maintained as open source since the 1990s — running as WebAssembly in a worker thread. The engine segments the page into blocks, lines, and words, matches candidate shapes against a trained language model, and uses language context to fix ambiguous characters (that's how it tells "rn" from "m").
Everything in image OCR scales with pixel count. A 1920×1080 screenshot is 2,073,600 pixels, which is 8,294,400 bytes decoded as an RGBA buffer; a 4000×3000 photo is 12,000,000 pixels, about 5.8× more work. A 300 DPI scan of a US Letter page renders to 2550×3300 = 8,415,000 pixels — which is why "scan at 300 DPI" is the standing advice for documents and why a big photo takes visibly longer than a screenshot. Downscaling a huge photo to where the text is still crisp often runs faster and reads better.
Receipt photo, English, fast model. The engine downloads once: 2.7 MB of WebAssembly plus the 1.9 MB fast English model — about 4.6 MB total on a cold cache, a few seconds on typical broadband, and nothing on every later visit. The 3024×4032 phone photo (12.2M pixels) is decoded, grayscaled, and contrast-stretched in the preprocessor, then recognized in a background worker; on a typical laptop that's several seconds, longer than a screenshot but far shorter than retyping the receipt. Out comes plain text — item lines, prices, totals — with the standing caveat that digits are exactly where OCR misreads, so totals get proofread.
Drop the image into the tool above, pick the language, and press Recognize. The text appears in seconds, ready to copy or download as .txt. It runs on the open-source Tesseract engine compiled for the browser, so there is no page limit, no account, and no upload — the image never leaves your machine.
No. The image is decoded by your browser and read by Tesseract running as WebAssembly in a worker thread on your device. The only network traffic is the one-time engine download from a CDN (about 2.7 MB of WebAssembly plus your language model), which the browser then caches. Your image's pixels and the recognized text stay in the tab.
Over 100. English, Spanish, German, French, Italian, Portuguese, Dutch, Russian, Chinese (simplified and traditional), Japanese, Korean, Arabic, Hindi, and dozens more each have a trained model. You can load multiple languages at once for mixed-language images, at the cost of downloading each model.
Cameras add what scanners don't: perspective skew, uneven lighting, shadows, lens blur, and background clutter. OCR engines segment characters best from flat, evenly lit, straight-on text — which is exactly what a 300 DPI scan gives and a phone photo approximates. Straighten the page, fill the frame, avoid shadows across the text, and enable the grayscale-contrast preprocessor for phone photos.
Not reliably. Tesseract is trained on printed type, so neat handwriting sometimes comes through partially and everyday cursive mostly doesn't. If you have handwriting at scale, you need models trained for it (or a human transcriber). For printed text — receipts, forms, screenshots, signs, book pages — image OCR is the right tool.
Both are the same Tesseract engine; they differ in model size and accuracy. The fast variant of English is 1.9 MB and trades a little accuracy for speed; the standard model is 10.4 MB and the most accurate. Start with fast — if a clean image still misreads, re-run with standard. Both are cached after the first download.