LeanImg

Image to Text — Free Online OCR

Extract text from screenshots, scans and photos of documents, right in your browser. Free, no sign-up, nothing uploaded.

Loading text extractor...

Want to thank us? Tell your friends about LeanImg!

How to Extract Text from an Image

1

Select your images

Choose files or drag and drop them into the extractor. JPG, PNG, WebP, GIF, BMP, AVIF and HEIC all work.

2

Pick a language and extract

Choose the language of the text, then click Extract. The first run in a language downloads its model to your browser.

3

Copy or download the text

Read the result, copy it to your clipboard or save it as a .txt file.

Why LeanImg?

Most online OCR sites ask you to upload the picture first. That is a strange thing to accept for an ID card, a payslip or a signed contract, and it is no longer necessary, because a modern browser can do the recognition itself. LeanImg extracts text from images entirely on your device, so nothing is transmitted anywhere. There is no sign-up, no watermark and no per-image credit to buy, and it reads Latin, Cyrillic, Greek, Arabic and Japanese text. Screenshots and clean scans are what it does best, and we say so plainly rather than promising perfect accuracy on every photo. Explore all of our free image tools to keep the rest of your work in the browser too.

Runs on Your Device

The image is read, recognized and turned into text inside this page. Nothing is uploaded, so private documents stay private.

Free and Unlimited

No sign-up, no credits, no watermarks and no paid tier. Run as many batches as you like at no cost.

Reads Several Scripts

Latin, Cyrillic, Greek, Arabic and Japanese text are all supported. Pick the language and the engine loads the matching model.

What the numbers look like

Accuracy claims are cheap, so here is the measurement. Six fixtures went through this engine, each with its text known in advance. The score is a character by character comparison of the output against that known text. The fixtures are synthetic. They are HTML pages rendered in a browser and captured as real screenshots, and the degraded row is that same text under a CSS blur and rotation, so it imitates a bad phone capture.

Measurements from real runs on 2026-08-11, on desktop hardware. The Japanese score is taken with spacing normalized, because the engine puts spaces between the characters. Durations are left out on purpose, since a phone is slower than the machine these ran on.
FixtureLanguageSimilarityConfidence
Clean screenshotEnglish100.0%95
Dense paragraphEnglish100.0%95
Simulated degraded captureEnglish92.4%65
Russian sampleRussian100.0%96
Japanese sampleJapanese100.0%93
Photo with no text in itEnglish515 characters of invented text32

The last row is the one to read twice. That fixture is a dark photograph of butterflies over a mossy log, and there is no writing anywhere in it. The engine returned 515 characters of text that was never there. OCR engines do this. They are built to find character shapes, so grain and texture get reported as characters, and there is no stage in the pipeline that decides a picture is blank. We do not claim to detect an empty image, because we cannot. Every result carries its confidence score and a warning fires when the average drops below 60. That photo scored 32, against 95 for a clean screenshot. The number is the thing to read before you trust the text.

What downloads on first use

Recognition runs on your machine, so the machinery has to get there first. A cold start in English is 3 requests and about 6 MB, which is the worker, the WebAssembly core and the English model. All three are served from this site and none of them is a third-party CDN. Your browser caches them, so the second run in that language starts with nothing to fetch. Each further language adds its own model, between about 0.6 and 2 MB depending on the script, and all nine together are about 11 MB. Nothing travels the other way: your image is read into the page and handed to the engine in memory, and no request carries it out.

Where it works and where it fails

Screenshots and clean scans are the good case, and the table shows how good: three fixtures came back at 100.0%, character for character. The degraded row is the useful one. A blur and a small rotation over the same text cost 7.6 points of similarity and pushed confidence from 95 down to 65, which is low enough to trip the warning on the result card. That is roughly what a hurried phone photo of a page does. Handwriting and text photographed in a scene, such as a shop sign or a shelf label, sit outside what this engine is built for, and we make no claim about either. Give it the biggest, sharpest copy you have. Shrinking a screenshot first throws away the pixels the characters are made of, so if the file has to get smaller, send it to the compressor or the resizer once the text is out.

Frequently Asked Questions

How does image to text extraction work?

OCR stands for optical character recognition. The engine finds the shapes in your picture, matches them against a trained model for the language you picked and writes out the characters it recognizes. All of that happens inside this page. LeanImg uses Tesseract, the open source OCR engine, compiled to WebAssembly so it runs on your own hardware instead of a server.

Does my image get uploaded to a server?

