Image to Text Converter

Pull the words out of a picture. This tool runs optical character recognition on screenshots, scanned pages and photographs of documents, then gives you the text as something you can edit, copy and search rather than something you have to retype.

Your files never leave this device

Read the text in your images Up to 10 images ยท 16 languages

Worth knowing: the recognition engine and the language model are downloaded from a public CDN the first time you press the button, which takes a few seconds. Your images are not part of that. They are read on your own device and are never uploaded.

Drag & drop images here

Screenshots, scans and photographs of printed text. Sharper images give better results.

No files selected yet

    Choosing the right language matters. The model uses it to decide between letters that look alike.

    Output

    Leave the first box unticked to keep one line of text per printed line.

    Image handling

    Converts to greyscale, inverts light text on a dark background, and enlarges small images. Leave this on unless a particular image reads better without it.

    0 Words
    0 Characters
    - Confidence

    This box is editable. OCR is never perfect, so correct anything it misread before you use the text.

    How to extract text from an image

    1. Drag your images onto the box above, or press Browse files to select them.
    2. Choose the language the text is written in. This makes a real difference to accuracy.
    3. Decide whether you want one line per printed line, or flowing paragraphs.
    4. Press Read the text. The first run downloads the language model, so give it a moment.
    5. Correct anything misread in the box, then copy the text or download it as a .txt file.

    What this OCR tool does

    • Recognises printed text in sixteen languages, including non-Latin scripts such as Arabic, Bengali and Japanese.
    • Reports a confidence score, so you know when a result deserves a careful read.
    • Reads up to ten images in one run and keeps the results labelled and in order.
    • Rejoins words that were split by a hyphen at the end of a line.
    • Gives you an editable box rather than a locked result, because no OCR engine is perfect.
    • Runs the recognition on your own device, so private documents are never uploaded.

    What optical character recognition actually does

    An image of a page is, to a computer, a grid of coloured dots. It contains no letters, no words and nothing to search. OCR is the process of looking at that grid, finding the shapes that are probably characters, and deciding which character each shape most likely represents. The output is real text that you can edit, search, translate and count.

    The deciding part is where a language model earns its place. Many characters are near identical in isolation: a capital I, a lower case l and the digit 1 can be the same vertical stroke. What separates them is context, meaning which combinations of letters are common in a particular language. This is why choosing the correct language in the dropdown changes the result rather than just the interface.

    What it reads well, and what it does not

    • Excellent: screenshots, PDF pages exported as images, and flatbed scans of printed documents.
    • Good: a steady phone photograph of a page, taken square on in reasonable light.
    • Mixed: photographs at an angle, receipts on thermal paper, and text over a busy background.
    • Poor: handwriting of any kind, heavily stylised display fonts, and anything blurred.

    Resolution matters more than most people expect. Characters need to be roughly twenty pixels tall before recognition becomes reliable, which is why a screenshot taken at normal zoom often outperforms a photograph taken from across a desk. If a result disappoints, retaking the picture closer and straighter usually helps far more than any setting on this page.

    Dark backgrounds, and why they used to fail

    Recognition engines are trained on dark text printed on light paper. Give one a poster with yellow lettering on black, or a screenshot taken in dark mode, and accuracy falls off a cliff. The letters are perfectly clear to you and meaningless to the engine.

    This page handles that before recognition starts. The image is measured, and if it is predominantly dark it is inverted, so light text on black becomes dark text on white. Everything is converted to greyscale, because colour carries no information the engine can use, and small images are enlarged, because letters below roughly thirty pixels tall give it too little to work with.

    Coloured text, and why the obvious approach fails

    Turning a colour picture grey sounds simple and hides a trap. The usual formula copies how the eye perceives brightness, which weights green heavily and red very little. Red lettering on black therefore comes out almost as dark as the background it sits on, and the engine discards it as though it were not there. A poster with red words in its headline loses every one of them, silently, while the white words beside them read perfectly.

    The obvious repair is to use the strongest colour channel instead. That fixes red on black and breaks something else: black text on a bright green highlight, where green's own weakest channel is nearly as dark as the letters. One rule cannot serve both.

    So the choice is measured rather than assumed. Three greyscale versions are built and each is scored on how cleanly it divides into two groups, which is exactly what an engine needs in order to tell ink from paper. The clearest one is used. On a green-highlighted image that single change took the result from one word to more than two hundred.

    On a test poster of yellow and white text on black, the untreated image returned a garbled heading and mangled every second line of the body. The same image after preparation read cleanly. If you ever meet an image that reads better without it, the option can be switched off.

    Headings are read, not skipped

    An engine has to decide how a page is laid out before it reads a word of it. The common default treats everything as one uniform block of text, which suits a paragraph and fails a poster: the body comes out correctly and the large heading at the top is quietly dropped, with nothing to tell you it happened.

    This page assumes instead that the image is a single column containing text of varying sizes, which is what a poster, a slide or a screenshot of a list actually is. Across eight test posters the uniform-block setting recovered one heading out of eight. The setting used here recovered all eight, and kept the numbers attached to the list items underneath.

    Text laid over a photograph

    A poster on flat black can be handled with one brightness cutoff for the whole image. Text placed over a photograph cannot. A screenshot with a bright sky at the top and a dark foreground at the bottom has no single value that separates letters from background everywhere: pick one that works on the sky and the lower half turns to mud, pick one for the foreground and the top washes out.

    When the background is found to vary, each pixel is judged against its own surroundings instead of against the page as a whole. On a test image of white and red text over a photograph of a railway, that lifted the result from sixty nine words to a hundred and twenty five, and recovered a title that had been missing entirely.

    The page checks first and only does this where it helps. On a flat background the simpler route already works, and the extra step would risk making a clean image worse.

    Read the confidence score

    Every run reports an average confidence, which is the engine's own estimate of how sure it is. Above about 85 per cent the text is usually clean enough to use after a skim. Between 70 and 85 expect scattered errors, particularly in numbers and punctuation. Below 70 the source image is fighting you, and the honest advice is to improve the image rather than the text.

    Whatever the score, proofread anything that matters. A misread digit in a phone number or an invoice total is the kind of error that survives right through to the consequences, and it is exactly the kind OCR makes. The output box is deliberately editable for that reason.

    Why this one downloads something

    Every other tool on this site works with nothing but the code already in the page. Recognition is different, because it needs a trained model, and those models are several megabytes each. Shipping sixteen of them to everyone who opens the page would be indefensible, so the engine and the single model you chose are fetched when you press the button and then cached by your browser for next time.

    The important part is what is not sent. Your images stay in this tab. The download runs in one direction only: a public model comes down, and nothing of yours goes up. That distinction is the whole reason this tool exists rather than pointing you at a service that wants your documents on its servers.

    What to do with the text afterwards

    Recognised text usually needs a tidy. The text cleaner removes the odd characters that OCR sometimes invents, the line break remover reflows text that arrived one line at a time, and the word counter tells you what you ended up with. If your source is a PDF rather than an image, try the PDF to text extractor first, because a PDF with a real text layer gives a perfect result with no recognition involved.

    Frequently asked questions

    Are my images uploaded for the OCR?

    No. Recognition runs on your own device inside this browser tab. The only download is the engine and the language model, which come from a public CDN. Nothing of yours is ever sent anywhere.

    Why is the first run slower than the others?

    The first run downloads the recognition engine and the language model you selected, which is a few megabytes. Your browser caches both, so every run after that starts immediately.

    Can it read handwriting?

    Not reliably. This engine is trained on printed text. Handwriting varies far too much between people for it to work, and results range from partly readable to complete nonsense.

    Does it work on dark backgrounds and dark mode screenshots?

    Yes. The image is measured first, and a predominantly dark one is inverted before recognition, because engines are trained on dark text on light paper. Without that step, light text on black reads very badly.

    What about text sitting on top of a photograph?

    That is handled too. Where the background varies across the image, each pixel is compared against its own surroundings rather than one value for the whole page, so letters stay readable over both bright and dark parts of the picture.

    Will it read coloured text, or text on a coloured highlight?

    Yes, both. Rather than using one fixed way of turning colour into grey, the page builds several and measures which separates the lettering from its background most cleanly. That handles red on black and black on a green highlight, which need opposite treatments.

    Why did it get some characters wrong?

    Usually because the image is low resolution, blurred, skewed or has text over a patterned background. Text sitting right beside a border or a decorative line can also be misread, because the line gets treated as part of the first word.

    Does it keep the layout, columns and tables?

    No. The output is plain text in reading order. Columns, tables and formatting are not reconstructed, so a two-column page may interleave and a table becomes a stream of values.