Search Text in PDF Files
Find a word, a phrase or a pattern across one PDF or a whole stack of them. Every hit shows its page and surrounding text, opens that page in a preview, and the full list exports as a spreadsheet or grep-style text. The files never leave your browser.
Drag PDFs here, or click to browse
Processed locally — never uploaded
Page preview
Click a hit to see the page it's on.
A grep for PDFs, in the browser
Every PDF viewer can search one open file. Almost none can search twenty at once, show every hit from every file on one screen, or hand you the list as a spreadsheet. The command-line answer is pdfgrep; this is that, with a page preview and no install.
It reads each file's text layer once with pdf.js, then every search is plain string matching over text already in memory — instant, and never leaving your machine. Pair it with the outline extractor when what you want is the structure rather than the words.
Questions
- Can I search several PDFs at once?
- Yes — drop in as many as you like and one query runs across all of them. Results are grouped by file with the page number on every hit, and the export is a single table with a file column, so it works as a grep over a folder of PDFs without leaving the browser.
- Does it support regular expressions?
- Switch the mode to Regex and the query is a JavaScript regular expression: dates (\d{4}-\d{2}-\d{2}), invoice numbers, anything with a pattern. Plain mode treats every character literally, so searching for "$1,000." finds exactly that. Errors in a regex show next to the field as you type.
- Why does my scanned PDF return no results?
- A scan is a picture of text, not text — there is no text layer to search. This tool reads the text layer only; it does not do OCR. If a file has no text at all the file list says so, so a blank result isn't mistaken for a genuine zero.
- Are my documents uploaded?
- No. Text extraction, matching and page rendering all happen in your browser with pdf.js. Nothing leaves your machine, and searches after the first are instant because the text is already in memory.
- Can I get the results out?
- Export every hit — not just the ones shown — as CSV for a spreadsheet, Markdown for a document, or grep-style text (file:page: snippet) for a terminal or a script.