OCR — Image to Text
Extract text from images, screenshots, and scanned documents free in your browser. No upload — text recognition runs entirely on your device via WebAssembly.
Updated
OCR — Image to Text
Extract text from images and scanned documents. Runs entirely in your browser via WebAssembly — your image is never uploaded to a server.
Extract Text From an Image
Click or drag an image here
Photos, screenshots, or scanned documents
Frequently Asked Questions
Is my image uploaded to a server?
No. Text recognition runs entirely in your browser using WebAssembly (the tesseract.js OCR engine). The image itself never leaves your device. The only network request is a one-time download of the language pack the first time you use a given language — after that, your browser caches it and no further requests are made.
Which languages are supported?
The tool ships with a curated set of common languages — English, Spanish, French, German, Portuguese, Italian, Hindi, Chinese (Simplified), Japanese, Arabic, and Russian. Pick the language that matches the text in your image before extracting for the best accuracy.
Why is the extracted text sometimes wrong?
OCR accuracy depends heavily on image quality. Low resolution, blurry photos, low contrast, skewed angles, and handwriting all reduce accuracy. For best results, use a well-lit, high-resolution, straight-on photo or screenshot of printed text, and check the confidence score shown after extraction.
Can I edit the extracted text?
Yes. The output appears in an editable text box, so you can correct any recognition errors before copying or downloading it as a .txt file.
Can this tool read handwritten text?
It's possible for very neat, clearly separated handwriting, but Tesseract — the OCR engine behind this tool — is trained primarily on printed and typed text, not handwriting, so accuracy on handwritten notes is noticeably lower and less predictable than on a printed page or a typed screenshot. Cursive or joined-up handwriting is especially difficult, since the engine's character segmentation step expects letters to have visible gaps between them. If you regularly need to digitize handwritten notes, expect to do more manual correction in the editable text box after extraction than you would with a printed document, receipt, or scanned form. For genuinely handwriting-focused recognition, a specialized handwriting-OCR model would perform meaningfully better than a general-purpose printed-text engine like this one.
Why does the first extraction take longer than later ones?
The first time you use a given language on this tool, your browser has to download that language's trained recognition data from a CDN — typically a few megabytes — before Tesseract can start recognizing text in it. That download only happens once; the browser caches the file afterward, so every subsequent extraction using the same language starts almost immediately, with no further network activity. Switching to a different language for the first time triggers one more one-time download for that language specifically. If your first extraction feels slow, it's this initial setup cost, not a sign that anything is wrong — and it's the only network request this tool ever makes, since the image itself is processed and never uploaded.
Does this OCR tool work on photos of receipts and signs, not just scanned documents?
Yes — it isn't limited to flatbed-style scans. Photos of receipts, street signs, restaurant menus, product labels, and whiteboards all work, provided the text is reasonably in focus, evenly lit, and not too skewed relative to the camera. Real-world photos tend to score lower on the confidence metric than a clean digital scan simply because they introduce variables a scanner doesn't have — shadows, glare, curved surfaces like a crumpled receipt, and perspective distortion from the shooting angle. Flattening a receipt before photographing it, avoiding direct glare from overhead lights, and holding the camera as parallel to the surface as possible all measurably improve results on this kind of everyday, non-document text.
What image formats and file sizes does the tool accept?
Any common image format your browser can display works, including JPG, PNG, WebP, and BMP — the tool accepts whatever you select or drag in as a standard image file. There's no server-side upload limit to worry about since nothing is uploaded, but very large, high-resolution images do take longer to process because recognition runs on your device's own processor, and extremely large files can be slower to load into the browser in the first place. For most everyday use — screenshots, phone photos, single-page scans — file size isn't a practical concern; it only becomes relevant for unusually large, high-megapixel images.
Can I extract text in more than one language from the same image?
Not in a single pass — you choose one language before extracting, and the engine uses that language's trained character and word patterns to interpret the image. If a document mixes two languages (say, English captions on a foreign-language form), select whichever language dominates the text you most need, since the engine will still often correctly recognize individual overlapping words from a similar script even when the language setting doesn't perfectly match. For a document that's genuinely and substantially bilingual with different scripts, you'd typically get better results running the extraction twice with each language selected and comparing the two outputs.
Related Tools
Free Image Resizer Online
Resize images to any dimension. Maintain aspect ratio or set custom sizes. Free, fast, and works entirely in your browser with no sign-up required.
Free Image Compressor Online
Compress PNG, JPG, and WebP images to shrink file size without losing quality. Free, fast, and runs entirely in your browser — no uploads, no sign-up.
Free Image Cropper Online
Crop images to any size or aspect ratio with visual editor. Free, fast, and works entirely in your browser with no sign-up required.
Free Favicon Generator
Generate favicons in all sizes from a single image. Free, fast, and works entirely in your browser with no sign-up required.
About the OCR — Image to Text Tool
Optical character recognition (OCR) solves a specific, common problem: you have text trapped inside an image — a screenshot, a photographed page, a scanned form — and you need it as actual, selectable, editable text instead of a picture of text. This tool extracts that text directly in your browser, with nothing ever leaving your device.
How OCR actually works
At a high level, an OCR engine looks at an image, identifies regions that look like text, segments those regions into lines and individual characters, and then classifies each character shape against patterns it learned during training. This tool runs on Tesseract, an OCR engine originally developed at Hewlett-Packard in the 1980s, released as open source in 2005, and since maintained by Google — it's one of the most widely used and thoroughly tested OCR engines available, embedded in countless scanning apps and document pipelines. The specific version used here, tesseract.js, is a WebAssembly port that runs the same recognition engine that normally runs as a native program, compiled instead to run inside a web browser at near-native speed, with no server round-trip required.
What happens when you extract text
When you upload an image, the browser reads the file locally and hands it to the OCR engine running in a background thread (a Web Worker), so the page stays responsive during recognition. The engine needs two things to do its job: the core recognition code and a trained language model for whichever language you select — English, Spanish, French, and several others are available. The very first time you use a given language, your browser downloads that language's trained data (a few megabytes) from a public CDN; after that, the browser caches it, so subsequent extractions — even in a different tab or session — don't need to re-download anything. This is the only network request the tool makes; the image you're extracting text from is never sent anywhere.
Reading the confidence score
After extraction, the tool reports a confidence percentage alongside the recognized text. This number reflects how certain the engine is about its own output, averaged across all the characters it identified — it isn't a guarantee of correctness, but it's a useful signal for how much manual review the result deserves. High confidence (80%+) generally means a clean, well-lit, well-aligned source image with printed text. Lower scores tend to show up with blurry photos, low contrast between text and background, skewed or rotated pages, unusual fonts, or handwriting, which Tesseract is not specialized for — it's built and trained primarily on printed, typed text.
Getting better results
A few habits noticeably improve accuracy: photograph or scan the source as straight-on as possible rather than at an angle, use good even lighting without harsh shadows or glare, and get as close to the text as your camera's focus allows so characters aren't a blur of a few pixels each. Cropping out large irrelevant background areas before uploading also helps, since the engine spends less effort distinguishing text regions from noise. If a photo comes out with low confidence, retaking it with better lighting or a steadier hand is usually more effective than reprocessing the same poor source image.
Why it runs entirely in your browser
Traditional OCR tools upload your image to a server for processing, which means a document with private, sensitive, or confidential text — a contract, a medical form, an ID card — passes through infrastructure you don't control. Running Tesseract compiled to WebAssembly avoids that entirely: recognition happens on your own device using your own CPU, so nothing about the image's content is ever transmitted, logged, or stored anywhere outside your browser tab.