OCR — Image to Text
Extract text from photos, screenshots, and scanned pages. Runs in your browser where supported — your image is not uploaded.
Last tested June 2026. We verified this tool's core flow — selecting input, processing, preview, and download — in current Chrome, Safari, and Firefox on desktop and mobile, and checked how it handles unsupported or oversized files.
What OCR — Image to Text is good for
The tool solves one specific problem: text that lives inside an image and can't be selected or copied. That covers a lot of everyday situations. You photograph a printed contract, a recipe card, or a page from a library book and want the words as editable text instead of retyping them. You have a screenshot of a chat, an error message, or a slide where the text isn't selectable, and you need to quote it. You scanned an old letter, an invoice, or a receipt and want a searchable copy.
It also helps with multilingual material. Because you choose the language before running, you can pull Spanish, French, German, Italian, Portuguese, Russian, Simplified Chinese, Japanese, Korean, Arabic, or Hindi text — not only English. Students digitise handw/printed notes and textbook pages, translators get a rough text layer to work from, and developers grab the wording of an on-screen message to search a codebase or log a bug. Anywhere you'd otherwise squint and type by hand, this gives you a draft to clean up instead.
How to use it
Getting text out takes a few clicks. Load an image, pick the matching language, run recognition, then copy or download the result. The steps below mirror the buttons on the page, and the howToSteps list captures the same flow.
One thing worth knowing up front: the very first time you use a given language, the tool downloads that language's recognition model (a few megabytes). After that it is cached in your browser, so subsequent runs in the same language start instantly with no further download.
A real example, start to finish
Say you photographed a one-page printed flyer for an event and you want the date, address, and contact details as text you can paste into a calendar invite. Open the OCR tool and drag the photo onto the drop area — the source preview appears on the right. Leave the language on English, since the flyer is in English.
Click Extract Text. The progress bar fills as the model loads and then recognises the page, and within a few seconds the flyer's wording appears in the text box. The status line reads something like 'Done • 84 words • 512 chars • confidence 91%'. You scan the result: most of it is perfect, but the OCR misread the phone number's last digit because the print was slightly blurry there. Because the box is editable, you fix that one digit directly. Then you click Copy and paste the cleaned-up details into your calendar, or click Download .txt to keep a copy named after the original photo. Nothing was uploaded at any point.
Supported input and output
Input is any image your browser can decode that contains text — JPG, PNG, WebP, GIF, BMP, and similar are all fine, whether it's a camera photo, a screenshot, or a scan saved as an image. You add it by dragging it onto the drop zone or using the Choose File button; the file picker is filtered to image types.
Output is plain text. It shows in the editable text box where you can correct it, and from there you have two ways to keep it: Copy puts the text on your clipboard, and Download .txt saves a UTF-8 text file (named after your source image, so flyer.jpg becomes flyer.txt). The status line also reports word count, character count, and a confidence percentage so you can judge how trustworthy the read is before you rely on it.
Privacy: everything stays in your browser
The recognition runs in your browser where supported through Tesseract.js and WebAssembly. Your image is loaded locally for preview, the OCR engine reads it in memory, and the extracted text is produced and stored only in the page in front of you. The picture is not uploaded to a server, and neither is the resulting text.
There is no account, no sign-up, and no cloud processing. The only thing fetched from the network is the language model file on its first use (and the Tesseract engine script itself), which are static assets — they carry your image neither out nor back. When you close the tab, the preview and any working copies are released. If you want a saved result, you have to explicitly copy it or download the .txt yourself.
How your file is processed
This OCR tool runs in your browser using the Tesseract recognition engine, which loads from a CDN on first use. The image is read and the text is recognized on your device, and the image is not uploaded to a server.
Quality and honest limitations
OCR is recognition, not magic, and accuracy depends heavily on the input. Sharp, high-contrast, upright text on a plain background reads best — think a clean screenshot or a flat, well-lit scan. The confidence percentage in the status line is a useful gauge: a high number usually means a clean read, while a lower one is a hint to proofread carefully.
Several things reliably hurt accuracy. Blur and low resolution make characters mushy. Skew and rotation (a page photographed at an angle) confuse line detection. Low contrast — grey text on a grey background, or a photo with glare and shadows — drops letters. Decorative or unusual fonts, dense tables, multi-column layouts, and handwriting are all harder than plain printed paragraphs. The engine also recognises one language per run, so a page mixing two scripts will only resolve cleanly in the language you selected. Treat the output as a strong first draft you skim and fix, not a guaranteed perfect transcription.
Common problems and fixes
'The first run is slow or seems stuck.' That's the one-time language model download (a few MB) plus the initial recognition. Let the progress bar finish; the next run in the same language is much faster because the model is cached.
'The text is full of garbled characters or the confidence is low.' The input is probably blurry, skewed, low-contrast, or low-resolution. Retake or rescan it straighter, closer, and in better light, then run again — small improvements in the image produce large improvements in the text.
'I got mostly nonsense even though the image is clear.' Check the language selector. If the text is Spanish but English is selected, recognition will struggle; pick the matching language and re-run (this loads that language's model the first time).
'The OCR engine failed to load.' This needs the Tesseract script and model from the network, so a blocked connection, an aggressive content blocker, or going offline before the model is cached can stop it. Reconnect, disable the blocker for this page, and reload.
'Copy didn't work.' Some browser settings restrict clipboard access. The text box is editable and selectable, so you can select all and copy manually, or use Download .txt instead.
Tips for the best results
Feed the engine the cleanest image you can. If only part of the picture has the text you need, crop to that region first so the engine isn't distracted by background or photos. If the page was shot at an angle, straighten it so the lines are horizontal before running — upright text is far more reliable.
Always set the language to match the text before clicking Extract Text; the right model makes a real difference, especially for non-Latin scripts like Chinese, Japanese, Korean, Arabic, and Hindi. After recognition, use the confidence figure as a cue: above ~90% you'll usually only fix a stray character or two, while a lower number means read the whole thing against the image. Finally, edit in the box before you copy or download — fixing the obvious mistakes there means your saved .txt is clean the first time.
Frequently asked questions
Which languages can it recognise, and do I have to choose one?
It supports 12 languages — English, Spanish, French, German, Italian, Portuguese, Russian, Simplified Chinese, Japanese, Korean, Arabic, and Hindi — and you select the right one before clicking Extract Text. English is the default. Recognition processes one language per run, so for non-English text, switch the selector first; a mismatched language is the most common cause of garbled output.
Why is the first run slower than later ones?
The first time you use a particular language, the tool downloads that language's recognition model, which is a few megabytes. Your browser then caches it, so every later run in the same language starts instantly with no download. Switching to a new language triggers a one-time download for that language too.
What do the word count, character count, and confidence percentage mean?
After recognition, the status line reports how many words and characters were extracted and a confidence percentage from the engine. Confidence is a quality gauge for the read as a whole: a high figure usually means a clean result, while a lower one is a signal to proofread the text against the image because some characters were likely guessed.
Can I fix mistakes in the recognized text?
Yes. The output appears in a fully editable text box, so you can correct any misread characters, delete junk, or reformat before you do anything with it. Editing there means the text you Copy or Download as .txt is already cleaned up.
Does my image or the extracted text get uploaded anywhere?
No. Recognition runs in your browser where supported via Tesseract.js and WebAssembly. The image is read locally and the text is produced on the page — neither is sent to a server, and there is no account or sign-up. The only network activity is fetching the OCR engine and the language model, which don't carry your content out or back.
Can it read handwriting or photos taken at an angle?
It's built for printed and on-screen text, and handwriting is unreliable. Skewed, angled, blurry, or low-contrast images also reduce accuracy because the engine struggles to detect lines and characters. For best results, use sharp, upright, high-contrast text; straightening or cropping the image first noticeably improves the read.
In what format can I save the result?
Two ways: Copy places the text on your clipboard for pasting anywhere, and Download .txt saves a plain UTF-8 text file named after your source image (so receipt.jpg becomes receipt.txt). The output is plain text, not a formatted document, so layout like columns or tables won't be preserved.
Can it process several images at once?
No — it works on one image per run. To handle several, recognise the first image, copy or download its text, click Reset, then load the next one. Keeping the same language between images avoids re-downloading the model each time.
Related tools
Crop the image to the text region first · Rotate or straighten a tilted scan · Compress the screenshot afterwards · Turn a PDF page into an image to OCR
Related guides
How to remove photo metadata before sharing · Reduce image size without losing quality