Make a scanned PDF searchable

A scan is a photograph of a page, so there is nothing to search. This reads the page with OCR and lays invisible text on top of the exact words, which is what makes a scan behave like a document.

How Searchable PDF works

The file is read with a FileReader, rewritten in memory and offered as a download. This is why large PDFs are limited by your device's RAM rather than by an upload size limit. A 200 MB scan never crosses the network, so the slowest part is your own disk.

That is the whole architecture: static files, one script, no upload endpoint to leak or log. Close the tab and the work is gone.

Why a scan is not a document

A scanned PDF contains one image per page and no characters at all. Selecting text does nothing because there is no text; Ctrl+F finds nothing because there is nothing to match. The page looks like writing and behaves like a photograph, which is exactly what it is.

OCR turns pixels back into characters. A modern engine segments the page into lines and words, classifies each glyph, and returns not just the string but a bounding box for every word in image coordinates — that box is what makes a text layer possible.

How the invisible layer is placed

Each page is rendered at 200 dpi, recognised, and the result is mapped back into PDF points: multiply the pixel box by the ratio of page width in points to rendered width in pixels. Each word is then drawn at zero opacity at its own position and at approximately its own height, so the glyphs sit exactly over the pixels they describe.

Because the text is invisible rather than absent, the page renders identically while becoming selectable, searchable and copyable. Selecting a paragraph drags a highlight across the scan and the clipboard receives real characters — the same mechanism commercial OCR uses, without the per-page credit.

The font problem, stated plainly

An invisible word still needs a font that can draw it. The PDF standard's fourteen built-in fonts cover Latin characters only. Urdu, Arabic and Hindi need thousands of glyphs, and embedding a font that covers them adds megabytes to every output file.

So the tool embeds a layer for Latin-script words and puts the rest of the recognised text in a box you can copy. That is a real limitation rather than a hidden one: a document in Urdu is still fully readable and its text is still extracted, it just is not searchable inside the PDF. If you only need the words, copy them out and you are done.

Speed, size and where the engine comes from

The OCR engine is about 4 MB of WebAssembly plus language data, downloaded once from a CDN and then cached by the browser. Recognition runs at roughly a second or two per page on a laptop. Your PDF never leaves the tab — only the engine travels.

Good to know

  • Works offline once loaded, including on flights and in locked-down networks.
  • No file size limit beyond your device's own memory.
  • Free to use, with no account and no usage counter.
  • Results are produced locally, so they are not logged or shared with anyone.

Questions

Which languages can it read?

English, Urdu, Arabic and Hindi, or English plus Urdu together for mixed forms. The language data is downloaded once by the OCR engine and then cached by the browser.

Why are Urdu and Arabic words not in the search layer?

An invisible layer needs an embedded font that can draw those glyphs. The browser cannot embed a Unicode font without shipping megabytes of it, so non-Latin words go into a text box you can copy instead. The PDF stays exactly as it was.

Does the page look any different?

No. The text is drawn at zero opacity over the original image, so the page renders identically while the words become selectable and searchable.

How big is the download?

The OCR engine is about 4 MB plus roughly 2–10 MB per language, fetched once from a CDN and cached. Your PDF is never uploaded — only the engine comes down.

Keep going

More files tools