Skip to content
blakazuluPublic

About

Findra: fast, private desktop search for Windows. Filenames from RAM in under a millisecond or two, plus words in documents, photos by what they show and speech in recordings, all on your own machine.

Topics

Resources

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Repository files navigation

Findra

Microsoft Store

Microsoft Store: https://apps.microsoft.com/detail/9p78z9kt48pr . Store packages receive updates through the Store, and the Store version may differ from the latest GitHub release.

Desktop search for Windows. A capsule sits on your desktop; click it, or press a global hotkey, and it unfolds into a results card. It finds files by name the second it starts - 2.13 to 3.77 ms median across five measured queries, on the machine named under The numbers - and it can be taught to find them by what is written inside them, by what a photo shows, and by what was said in a recording.

Everything happens on your machine. There is no account, no cloud and no telemetry.

Findra has a page of its own at https://findra.esekpo.co.il. Its screenshots are the same renders as the ones here, drawn by the same commands.

The Findra capsule, waiting on the desktop

findra --searchshot docs/shots/capsule.png capsule Mond

Free, and yours to keep

Findra is licensed under Apache-2.0. You may use it, clone it, change it and ship your changes. The one condition is attribution, and it travels with the code: keep the NOTICE file, which credits blakazulu and points at https://github.com/blakazulu/findra, and keep it in anything you build on top. That is the whole deal. Both files are installed beside Findra's own executable as well as kept here, so an installed copy carries the terms and the attribution without going back to the repository for them.

The Quicksand typeface ships inside the application under the SIL Open Font License 1.1, reproduced in assets/fonts/OFL.txt. It is not covered by Findra's own licence.

What it finds

Nine results for "sunset", with a photo previewed beside them

findra --searchshot docs/shots/results.png results Mond

What you can search for Needs a model On by default
Names of files and folders, on every drive, USB sticks and memory cards included no yes, from the moment Findra starts
Words in documents, scanned PDF pages included no no, until you turn content indexing on
Photos and video, by what is in the frame, and the words written in a picture yes no
Documents by what they mean, not only the words they use yes no
Speech in recordings, including a second pass for Hebrew yes no

Names are free because a name index costs seconds to build and about 73 MB of RAM for a million and a half files. Fixed NTFS disks are read from their file table; a USB stick, a memory card or a disk in another format is listed folder by folder when it appears, followed while it stays plugged in, and searched by name only. Reading inside files walks every fixed drive and can run for hours, so it never starts on its own. findra --content on starts it and findra --content off stops it without throwing away anything already read.

Everything Findra can install is 3.7 GB of model files, and that is the number if you take all of them. Take none and Findra still searches every name on the machine. Take one and you pay for one. findra --models prints what each capability would add given what is already there, which is the question that matters once some of them are.

A photo, video, document or recording Findra has read has a More like this button beside it, and Ctrl+L does the same: it lists the files that look or read like that one, compared by what was read inside them rather than by name. It writes like:"<the file's path>" into the search box, so the filters and sorting work on its answer too, and findra --searchindex q:like:"<path>" asks the same question from a terminal.

Typing has a grammar, and there is a form for the parts of it nobody remembers.

The advanced search form, with a query built up from its fields

findra --searchshot docs/shots/advanced.png adv Mond

Install

winget install blakazulu.Findra

is the whole install, from the Windows Package Manager catalogue. The same program is on the releases page as an installer for x64 and one for arm64, built by installer/findra.iss, and that page has each new release first - the catalogue can take a few days to pick one up. The site's install section says the same thing with a button.

Building from source works too, and needs the .NET 10 SDK and nothing else.

git clone https://github.com/blakazulu/findra
cd findra
dotnet build
dotnet test
dotnet publish src/Findra -c Release --self-contained

Run the interface with dotnet run --project src/Findra. Name search needs the helper, which needs administrator rights exactly once, to open the volume:

dotnet run --project src/Findra -- --names

Neither the installer nor the executables are signed yet, so Windows will warn about an unknown publisher until that changes; docs/code-signing-policy.md says where that stands and the site carries the same page at /code-signing/.

Findra installs an update only when you press Update now. Check for updates in the tray, or Check now in Settings, asks whether a newer version exists; Update now then downloads the installer from the release page, checks it against the checksum GitHub publishes for it, and runs it (a copy installed with winget runs the winget upgrade instead). Findra never replaces its own files: the installer or winget does, because replacing a running executable and re-registering an elevated task are the two things most likely to leave a machine broken.

What it costs, the first time you run it

The first screen asks one question and then gets out of the way. Take a preset, take one capability, or take nothing at all. Each row is priced at its own download and that number never moves, so the four of them add up to the 3.7 GB the Everything tile quotes. The line along the bottom is what your selection actually costs, and it is smaller than the rows added together whenever two capabilities share a file: Speech is searched like a document, so taking it takes the document models with it, and you are never charged twice for the same download.

