Extract Text from Images: Free Private OCR in Your Browser

Image to Text reads printed text out of images, screenshots, and scanned PDFs, and hands you back something you can select, edit, and paste: receipts, whiteboard photos, error dialogs, old scanned letters, contracts. The reading itself happens on your device: the recognition engine downloads once, a little over 31 MB, and after that the tool keeps working with your internet turned off. Nothing about the image you feed it is sent anywhere, at any point.

What It Reads

Screenshots & photos PNG, JPG, WEBP, BMP, and GIF (only the first frame of an animated GIF gets read). HEIC works too, but only if your own browser can decode HEIC: Safari usually can, Chrome and Firefox usually can't.
Scanned PDFs Any page count, read one page at a time. Pages that already contain a real text layer are pulled out directly instead of recognized (see below).
Clipboard Paste an image anywhere in the app with Ctrl+V (⌘V on Mac), no need to save it first.
Batches Any number of files in one run. There's no file-count or page limit built into the tool.

The PDF handling is the part worth explaining. Before a page ever touches the recognition engine, it's checked for a real text layer: more than roughly 200 characters of actual, selectable text on the page (or a document that averages more than 20 characters a page) counts as already-text, and that page's content gets read straight out of the PDF: instant and exact, no recognition involved. This check runs page by page, so a 40-page contract with one scanned signature page tacked onto the end only actually recognizes that one page. Pages that do need recognition are rendered at roughly 200-DPI-equivalent resolution, capped at 2,560 pixels on the longest side, and accuracy doesn't measurably improve past that scale, and memory use grows with the square of the resolution. Only one page's image is ever held in memory at a time, which is why a 300-page scan behaves the same as a 3-page one instead of slowing to a crawl or running out of memory.

How It Works

1

Drop or Paste

Drop images or scanned PDFs onto the page, or press Ctrl+V (⌘V on Mac) to paste a screenshot straight from your clipboard. Paste works from anywhere in the app, not just one drop zone.

2

Read

The engine reads each page using whichever language packs you've ticked (English plus around fifty other languages are on by default). PDFs stream results in as pages finish, so you can start reading page 1 while page 7 is still being recognized.

3

Review

Image and extracted text sit side by side: click a line of text to see exactly which box on the image it came from. Anything the recognizer scored below 0.85 confidence gets an amber underline, so you know what's actually worth a second look instead of guessing.

4

Copy or Export

Copy everything to the clipboard, or download .txt, .md, or one .csv per detected table. A batch of files zips into a single download; a multi-page PDF stitches into one document with "--- page 4 ---" markers between pages.

Real Tradeoffs, Not a Feature List

Ticking more than one language costs you time

Most OCR tools either guess the language automatically or make you commit to one before you start. This one does something blunter: every language you tick gets tried on every page, and whichever attempt actually produces the most text at the highest confidence wins, not a language the tool "detected," but the pass that empirically read best. Tick two languages and a page roughly takes twice as long to read; tick three and it's roughly triple. That's worth it when you genuinely don't know what's in a stack of scanned mail. It's wasted time if you already know every file in the batch is in English.

The default pack (English plus roughly fifty other European languages, and, because of how its word list happens to be built, Chinese and Japanese as well) covers most people without ever opening the language picker. Korean, Russian/Ukrainian/Belarusian, Hindi/Marathi/Nepali, and Thai are separate downloads, roughly 8–14 MB each, fetched the first time you tick them. Right-to-left scripts like Arabic aren't supported yet: the logic that puts recognized lines back into reading order is left-to-right only today. Vietnamese technically runs, but its word list doesn't carry tone-marked vowels, so diacritics won't survive.

Why table output says "experimental"

There's no dedicated table model running today: what you get is geometry. If recognized line boxes line up into at least two aligned columns across at least three rows, the tool guesses it's a table and offers a "copy as CSV" action. That works well on a clean receipt or a simple price list. It breaks on merged cells, wrapped text inside a cell, or a borderless table where nothing lines up cleanly, so a heuristic table never gets folded automatically into a Markdown export; you have to pull the CSV yourself and check it. A mode that reads document structure directly, instead of inferring it from box positions, is already visible in the language-picker screen: grayed out, labeled "coming soon," because it isn't finished rather than because it's being hidden from you.

Frequently Asked Questions

Does it work offline? +
Yes. The reading engine is a one-time download (a little over 31 MB); after that, disconnect your internet and it keeps working. Nothing about your images is ever sent anywhere, at any point.
Is it really free? +
Yes, no account, no watermark, no page cap. It runs on your device, so there's no server cost to recoup from you.
What about tables? +
Simple grids like receipts convert to CSV using the box-geometry heuristic described above, labeled experimental on purpose. A real table-structure mode is in progress, not yet shipped.
Which languages are supported? +
English and roughly fifty European languages by default, plus Chinese and Japanese in that same pack. Korean, Russian/Ukrainian/Belarusian, Hindi/Marathi/Nepali, and Thai download the first time you tick them. Arabic and other right-to-left scripts aren't supported yet.
Can it read handwriting? +
Hit or miss. It's built for printed text: screenshots, documents, receipts, scans. Neat block capitals sometimes work; cursive usually won't. Low-confidence lines get flagged so you know what to check by hand.

Built and maintained by CloudlessKit, an independent, ad-supported set of browser tools.

Related reading: How to copy text from a screenshot or photo.