Universal Search on Windows: Index PDFs, Emails, and Archives Locally
Build a local full-text index for PDFs, Outlook messages, archives, and OCR text: boolean queries and privacy without cloud upload.
Everything by Voidtools finds filenames instantly. It does not read inside PDFs, .msg files, or zip archives. Recoll and DocFetcher index content but bring their own setup curves and older UIs.
DupeZappa Universal Search keeps a local SQLite index on your machine: filenames, extracted document text, email bodies, optional archive contents, OCR from images, and metadata from smart tags and face recognition. All searchable without sending files to the cloud.
What gets indexed by default
| Category | Formats (examples) |
|---|---|
| Documents | .pdf, .docx, .xlsx, .pptx, .odt, .epub |
.eml, .msg, .mbox, .mht |
|
| Structured | JSON, CSV, XML, HTML-style tokens |
| Video | Sidecar subtitles (.srt, .vtt) + metadata |
Optional paths (when local tools are installed):
- Archives:
.zip,.7z,.rar,.isovia 7-Zip (one level deep). - CHM help files: deep text extraction via 7-Zip.
- Legacy Office:
.doc,.xls,.pptvia LibreOfficesoffice. - OCR: image text and scanned PDF fallback on Windows.
Scan exclusions from Settings apply to indexing jobs the same way they apply to duplicate scans.
Add roots and refresh
- Open Universal Search in DupeZappa.
- Add one or more folder roots, recursive or flat per root.
- Run index. Large libraries are background jobs; you can filter and remove roots later.
- Re-index after big imports (new email archive, document dump).
The index lives in your app config folder as search_index.db. It is yours, not a vendor cloud index.
Query power beyond plain text
Boolean operators work in search:
invoice AND pdf: both terms required.budget OR forecast: either term.draft NOT template: exclude noise.
Field and source filters narrow scope:
| Filter | Example |
|---|---|
source:email |
Messages only |
source:pdf |
PDF text layer |
name:invoice |
Filename token |
ext:docx |
Extension |
size:>=1mb |
Large files |
date:2025-01-01..2025-06-30 |
Date range |
tag:"Project Alpha" |
Smart Tag membership |
source:tag |
All tagged files |
Preset query suggestions appear based on what is actually in your index; email presets only show when email sources exist.
How this differs from other tools
Full comparison: DupeZappa vs Everything (Voidtools) →
| Tool | Strength | Gap |
|---|---|---|
| Everything | Fastest filename search | No content index |
| Recoll / DocFetcher | Deep document search | Separate app; setup overhead |
| Agent Ransack | Content search without index | Slower on huge trees |
| DupeZappa | Content, tags, faces, and duplicates together | Windows only; index build takes time |
If you already use Everything for launchers, keep it. Universal Search complements it when you need to find the PDF that mentions the clause on page 12.
Tie search to cleanup
Search finds candidates; other modules act on them:
- Duplicate Scanner on a dense folder from
size:>=10mbresults. - Smart Tags to build virtual collections from search result sets.
- Face Recognition people synced to tags; search
tag:"Sarah"after naming a person.
See Smart Tags Without Moving Files for the tagging bridge.
Privacy default
Indexing and search run locally. Optional AI features (AI Tidy, semantic search) use Ollama or your own endpoint, but are not required for Universal Search v1 text indexing.
Start with one document root and one email archive. Expand when query latency and index size feel predictable.
Related reading
- Organize Family Photos by Face
- Privacy Mode and Offline-First File Management