Get the text out of a picture
Read the words out of a photograph, a scan or a screenshot and take them away as text you can edit, search and paste. The picture is never stored.
- Never stored
- No queue, no waiting
- No signup, no watermark
How it works
Add your picture
JPG, PNG, WebP, GIF, BMP, an iPhone HEIC or a scanner's TIFF. A photo taken at an angle is straightened and its lighting levelled before it is read.
Check the language
The script is read from the picture and the language chosen for you. Over 120 are available if it guessed wrong, or if the picture holds more than one.
Copy or download
Keep the layout, with the lines and columns where they were, or join the lines into flowing paragraphs ready to paste somewhere else.
How the picture is read
The size the reader wants is measured from the ink rather than from the file. The height of a line of text is estimated from the picture itself and everything is rescaled so that a line lands at about thirty-four pixels — a small screenshot is enlarged up to fourfold, and a huge photograph is shrunk, with the longest side capped either way. That is why a nine-megapixel photo of a menu is no more accurate than a sharp small one, and why a picture under about three hundred pixels on its shortest side skips language detection entirely and is read as Latin script. Before any of that, the paper behind the ink is estimated in patches and divided out to level the lighting, the page is measured for skew across its whole height and rotated straight, and the result is reduced to black and white on a single global threshold.
Choosing the language is an audition rather than a lookup, because the usual detector does not detect languages. The first pass reports the script and the rotation, nothing more; the script narrows the field, your browser's own language settings break ties between languages sharing one, and then each candidate is actually used to read a reduced copy of the picture and scored on how many confident words it produced. The winner reads the real page, and the recognised text is examined again — for diacritics, for characteristic letter pairs, for common short words — to see whether a different language would do better. This is the machinery behind "naming the wrong language gives you a confident empty page": the audition exists precisely so that the guess is tested against your picture rather than asserted.
One thing is worth knowing about what reaches the output. A paragraph the reader was not confident about is dropped rather than shown, so text you can see in the picture can be missing from the result entirely instead of appearing as nonsense. The same is true of blocks the reader classified as picture or noise, and of isolated marks with no letter or digit in them. There is no cut applied to ordinary low-confidence words, so misreadings inside a paragraph survive and are yours to catch. When the confidence figure is respectable and a chunk of the page simply is not there, that is what happened.
When you want something else
Nothing is stored, but this is the one tool on the site where the first run is not free: the reader itself is a few megabytes and each language pack is another one to five, fetched from this site and then kept for next time. A single page is worth the wait and two thousand scans on a schedule are not — that is a desktop OCR tool such as OCRmyPDF, which adds a text layer to a whole folder in one command, with no download and no clicking.
Three things are simply not attempted here, and knowing which is quicker than discovering them. Perspective is not corrected — the page is measured for rotation and straightened, but a photograph taken from the side keeps its trapezoid shape, so shooting from directly above is worth the extra second. The threshold that separates ink from paper is a single value for the whole picture rather than one per region, so a page half in shadow will lose the darker half even after the lighting is levelled; photograph it again in flat light rather than fighting it. And a table laid out with spacing rather than ruled lines has no rules to find, so it is read as columns of prose and survives the paste into a spreadsheet by luck.
Frequently asked questions
How accurate is it?
On clear printed text, photographed square and in focus, very — a few characters in a thousand. Accuracy falls with blur, glare, low contrast and unusual typefaces, and the page shows you how sure the reader was rather than making you guess. If the number is low the picture is usually the problem: more light, less angle, and filling the frame with the text fix most of it.
Is my picture stored anywhere?
No. The language pack comes from this site the first time you use a language; the picture itself is never stored and never sent anywhere, so it works with the Wi-Fi off.
Which languages can it read?
Over 120, including English, Bengali, Hindi, Urdu, Arabic, Spanish, French, German, Portuguese, Russian, Chinese, Japanese and Korean. The script is read from the picture itself; where several languages share a script — Latin, Cyrillic, Arabic, Devanagari — your browser's own language settles it, and you can always change it.
Will it keep the columns and the table?
Yes, if you ask it to. Ruled tables are found and read cell by cell, so a label does not run into its value, and they come back as tab-separated rows that paste straight into a spreadsheet. Columns of prose are read in reading order rather than straight across. Choosing to join the lines instead throws that structure away deliberately, which is what you want for a paragraph you are about to reflow.
Can it read handwriting?
Neat, separated printing — block capitals on a form — often comes out. Joined-up handwriting does not, here or in any other general OCR tool; the honest answer is that it is a different problem needing a different approach. There is a separate page for handwriting that says so plainly and shows you what it managed.
Which picture formats work?
JPG, PNG, WebP, GIF, BMP and SVG through the browser itself, plus HEIC from an iPhone and TIFF from a scanner. A photo taken on a phone in portrait comes out the right way up, because the orientation flag the camera wrote is applied first.
Why did it get some words wrong?
Almost always the picture rather than the text: a glare across the page, a shadow from your hand, camera shake, or text so small on screen that each letter is a handful of pixels. The reader is given the picture scaled to the size it reads best at, and the lighting is levelled first, but no amount of conditioning invents detail the camera did not capture.
Is there a size limit?
Only your device's own memory. Nothing is stored, so there is no server limit to hit. A very large photograph is scaled down to what the reader can use — beyond a point more pixels add cost and no accuracy.
Good to know: Joined-up handwriting is not reliably recognised by any general OCR tool, including this one. Text printed over a picture, heavily stylised lettering and very low contrast will come out patchy. The result is plain text: typefaces, colours, bold and italic are not carried over, and neither is the picture itself.
Put this tool on your website
Free for any blog, class page or help article. Paste one snippet and your visitors can use it right on your page.