No. The only requests the extractor makes are for the OCR engine and the language model, both served from this site, and they travel in one direction. Your image is read from disk into the page, handed to the engine in memory and turned into text there. There is no upload endpoint in the codebase to receive it. That matters when the picture is an ID card, a payslip or a signed contract. Open your network tab during a run: you will see model files arriving and nothing carrying your image away.

What image formats can I extract text from?

JPG, PNG, WebP, GIF and BMP go straight to the engine. AVIF and HEIC are decoded in the page before the engine sees them, so a photo straight off an iPhone does not need converting first. Whatever goes in, plain text comes out.

Which languages does the OCR support?

English, Spanish, Romanian, Arabic, Greek, Turkish, Indonesian, Russian and Japanese. Pick the language before you extract, because the engine matches shapes against the model you choose and the wrong model reads badly. The picker starts on the language of the page you are on. There is no automatic language detection here yet.

Why does the first run download a model?

Because the recognition happens on your device, so the model has to get there first. The first time you use a language its data file downloads and the browser caches it, and later runs in that language start immediately. That is the trade for privacy. A hosted OCR service uploads your image and keeps the model on its own machine. This one keeps your image and fetches the model instead. Switching to a language you have not used yet downloads that model too.

Is the image to text converter really free?

Yes, free with no account and no usage counter. There is no sign-up, no watermark on the text, no credits and no paid tier holding back the good version. The work runs on your hardware, so there is no per-image server cost for us to pass on to you.

How accurate is the text extraction?

It depends on the input, and the difference is large. Screenshots and clean scans read very well, because the characters are sharp, evenly lit and sitting straight. Photographs of paper are less predictable, and they get worse with blur, glare, shadow or a tilted angle. There are cases we will not pretend to handle: handwriting and text in a scene such as a shop sign or a label on a shelf. This engine is built for printed characters. Other sites advertise perfect accuracy on all of it. That claim is not true of any OCR engine, including this one, so read the output before you rely on it.

How many images can I process at once?

You can select a batch, and the dropzone shows the limit for a single run. Images are processed in sequence rather than in parallel, and each result appears as soon as it is finished, so you can start reading and copying while the rest are still working. Sequential processing also keeps memory use predictable on phones.

What does the low confidence warning mean?

The engine reports how sure it is about each word it reads, and the result card shows the average for the image. When that average falls below the threshold we set, you get a warning instead of a clean-looking result. It is not a verdict that the text is wrong. It is a signal to check it. In practice it fires on blurry captures, low contrast, very small text and the wrong language selection.

How do I get better OCR results?

Give the engine bigger, sharper characters. Screenshot the source rather than photograph it whenever that is possible. If you have to use a camera, shoot straight on rather than at an angle, fill the frame with the text and keep the lighting even so no glare or shadow crosses the page. Dark text on a light background reads best. Pick the right language before you extract, since that choice changes the result more than anything else on this list.

Can I extract text from a screenshot?

Yes, and a screenshot is the best case for this tool. It is rendered text: crisp edges, flat background, no lens and no lighting to fight. That is exactly what a printed-text OCR engine is built to read. Screenshots of error messages, chat threads, app dialogs and terminal output all come through well. Table layout is not reconstructed, so you get the words, not the grid.

What can I do with the extracted text?

Copy it to your clipboard, or download it as a .txt file. When you process a batch you can also download everything as a single .txt. There is no searchable PDF output here, and we would rather say that plainly than imply it: this tool gives you plain text, not a rebuilt document with the original layout. If you need the words in a spreadsheet, a document or a translator, paste them there.

Can I extract text from a PDF?

Yes. Drop a PDF into the same box you would drop an image into. A digital PDF, the kind software produced, already carries a text layer. That layer is read directly, so the text comes out exactly as it was written with no OCR involved. A scanned PDF has no text layer, only pictures of pages, so each page is rendered and run through OCR the way a screenshot is. Either kind is read up to 25 pages per PDF, and nothing is uploaded: the file is opened inside this page and stays on your device.

Why is my PDF result exact on some pages and not others?

Because the file mixes two kinds of page. A digital report with a photographed signature page inside it, or a scan with a generated cover sheet on the front, carries a real text layer on some pages and nothing but an image on the rest. Pages with a usable text layer are read verbatim. Pages without one are rendered and sent through OCR, which reads well on clean scans and less well on crooked or blurry ones. The summary line on the result says which pages came from the text layer and which went through OCR, so you know where to check the output.

Have more questions? Learn more about LeanImg and how we process your images.

Need smaller files? Compress your images to reduce file size. Need a different format? Convert between formats like JPG, PNG, WebP and AVIF. Need different dimensions? Resize your images to an exact size.

PDF to Text — Free Online Text Extractor