Image to Text (OCR)
Extract text from a photo, scan, or screenshot up to 200MB using on-device optical character recognition.
Drag & drop a file here, or click to browse
Clear, well-lit text works best
How to use this tool
Upload a photo, scan or screenshot and click Extract Text. Leave Enhance image first ticked unless the result looks worse. The first run downloads the Tesseract engine and English language data, about 7 MB from cdn.jsdelivr.net, and your browser keeps them for next time. The image itself is read on your device and not sent anywhere.
What "Enhance image first" does
- Converts the image to grayscale, so colourful backgrounds stop looking like letter edges.
- Enlarges images narrower than 1200 pixels, up to twice their size, because small print is where the engine loses letters.
- Measures the tilt of the text lines, up to 20° either way, and straightens the image. Light text on a dark background is measured too.
On the 12 test images in the OCR accuracy guide, average accuracy went from 88.5% without these steps to 99.5% with them. The biggest gains were on 8-pixel text, a 15° tilt and text over a colour gradient.
What it can't read
- Scripts other than English. Hindi text came back as Latin gibberish in testing, because only the English model is loaded.
- Two columns side by side can be read across both, mixing lines from each; crop to one column at a time.
- Handwriting, which the engine isn't trained for.
Frequently Asked Questions
When should I untick "Enhance image first"?
Rarely, but try it if the result has problems on a clean screenshot with large text: enlarging and straightening can't improve an image that was already easy to read, and an unusual layout can be mistaken for a tilt. Run it both ways and keep the better result.
Why did a few characters come out wrong on a clear image?
The usual suspects are look-alike characters: O and 0, l and 1, rn and m, and punctuation such as a rupee sign or a slash in an invoice number. The engine picks the likelier word, which isn't always right for codes and IDs. Check numbers, amounts and reference codes by eye.
Why does the first extraction take longer than the second?
The OCR engine itself is downloaded to your browser the first time you use it, which takes a few seconds depending on your connection. After that first download, it's cached by your browser, so subsequent extractions on the same device start recognizing text immediately without re-downloading anything.
Related Tools
Related Blog Posts
How Accurate Is Browser OCR? 14 Test Images, Measured
The same invoice line rendered 14 ways (small text, blur, tilt, low contrast, a busy background, JPEG artifacts, Hindi, two columns) and run through this site's OCR, with the accuracy of each and the three fixes that took the average from 88.5% to 99.5%.
Read moreHow to Convert JSON to Excel, CSV, XML and YAML (and Back)
What actually happens to your data when JSON becomes a spreadsheet, XML, or YAML: missing keys, nested values, leading zeros, and the XML array problem, with real converter output.
Read moreConverting CSV and XML to Excel Without Losing Data
Why double-clicking a CSV mangles PIN codes, long IDs and ₹ signs, what a careful CSV-to-Excel conversion does instead, and how XML records map to spreadsheet columns.
Read more