Free local OCR tool · 21 languages · mixed pages · no upload

Image to Markdown Converter (OCR)

This image to Markdown converter turns a photo or screenshot of printed text into Markdown without uploading it. The OCR engine runs inside your browser in 21 languages and reads mixed pages: you pick the main language of the printed text, optionally a second one, and English is loaded alongside the scripts that cannot read it themselves. The picture stays on your device, and the converter keeps working offline once the OCR engine and the packs you use have loaded.

Image → Markdown

Choose one photo of printed text

Browser-local
Photo

Choose a browser-readable photo or screenshot, drop it here, or paste it with Ctrl+V / ⌘V. LensUp does not upload it.

Text language
Preselected from your browser language. Pick the language printed on the page.

Printed text only. A page can hold two languages: pick the main one, add a second, and English is added for scripts that need it. Ruled tables become Markdown tables; handwriting, tables without lines, formulas and columns are best-effort — review before you rely on it.

How do I convert an image to Markdown?

Open the image to Markdown converter, choose a photo or screenshot of printed text, pick the language printed on the page and press Recognize. LensUp runs OCR on your device — with a second language too if the page mixes two, and with English alongside scripts that need it — turns paragraphs, bullet points and numbered lists into Markdown blocks, and lets you edit the result, copy it or download a .md file. The image is never uploaded.

Image to Markdown is built for text you want to keep as notes rather than as an image: a page from a book or handout, a slide on a projector, a whiteboard summary written in clean capitals, a printed recipe, a product label, a form or a paragraph on a poster. The recognized text arrives as editable Markdown, ready for Obsidian, Notion, GitHub issues or any plain-text notebook.

It is deliberately narrow. The converter reads printed text only, in the language you pick plus an optional second one, keeps the structure it can see — paragraphs, bullet lists, numbered lists, larger headings and ruled tables — and leaves columns, handwriting and mathematical notation as best-effort text that you should check line by line. Image to Markdown, image to MD, photo to Markdown, picture to Markdown, screenshot to Markdown, JPG to Markdown, photo OCR to text, image to text: the job is the same, and the result is always Markdown you review before you rely on it.

How to turn a photo into Markdown

  1. Choose one photoPick a photo or screenshot of printed text, drop it on the tool, or paste it from the clipboard with Ctrl+V / ⌘V. JPG, PNG, WebP, iPhone HEIC and TIFF are read locally; the page shows the picture and its size without uploading anything.
  2. Pick the language and recognizeChoose the language of the printed text (the menu preselects your browser language), add a second language if the page mixes two, and press Recognize text. The first run downloads the OCR engine (about 1.5 MB) and each language pack it needs (0.4–3 MB each), all cached afterwards, then reads the picture on your device with a progress bar.
  3. Review, copy or downloadThe Markdown appears in an editable box next to the photo with a word or character count and an average confidence. Fix anything the engine misread, then copy it to the clipboard or download a .md file.

What becomes Markdown, and what does not

Each printed paragraph becomes one Markdown paragraph with its line breaks joined and end-of-line hyphenation repaired; Chinese, Japanese and Thai lines are joined without inserted spaces and counted in characters rather than words. Lines that start with a bullet character become a Markdown list, lines that start with 1., 2., 3. — or 一、二、三 and 1、2、3 in East Asian text — become a numbered list, and a short single line printed noticeably larger than the body text, or fully in capitals, becomes a second-level heading. Everything else stays plain text in reading order.

A table drawn with ruled lines becomes a Markdown table: the grid is erased before recognition, each printed row becomes a table row and the gaps shared by the rows become its columns, so merged cells and tables without any lines come out as lines of text instead. Mathematical formulas are not recognized — fractions, exponents and symbols come out garbled; two-column layouts may interleave; handwriting, decorative fonts, very small print and text on strong patterns are read poorly or skipped. Numbers, names and codes deserve a careful second look because a single wrong character there matters more than in prose. The average confidence shown under the result is the engine’s own estimate, not a promise.

Getting a clean read from a phone photo

