lsearch

Search your own files
the way you search the web

lsearch builds a full-text index of the documents, source code, PDFs and e-books on your machine. Type a few words and land on the exact file, the exact line. Everything stays offline — the index and the extracted text live on your own disk.

Windows · macOS · Linux (including Kylin, openEuler and Fedora)

Your hard drive has become a black hole

Which .docx held that proposal you wrote three years ago? What was the exact wording of the termination clause in that PDF contract? Which chapter of that e-book covered distributed locks?

Your operating system's search only knows filenames. The "enterprise-grade" alternatives want you to run a service, open a port and configure a database.
lsearch is just a desktop app. Point it at a few folders and let it work.

What it does

It doesn't search filenames. It searches what's inside them.

🔍

Searches the actual text

Office documents, PDFs, e-books, source code, plain text — the content goes into the index. You get a sentence back, not a file path.

📚

27 formats, no gaps

Word / Excel / PowerPoint (including legacy doc, xls, ppt), WPS Office wps/et/dps, LibreOffice ODF, RTF, PDF, HTML, plain text and source files, plus EPUB, MOBI, AZW, AZW3 and FB2 e-books.

🈶

Chinese search that works

A purpose-built CJK analyzer (bigram segmentation with width and case normalization) means two-character Chinese words match precisely — exactly where most tools that claim "Chinese support" fall apart.

🎯

Google-style query syntax

Implicit AND, OR groups, - exclusions, "exact phrases", plus path: and name: wildcard filters. If you can use Google, you can use this.

⚡

Regex search, written for you

Built-in RE2 regex scanning across your corpus. Can't write the pattern? Describe what you're looking for in plain language — the model drafts it, lsearch compiles and test-matches it locally before offering it. Works with DeepSeek, Qwen, local Ollama models, any OpenAI-compatible endpoint, and Anthropic.

📝

Open it, read it, edit it

Results aren't a dead end. The built-in editor opens the file in a side panel, jumps straight to the match, applies syntax highlighting for the file type, and saves in place.

Incremental indexing

Subsequent scans only touch files that changed, compared by size and modification time. Turn on live watching and the index follows your edits.

Move the index anywhere

Relocate the data directory to an external drive or a larger partition at any time. lsearch migrates it for you — no reindexing.

Four interface languages

English, 简体中文, 繁體中文 and 日本語, following your system by default. Dark mode included.

Genuinely cross-platform

Windows (x64 / ARM64), macOS (universal, Intel and Apple Silicon), Linux (deb / rpm, x64 / ARM64) covering Kylin V10, openEuler, RHEL 8+, Fedora 40+, and Ubuntu 20.04 through current.

Your files never leave this machine

lsearch has no cloud, no account and no telemetry. The index and the extracted text live in a data directory on your own disk. It runs no background service and opens no listening port.

The one optional network feature is AI regex generation. It sends only the description you typed and any sample text you chose to paste to the model endpoint you configured yourself. Your files, your index and your search history are never part of it. Without an API key, the feature simply doesn't exist.

Download

Free to use. Every build ships with SHA256 checksums.

PlatformArchitectureFormat
Windows 10 / 11x64 · ARM64.exe installerDownload
macOS 11+Intel · Apple Silicon.dmg universalDownload
Ubuntu / Debian / Kylinx64 · ARM64.debDownload
Fedora / RHEL / openEulerx64 · ARM64.rpmDownload

Linux users: pick the build that matches your distribution.
webkit40 → Kylin V10, Ubuntu 20.04–22.04, Debian 11–12, RHEL 8+, openEuler
webkit41 → Fedora 40+, Ubuntu 24.04+, Debian 13+
If you're unsure, try webkit41 first and fall back to webkit40.

Questions

How much disk does the index use?

Extracted text is stored zstd-compressed, typically a fraction of the source volume. The ratio depends on format — plain text and source code take proportionally more, PDFs and Office documents much less.

Will indexing slow my machine down?

Extraction runs concurrently with a single writer, so you can keep working. Only legacy Office and WPS formats need a LibreOffice conversion, at roughly 5–15 seconds per file — if you have many of those, run the first index overnight.

Can it find text in scanned PDFs?

No. lsearch extracts the text layer and does not perform OCR. PDFs that are only images won't be searchable.

Does it handle DRM-protected e-books?

No. DRM-protected files are skipped and recorded with a status so they aren't retried every run.

Do I need to open a port or install a service?

Neither. It's a desktop application. Close it and nothing is left running.

What's it built with?

Go with Wails v2 and React 19 / TypeScript. Bleve for the inverted index, SQLite for content storage with zstd compression. A single executable with no runtime dependencies.