Ticking Speech also puts the transcription limit on that screen, because the screen that signs you up for transcription is the screen that should ask how much of a recording is worth transcribing. It is one number for audio and video together - five minutes by default, which covers a voice memo and cuts a lecture short. A video longer than the limit is still indexed by its frames if you took Photos, and raising the limit later goes back for exactly the files it passed over.

The first-run screen, with the Recommended preset chosen

findra --searchshot docs/shots/firstrun.png firstrun Paper

Nothing on that screen is permanent. Everything on it is in Settings afterwards, and a capability taken later re-reads only the files it covers rather than starting again. Findra starts that reading within seconds of the files landing, whether you took the capability from Settings or from findra --models install, and without being restarted. Searching by it needs no restart either: the search side of a capability loads in the background once the first file it covers has been read, a few seconds in which a search still answers by names and words. Until then it stays unloaded, so a model that has nothing to search costs no memory.

The Content section of Settings

findra --searchshot docs/shots/settings.png settingscontent Paper

Settings is on the card itself, under Advanced, as well as on the tray icon and a right-click on the capsule. "Start now" begins reading inside files in that session - the card has the same button under Settings, which says "Stop" while reading runs - and the line under it says in plain words what reading is doing - including when it is waiting, and for what; "Indexing power" is how much of the machine that reading may take. Each model (photos and video, meaning, speech, Hebrew) has its own row on the Models toggle page, where it can be added, turned off or removed; removing asks first, and keeps what was already found unless you say otherwise.

A global hotkey opens the card from anywhere, over whatever you were doing. If the combination you asked for is already taken, Findra walks a fallback chain, takes the first that registers, and tells you which one it landed on rather than failing quietly. The card stays up while you work in another window; the button on its corner, Esc, the hotkey or the capsule puts it away. Its field edits like any text box: select with the mouse or Shift, Ctrl+A, cut, copy and paste.

Six palettes ship, three dark and three light. Pick one of each and Findra follows the Windows setting, or pin it to either. %APPDATA%\Findra\palettes.json takes your own.

The same results card in the Blueprint palette

findra --searchshot docs/shots/light.png results Blueprint

Check it yourself

Findra is built to be verified without a screen. Every number on this page came out of one of these, and every image above was drawn by the same painter the window uses.

findra --version                  which build this is, and where its logs are
findra --searchtest               engine self-check
findra --searchprobe sunset       the whole query path, end to end: which process
                                  answered, the generation counter, the round trip
findra --searchindex q:invoice    what is indexed and what is queued; given paths
                                  instead, it queues them and drains the queue
findra --searchindex why:C:��.png   why one file did or did not match, and what the
                                  index holds about it. Reads and changes nothing
findra --searchmodels             which models are on disk, whether they load, whether
                                  they agree, and which execution provider answered
findra --searchshot out.png results Mond   render any surface to a PNG
findra --searchbench out.md 10000 measured numbers, as Markdown fit to paste
findra --models install recommended        take a capability from the command line
findra --models remove speech --dry-run    what removing one would delete and free
findra --content on               start reading inside files
findra --uninstall --dry-run      what removing Findra would do, without doing it

findra --searchshot draws forty-six surfaces in any of the six palettes, which is how the images on this page are made and how they are regenerated. The command under each image is the whole recipe.

Findra has no console window of its own, so nothing black appears when you double-click it or sign in with it starting automatically. The commands above still print into the terminal you type them at, and still write to a file when you redirect them there. The one visible consequence is that your shell does not wait for them: the prompt comes back before the text does. dotnet run --project src/Findra -- --searchtest waits, if you would rather it did.

The numbers

How fast is a filename search? Under 4 ms. Type part of a filename and the matches are back in 2.13 to 3.77 ms median, for every query measured, across 1,339,635 names - from the moment the query leaves the window to the moment the results arrive, the hop to the name helper included. That is the first table below.

What follows was produced by findra --searchbench readme-bench.md 10000 and pasted without editing. Ten thousand rather than the default 2,500, because a run of a second or two disagrees with itself by more than a published rate deserves. The run was taken on the build that became 0.5.1, before its version number was raised, which is why its machine table says 0.5.0. No model was installed for it, so the machine table names no accelerator; nothing the run measures needs one.

One machine, and it has an NVIDIA card. These numbers come from a single desktop with a discrete NVIDIA GPU, so they say what Findra does there and nothing about anywhere else. Findra is built to run on AMD and Intel processors, on AMD, Intel and NVIDIA graphics, on integrated graphics, and on machines with no usable accelerator at all - but of those, only this configuration and the processor-only path have actually been measured. AMD and Intel graphics have not been tested on real hardware. On arm64, only the test suite and the headless diagnostics have run, on every push, on a GitHub runner with no graphics card; nothing on this page was measured there. The vendor-neutral paths are chosen precisely so that they should work there; that is a design decision, not a measurement, and it is written here as one. If you run Findra on one of those machines, Settings > About > Details for a bug report copies the processor, the graphics and which one Findra uses; pasted into an issue with the output of findra --searchmodels, it is exactly the evidence this page is missing. Nothing is sent unless you paste it.

