Bulk OCR — OCR All Files in a Folder at Once
Input
Drop an entire folder here
JPG, PNG, WEBP, BMP, PDF · subfolders included · up to 300 files, 500 MB — nothing is uploaded
OCR Settings
More workers OCR more files at once — and use more memory. 2 is a safe default.
Limits
Up to 300 files, 500.0 MB total per run. JPG, PNG, WEBP, BMP, and PDF only — TIFF has no in-browser decoder, so it's skipped with a reason shown per file.
Supported
JPG · PNG · WEBP · BMP · PDF (scanned or text) · subfolders included
Combined Output
OCR results appear here as each file finishes — combined text, Markdown, JSONL, CSV, a merged searchable PDF, and a token summary.
What is bulk OCR?
Bulk OCR means running OCR (optical character recognition) on every image and PDF in a folder in one pass, instead of opening each file one at a time. Point it at a folder of 50 scanned receipts, 100 photographed invoices, or a stack of scanned contracts, and it comes back with one combined, searchable body of text — a job that takes hours by hand and a couple of minutes here.
How to OCR all images in a folder at once
- Click Select Folder and choose the folder — JPG, PNG, WEBP, BMP, and PDF are all read; subfolders come along automatically.
- Pick a language: English, Hindi, or English + Hindi.
- Click Start OCR All. The file table updates live — status, per-file progress, and a confidence score as each one finishes.
- Watch the overall progress bar (files done, elapsed time, ETA) or keep working — the combined output tabs fill in as each file finishes, not just at the end.
- Download a ZIP of individual .txt files, one combined Markdown/JSONL/CSV file, or the merged searchable PDF.
No Python, no install, nothing uploaded.
Bulk OCR vs single-file OCR vs desktop tools
| Method | Install? | Privacy | Searchable PDF? | Cost |
|---|---|---|---|---|
| Toolsda Bulk OCR | None — folder picker in browser | 100% private, nothing uploaded | Yes, merged | Free |
| Python + pytesseract script | Python + Tesseract + pip install | Local, no UI | No — code only | Free |
| Desktop bulk-OCR apps | .exe/.dmg install | Local | Usually yes | Free–paid |
| Cloud OCR APIs (per-image billed) | Script/SDK setup | Images leave the device | Depends on service | Per image |
File types and limits
JPG, JPEG, PNG, WEBP, BMP, and PDF (scanned or text) are supported — up to 300 files and 500.0 MB total in one run, which is a browser-memory ceiling rather than a server quota, since nothing is uploaded. A multi-page PDF is OCR'd page by page and combined with --- Page X/Y --- markers. TIFF is deliberately not supported: no browser can decode it through canvas without an extra library, so it's skipped with that reason shown per file rather than silently failing.
Getting the best accuracy out of a bulk run
- Pick the right language — English, Hindi, or English + Hindi for mixed documents.
- Higher-resolution scans OCR more accurately than a small or blurry phone photo.
- Check the per-file confidence column — anything under ~80% is worth a manual look before you trust it.
- 2 parallel workers is the safe default; 4 finishes faster on a fast machine at the cost of more memory.
- Use Retry failed rather than starting over — only the failed files re-run.
Real use cases
- Receipts → expense report. OCR a folder of 100 receipt photos, download the combined text, and paste it into an LLM to categorize spend.
- Scanned books → a searchable library. OCR a folder of scanned chapters into one merged searchable PDF you can Ctrl+F across.
- Invoices → structured data. Export JSONL and feed it to an LLM or a script to pull out invoice numbers and totals.
- Legal documents → keyword search. OCR a folder of scanned contracts into one searchable PDF and find every mention of a clause instantly.
How it works, technically
The folder picker uses the browser's webkitdirectory API (a dropped folder is read via DataTransferItem.webkitGetAsEntry(), walked recursively) — nothing is uploaded at any point. Each image is handed straight to a Tesseract.js worker; each PDF page is rendered to a canvas via pdf.js first, then OCR'd the same way. Several files run at once across a small pool of Tesseract workers rather than one at a time. The merged searchable PDF is built with pdf-lib: the original page image plus an invisible text layer positioned at each recognized word's bounding box — the same technique commercial OCR software uses, running entirely client-side.
Why a browser tool instead of a Python script?
A pytesseract loop needs Python and Tesseract installed, a script written, and produces no searchable PDF, no token count, and no UI — it's the right tool if you're already comfortable in a terminal. This tool trades that flexibility for zero setup: drop a folder, watch a progress bar, get a searchable PDF and a combined export in the format an LLM or a spreadsheet actually wants.
Related tools
- Receipt OCR Parser — a folder full of receipts? Parse merchant, total, tax, and an items table into Excel per receipt instead of just raw text.
- PDF to LLM Optimizer — OCR one scanned PDF and see its vision-token cost vs. its OCR'd text cost.
- Image to LLM Optimizer — OCR one image and compare it against sending it as a vision tile.
- File to Tokens — count tokens for any file and check whether it fits GPT-4o, Claude, or Gemini's context window.
- RAG Chunker — split a large combined OCR export into overlapping chunks for retrieval.
- Merge PDF and PDF to JPG — reshape files before or after a bulk run.