Image to text (OCR)
Runs entirely in your browser. Your files and data never leave your device.
About this tool
Drop an image on this page and the words inside it appear in the panel next to it, ready to copy. You can also paste a screenshot straight from the clipboard, which is usually faster than saving it to disk first. PNG, JPEG, WebP, and BMP files all work.
How accurate is it?
That depends almost entirely on the picture. Screenshots and clean scans of printed pages read very well, because the letters are sharp and sit on an even background. Photos taken with a phone are harder: shadows, curved paper, motion blur, and glare all cost accuracy, and a page shot at an angle can come back with scrambled lines. Handwriting is out of reach, since the engine here is trained on printed type only. If a result looks rough, retaking the picture straight on with more light usually helps more than any setting would.
The language menu in the header of the text panel starts on auto detect: the tool reads the image, looks at what came back, and re-reads it with the right model when the words point to one of the other seven languages. The menu itself updates to show which language it settled on. Auto detect has limits, though. Very short snippets give it too little to go on, and text in another writing system defeats it entirely: a Latin-alphabet model reading Japanese returns noise the detector cannot place. In those cases, pick the language yourself; getting it wrong quietly ruins the output, because a model reading the wrong language invents words rather than telling you something went sideways. Switching re-reads the image you already loaded.
Is my image uploaded anywhere?
No. Recognition runs inside your browser using Tesseract, compiled to WebAssembly and driven by tesseract.js. The image goes into a canvas on your machine and the text comes back from a worker thread on the same machine. There is no server in the loop, so nothing can log your invoices, ID scans, medical letters, or whatever else you happen to be reading. You can load the page, disconnect from the network, and it still works once the model is cached.
Why does the first run take a while?
Each language needs a trained model of roughly one to three megabytes, plus the recognition engine itself. The browser downloads those on your first read and stores them in IndexedDB, so the second image you read starts almost immediately. Switching to a language you have not used before triggers one more download for that language. Images with a very long edge are scaled down before reading, which saves several seconds on a 12-megapixel photo without costing accuracy at normal text sizes. See the MDN page on IndexedDB if you want to know where that cache lives.
Typical uses: copying a code or address out of a screenshot, getting quotes out of a scanned book page, retyping a receipt into a spreadsheet, and lifting text from an image someone sent you when nobody has the original document any more.