Two things to read honestly. The full-text table was measured against this machine's own content index - 5,284 files and 74,333 text segments, read from a real disk - so its slowest query is in there beside its fastest. And the extraction row is measured over files the benchmark generates and then deletes, which is what makes it reproducible on your machine rather than a fact about this one.

Findra benchmark

Produced by findra --searchbench. Every number below was measured on the machine named here, by this build, and re-running that command reproduces the whole page.

Name query latency

Query Round trip p50 Round trip p95 Index scan p50 Pipe share p50 Worst Hits Samples
report 3.36 ms 3.74 ms 2.98 ms 0.38 ms 4.18 ms 50 n=50
invoice 2.13 ms 2.45 ms 1.77 ms 0.35 ms 2.77 ms 50 n=50
sunset 2.77 ms 3.00 ms 2.41 ms 0.37 ms 3.99 ms 23 n=50
readme 3.77 ms 4.20 ms 3.26 ms 0.51 ms 4.75 ms 50 n=50
config 3.73 ms 4.61 ms 3.26 ms 0.47 ms 4.76 ms 50 n=50

Machine

Part Value
CPU AMD Ryzen 9 9900X3D 12-Core Processor
Architecture X64
RAM 47.1 GB
Disk NVMe SSD
Windows Windows 11 Pro 10.0.26200.9445
Accelerator ONNX: not loaded · Whisper: not loaded
Findra 0.5.0

Volumes

Volume Names Name index resident Cold-start enumeration Journal position
C: 1,339,635 172.0 MB 2,423 ms 35,745,734,752
D: 485,227 46.5 MB 739 ms 1,252,641,944
E: 69,078 14.1 MB 110 ms 72,232,360

Name helper working set: 109.3 MB - the whole process, every index included.

Full-text query latency

Query p50 p95 Worst Hits Samples
lease 1.12 ms 1.31 ms 2.67 ms 50 n=50
agreement 4.18 ms 4.66 ms 5.23 ms 50 n=50
invoice 0.82 ms 0.91 ms 1.77 ms 50 n=50
total 8.89 ms 11.80 ms 12.75 ms 50 n=50
report 14.95 ms 15.94 ms 16.98 ms 50 n=50

Document extraction

Kind Files Seconds files/min MB/s
Doc 11,000 9.91 66,590 7.99

Stores

Store Path Size
search.db %LOCALAPPDATA%\Findra\index\search.db 157.8 MB
search.db-wal %LOCALAPPDATA%\Findra\index\search.db-wal 13.4 MB
search.db-shm %LOCALAPPDATA%\Findra\index\search.db-shm 32.0 KB

Indexed items: 5,284. Text segments: 74,333.

Corpus for the extraction row: 10,000 generated .txt of 8 KB and 1,000 generated .docx of 1 KB, indexed into a throwaway database with no model loaded, and deleted.

What leaves your machine

Your files, their names, their contents and your searches never leave your machine. There is no account, no cloud service, no analytics, no crash reporting and no telemetry. The marketing website has optional GA4 and Clarity analytics after explicit opt-in only; this does not change the desktop app. See the privacy policy.

Findra makes exactly one request on its own, and it is written down here rather than buried (the other time it uses the network is a model download you asked for): an anonymous HTTPS GET to the GitHub releases API (for a winget install, to the winget catalogue's listing on GitHub, since that is what winget upgrade can install), at most once every 24 hours, on startup, in the background, to learn whether a newer version exists. It carries no query parameters, no machine identifier, no install identifier, and nothing about your files or your searches. It never blocks anything, and a failure is a line in the log rather than a dialog. It is disclosed on the first-run screen and can be switched off. Off stops the daily check; pressing Check now still asks, once, because you asked.

Downloading a capability's model files is a separate thing, and it happens only when you choose a capability and ask for it.

Full detail, including what the index contains and what the logs record, is in PRIVACY.md. If you have found a security problem rather than a bug, SECURITY.md says where to send it, which is not the issue tracker.

Removing it

findra --uninstall              stop everything, remove the elevated logon task, the
                                autostart entry and the program files
findra --uninstall --purge      also delete the models, the index and the settings

Uninstalling always removes the HighestAvailable scheduled task, because an elevated logon task pointing at a binary that is no longer there is a defect and not an inconvenience. It keeps your models, your index and your settings by default; deleting them is a checkbox in the installer's uninstaller and --purge on the command line, and either way you are told the measured size it would free before it happens.

findra --uninstall --dry-run prints the whole plan and changes nothing.

Licence

Apache-2.0. Free to use, clone and modify, with attribution to blakazulu and https://github.com/blakazulu/findra that travels with the code. See LICENSE for the terms and NOTICE for the attribution you must keep.

Website rule: native, site-matched cross-browser scrollbars are required on every new site. Floating privacy preferences hide five seconds after opt-in; the privacy policy keeps a permanent reopen control (2026-10-01).

About

Findra: fast, private desktop search for Windows. Filenames from RAM in under a millisecond or two, plus words in documents, photos by what they show and speech in recordings, all on your own machine.

Topics

Resources

Security policy

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages