img→text

Extract Text from an Image

Turn a screenshot, scan, or photo of text into text you can edit.

By opening this website or using its tools, you agree to our Terms and Privacy Policy.

or drag them here

PNG, JPG, WebP, or HEIC — a scan, screenshot, or photo of text

Network activity during processing
0 bytes uploaded

Your file never leaves your browser during processing

How it works

To extract text from an image, drop a PNG, JPG, WebP, or HEIC onto this page and choose the language it is written in — the text is recognised by an OCR engine running inside your browser, and neither the image nor the text is uploaded anywhere.

This page runs Tesseract, the long-established open-source OCR engine, compiled to WebAssembly so it executes inside your browser tab. When you press extract, the engine and a language model are downloaded once from this site, and from then on the recognition itself is pure computation on your own machine. The network counter under the tool watches the whole processing window and stays at zero bytes sent, because there is nothing to send.

That download is real and worth understanding: roughly 3.7 MB of engine plus between 0.6 MB and 3 MB for the language, depending on which one you pick. It happens before your image is touched, which is why the counter is not affected by it, and your browser caches it so a second document starts immediately. Choosing a different language downloads that language only.

Recognition is a neural network reading letter shapes, and it is only as good as what it is given. It wants dark text on a light background, roughly horizontal, in focus, and at a reasonable size. Large photos are scaled down to about 2600 pixels on the long edge before recognition — counterintuitively this makes results better as well as faster, because the model was trained on images around that scale and a 12-megapixel photo of a page is further from what it expects, not closer.

The language setting matters more than it looks. The engine uses each language’s own vocabulary and letter frequencies to resolve glyphs it cannot read from shape alone, so running English over a French document does not produce an error — it produces confident, plausible, wrong words. The layout setting matters for the same reason: a receipt photographed on a table needs "Scattered text", while a scanned page needs "Document".

Every result carries a confidence figure, and the tool warns you when too much of the page came back uncertain. This is the honest limit of OCR: its mistakes are ordinary-looking words rather than obvious corruption, so nothing here can be trusted without a read-through.

Which languages are supported

Thirteen language models are available, chosen for script coverage rather than a long list of similar ones. Latin-script European languages share most of their letter shapes, so the gain from adding more of them is small; being able to read Cyrillic, Chinese, Japanese, Korean, Arabic, and Devanagari at all is the difference between a tool that works for someone and one that does not.

Each model is downloaded only when you select it. Sizes below are what your browser actually fetches, once, the first time you use that language.

Language models available, and what each one downloads
LanguageModel size
English1.9 MB
Spanish1.1 MB
French595 KB
German834 KB
Portuguese986 KB
Italian1.2 MB
Dutch2.9 MB
Russian1.5 MB
Chinese (Simplified)1.6 MB
Japanese1.5 MB
Korean1.1 MB
Arabic709 KB
Hindi901 KB

Getting a better result

Crop to the text before uploading. The recogniser spends its effort on whatever you give it, and a page photographed on a patterned desk gives it a lot of pattern to explain. Cropping is the single most effective thing you can do.

Straighten the image if it is noticeably rotated. Tesseract tolerates a few degrees of skew and degrades quickly beyond that, because it reads along horizontal baselines.

Prefer the original file over a photograph of a screen. A screenshot is pixel-exact and recognises almost perfectly; a phone photo of the same screen adds moiré, glare, and perspective distortion.

If the result is empty but the image plainly contains text, the layout setting is the usual cause. "Document" expects columns and paragraphs and can decide a sign or a label is not text at all; "Scattered text" makes no structural assumption and finds text anywhere in the frame.

FAQ

Is my image uploaded to a server?

No. The OCR engine is downloaded to your browser and the recognition runs there. The counter under the tool monitors the network while your image is processed and stays at zero bytes sent — the engine and language model are fetched before processing starts, from this site rather than a third party.

Why is there a download the first time?

Because the recogniser itself has to get to your machine. It is about 3.7 MB of WebAssembly plus a language model of 0.6–3 MB. That is the price of not sending your document to someone else’s server, and it only happens once per language — your browser caches it.

Does the language setting translate the text?

No. Nothing here translates. The language dropdown tells the recogniser which language is already written in your image, and the text comes back in that same language. Setting it to Spanish will not turn an English document into Spanish — it will try to read English letters using Spanish vocabulary, which produces worse English or, for a language in a different script, unusable nonsense. Set it to match the image.

Does this use AI?

Yes, in the honest sense: Tesseract’s recogniser is a neural network (an LSTM) trained on text images. It is not a large language model and it does not call any API. It runs on your CPU, offline, and it reads what is there rather than guessing at meaning.

Can it read handwriting?

Generally no. Tesseract is trained on printed and typeset text. Neat block capitals sometimes come through; ordinary cursive handwriting does not, and you will get confident nonsense rather than a clear failure.

Can it keep the layout, like columns and tables?

Partly. The "Document" layout detects columns and reads them in order, so a two-column page comes out in the right sequence rather than interleaved. Word spacing within lines is preserved, which keeps simple tables roughly aligned, but this returns plain text — it does not rebuild a table structure. For tables inside a PDF, the PDF text extractor detects columns properly and exports CSV.

How many images can I do at once?

As many as you like — select several and they are recognised one after another, then joined into one text output labelled by filename. There is no page limit or daily quota, because there is no server keeping count.

Why is the text wrong in places?

First check the language setting matches the language in the image — a mismatch is the most common cause, and it produces confident garbage rather than an error. If that is right, OCR is still a probabilistic reading of shapes and its errors look like real words. Check the confidence figure shown with the result: below about 60% on a large share of words usually means the source is blurred, skewed, or low-contrast. Recropping, straightening, or using a higher-resolution original fixes most of it.

Related tools