Optical character recognition works best on flat, sharp, evenly lit text photographed straight on, at roughly the sharpness of a 300 dpi scan. Fill the frame with the text, avoid shadows and glare, and hold still until focus locks. Very large photos are downscaled to a 2600 px long edge before recognition, which keeps normal book and document text fully readable while saving memory and time.

If the page is skewed or shadowed, run it through the LensUp scanner first: perspective correction and shadow removal produce a flat, high-contrast page image, and a downloaded JPG or PNG from the scanner is a good input here. The recognizer also accepts screenshots, which are usually the easiest case of all.

When the local engine is not enough: Fix with Pro

Tesseract, the open-source engine behind the free path, does not read mathematical notation and struggles with tables that have no ruled lines or with merged cells. For those pages the result box can offer Fix with Pro — a paid option that appears once payments are open on the site: the whole photo is sent once, through LensUp's server, to Mathpix — a commercial recognizer built for math and tables — and its Markdown replaces the local result, with formulas as LaTeX between dollar signs and tables as Markdown tables. LensUp stores nothing on the way (Mathpix processes the photo under its own terms); the local result stays one click away.

Pro is paid per run so that the free path can stay free and local: while it is offered, sign in with an e-mail link (no password), buy 50 runs for $4.99 once, and each Pro run uses one. A run that fails on the vendor side does not use a credit.

Mixed languages, on the device, on purpose

The page offers 21 languages: English, French, German, Spanish, Portuguese, Italian, Polish, Turkish, Indonesian, Vietnamese, Chinese (Simplified and Traditional), Japanese, Korean, Russian, Arabic, Persian, Urdu, Hindi, Bengali and Thai — the languages LensUp itself speaks. Each language is a separate pack that downloads only when you choose it, so a French page costs a 0.7 MB pack and a Chinese page about 1.7 MB, never the whole set. Pick the language actually printed on the page and add a second one when the page mixes two; English is loaded automatically alongside Korean, Russian, Arabic, Persian, Urdu, Hindi, Bengali and Thai, whose packs otherwise turn English words into look-alike letters. A page read with the wrong pack produces fragments instead of Markdown, the status line says so, and Detect the language finds the right pack by trying one per writing system — so a mixed page still becomes clean Markdown.

Everything runs locally with an open-source engine, the same way the rest of LensUp processes images: no upload, no account, no server-side copy of your photo or its text. The engine files and packs are served from lensup.ai and cached by your browser, so the second recognition in a language starts immediately. The scanner tools themselves still contain no OCR and do not produce searchable PDFs.

Frequently asked questions

Does the image leave my device when I convert an image to Markdown?

Not on the free path: the OCR engine and the language pack you pick are downloaded to your browser and the recognition runs there, so the photo, the recognized text and the .md file never reach a LensUp server. The one exception is opt-in and explicit — where the result box offers Fix with Pro (a paid option that appears once payments are open on the site), that click sends the whole photo through LensUp to Mathpix (a commercial recognizer for math and tables) and returns its Markdown; LensUp stores nothing on the way (Mathpix processes the photo under its own terms), it needs an e-mail sign-in and paid credits (50 runs for $4.99, one-time), and the local result can be restored.

Which languages does photo to Markdown support?

Twenty-one printed languages: English, French, German, Spanish, Portuguese, Italian, Polish, Turkish, Indonesian, Vietnamese, Chinese (Simplified and Traditional), Japanese, Korean, Russian, Arabic, Persian, Urdu, Hindi, Bengali and Thai. A page may hold two of them: choose the main language, add a second one for a mixed page, and English is read alongside Korean, Russian, Arabic, Persian, Urdu, Hindi, Bengali and Thai automatically, because those packs alone turn English words into look-alike letters. Handwriting is not supported in any language.

Why is some text wrong or missing?

The wrong language pack is the first thing to check: the warning below the Markdown offers Detect the language, which tries one OCR pack per writing system and keeps the best. After that: blur, glare, shadows, skew, small print, decorative fonts and busy backgrounds all lower recognition quality, and tables or multi-column pages can come out in the wrong order. Retake the photo flat and sharp, or clean it in the scanner first, then check the Markdown before you use it.