FSearch — whole-disk file search for macOS

Find any file on your Mac in about a millisecond, typos included, and search inside text files. Whole-disk index in Rust, MIT licensed, one small daemon.

FSearch — whole-disk file search for macOS — code freebie
Home
Freebies

FSearch — whole-disk file search for macOS

Spotlight finds the app. It rarely finds the file you half remember from six months ago, and it does not search inside anything unless the indexer already decided you cared. fsearch is a small Rust tool that indexes the whole disk once and then answers name and content queries in about a millisecond.

What fsearch actually does

fsearch indexes every file and folder on your Mac, then answers queries against that index. It matches names with fuzziness, so a typo does not kill the search, and it searches inside text files through a trigram index. You drive it from the terminal as a CLI, and the same engine ships as a Rust crate you can link into your own project.

The author built it for one machine and reported the numbers honestly. On an M4 Max with 7.7 million files on disk, a whole-disk name search lands at p50 1.3 ms, content search at p50 9 ms, and a new or renamed file shows up in about 0.1 s. The first crawl takes around 20 s, once. The daemon holds between 30 and 135 MB of memory. Those are the author’s figures from the README, measured on one disk, so treat them as a strong signal and not a promise for every Mac.

Why Spotlight leaves gaps on a full disk

Spotlight is built for launching apps and surfacing a few document types. It respects the folders Apple marks private, and it leaves plenty of developer directories out of reach. The result is a search that works until you need it most, when the file is inside a node_modules tree or a build folder you named badly last spring.

fsearch takes the opposite stance. With Full Disk Access it indexes everything it can reach. The README is upfront about the trade: it skips some file types and the build and vendor folders, which is why its competitor scans roughly 9% more file contents. You trade a little coverage for speed and a small memory footprint.

  • ❶ Name search across the whole disk, past the apps and documents other indexers watch
  • ❷ Fuzzy matching that still finds the file when you misspell it
  • ❸ Content search inside text files, kept fresh from disk

How the index stays fast

The first pass crawls the disk with a bulk directory read, then fsearch keeps up with changes through the filesystem event stream. A restart replays only what changed instead of crawling again, so the 20 s cost is paid once and not on every boot.

Names live in a single memory-mapped file laid out folder by folder, so a folder filter is a range read, and each distinct name is scored once. Content search runs on a trigram index of your text files, and the matches themselves are read fresh from disk. That last detail matters: an index that caches file bodies goes stale the moment you save, and fsearch sidesteps it by storing positions and reading the bytes live.

What is measuredResult (author’s M4 Max, 7.7M files)
Find a file by name, whole diskp50 1.3 ms
Search inside filesp50 9 ms
A new or deleted file appearsabout 0.1 s
First crawl of the diskabout 20 s, once
Daemon memory30 to 135 MB

The query language worth learning

You type a few words and add filters when you need them. The syntax is small enough to hold in your head:

  • fsearch "readme in:~/Developer" searches inside one folder
  • fsearch "type:image size:>5mb mtime:<7d" narrows by kind, size, and age
  • fsearch "ext:rs regex:fn\s+\w+_dir" runs a regular expression inside file contents
  • fsearch "sym:apply_dir" jumps to where a symbol is defined

Words are fuzzy by default, and a word of five letters or more forgives a single typo, so mian.rs still finds main.rs. You can force exact matching or pin the start and end of a name with ', ^, and $, and exclude with !. The filter set covers extension, type, kind, folder, size, modification time, path, and the content search modes. Content search is smart-case, which is the behavior you want and rarely have to think about.

The one permission it needs

fsearch can only be as good as the access you grant it. Started from a terminal that already has Full Disk Access, it indexes everything. Set up as a login item, you give the binary its own grant in System Settings, under Privacy and Security, and you grant it again after each rebuild, because the signature changes.

When access is missing, fsearch skips the protected folders instead of hanging on a permission prompt mid-search. That restraint matters: a search tool that stalls on a dialog is worse than one that quietly returns what it can see.

Three ways into the same index

There are three ways in. The CLI is the daily driver. The crate lets you embed the engine in a Rust program with a couple of calls. The socket lets any process talk to the running index over JSON lines, so a script, an editor plugin, or a small app can query the same data the CLI uses.

Linking the crate is short:

  • Engine::start opens the index for your home directory
  • Query::parse turns a query string into a structured query
  • engine.search returns the hits

One index serves every caller. The first process to start owns it, and the rest follow along, so an app and the CLI never fight over two copies of the same data. If you also live in a terminal all day, the notes on designing a command palette cover the keyboard-first habits that pair well with a fast query engine.

Frequently asked questions

Is fsearch a replacement for Spotlight?

It covers the file-search job better than Spotlight in most cases, because it indexes the whole disk and searches inside files. App launching and document previews stay with the system. Many people keep Spotlight for launching and use fsearch for finding.

Does it work only on macOS?

Yes. fsearch is built for macOS and leans on Apple filesystem APIs for the crawl and the change stream. The README compares it against a competitor on a Linux kernel folder, but the tool itself targets the Mac.

Will it index my node_modules and build folders?

It deliberately skips some file types and the build and vendor folders to keep memory small and searches fast. The README states this openly as the reason a competitor covers about 9% more file contents.

How much memory does the daemon use?

Between 30 and 135 MB, depending on how much the index holds, according to the README. That is the footprint for watching a whole disk, which is small next to the alternative of a heavy background indexer.

Can I embed it in my own program?

Yes. The same engine ships as a Rust crate, and there is a JSON lines socket for callers that are not Rust. An app and the CLI share a single index, so you can build on top of the running search without starting a second crawler.

Why it belongs in your toolkit

The cost of a slow search is attention. Every time you cannot find a file, you leave the task to open a terminal or a Finder window and hunt through folders. A query that returns in about a millisecond removes that detour, and the detour is where the afternoon goes.

fsearch is a small MIT-licensed Rust tool, and it is honest about what it skips. You get one install and a query language that scales from a single word to a filtered content search. Grab the repository, run the install once, and give it Full Disk Access. When you want the files it surfaces to sit in a tidy project, the rest of our free resources and design and code kits are built for the same fast, solo workflow.

More Figma freebies

Liquid Glass for React

Code

Liquid Glass for React

Glass surfaces and controls for React on the web and in Electron. Clear and Regular materials refract live content, and every control runs on Base UI behavior.

REA — reverse engineering MCP for AI agents

Code

REA — reverse engineering MCP for AI agents

Give your AI agent an MCP server that reverse engineers any app: native binaries, Electron, .NET, APKs, and websites. Analysis runs locally, MIT licensed.

@sfinterface/numbers — rolling numbers for React

Code

@sfinterface/numbers — rolling numbers for React

React component that turns only the digits that changed. 13 kB, no dependencies, Intl formatting, five transitions, and reduced-motion support.

RuneIcons — open source icon set for modern UIs

Components

RuneIcons — open source icon set for modern UIs

Thousands of clean, consistent SVG icons for web and app interfaces. Open source, MIT licensed, and ready to drop into Figma, React, or plain HTML today.

Amicro — micro-interactions for any landing page

Code

Amicro — micro-interactions for any landing page

Open source collection of ready-made micro-interactions: hover glow, magnetic buttons, scroll reveals. Copy a snippet, paste into any page, ship motion today.

M3E Canvas — Material 3 Expressive UI builder

Code

M3E Canvas — Material 3 Expressive UI builder

Assemble Material 3 Expressive interfaces in your browser and export a ready-to-use prompt for AI. Open source, free, and built for Android vibe coding.

Driver.js — product tours & onboarding

Code

Driver.js — product tours & onboarding

Lightweight, vanilla JavaScript library for building powerful product tours, feature highlights, and contextual onboarding. No dependencies, just 5kb gzipped, fully customizable and accessible by default.

pdfcn — PDF viewer component for React

Code

pdfcn — PDF viewer component for React

Open source PDF viewer built on the shadcn stack. Renders documents inside your React app with zoom, search, and navigation. No iframe, no vendor lock-in, MIT license.

Free invoice template for Figma

Components

Free invoice template for Figma

Clear and simple table-based document for your business purposes. Powered by editable data grid, which is easy to manage.

Avatar UI design templates & tips

Components

Avatar UI design templates & tips

A part of the upcomong design handbook «The State of Component». Colors, Styles & UI design for Avatar. Events, States and Actions. Including layout samples for inspiration.

App Bar UI design templates & tips

Components

App Bar UI design templates & tips

Application Bar (aka Navigation Bar) — displays prior in-app controls related to the current app section. This freebie contains things to consider when designing App Bars.

Fonts Playground

Global Styles

Fonts Playground

Best web fonts precisely handpicked and optimised for better web legibility and ready to implement into your Figma project.

Website Template

Web Design

Website Template

Landing page template made for Figma. Contains styled components UI kit, desktop & mobile versions. Global styles, Inter, FlatUI colors.

Android UI kit

Mobile Templates

Android UI kit

8 mobile app templates based on popular Android UI design patterns: Calendar, Cards, Tasks, Kanban & Project management and more.

Figma iOS UI kit

Mobile Templates

Figma iOS UI kit

iOS native components and app templates organised into a «Most Design System» fully compatible with Human Interface guidelines.

Material X Starter

Mobile & Desktop

Material X Starter

Top-notch styled components in the design system powered by Auto-layout. Ready-to-use Figma UI kit with styles from the nearest future.

Radar Chart

Data visualization

Radar Chart

Radar chart template made of components and available within a range of popular viewports: desktop, tablet and mobile. Light & Dark.

Rome UI kit lite

Mobile & Desktop

Rome UI kit lite

Components & templates for desktop & mobile apps. Powered by clean and trendy custom guidelines and DM Sans font (OFL).

Xela UI kit starter

Mobile & Desktop

Xela UI kit starter

100+ variants of several components to craft perfectly shaped desktop & mobile apps. Modern styleguides and free Nunito Sans font.

Free iOS UI kit

Mobile Templates

Free iOS UI kit

Customisable & adjustable mobile design system with 100+ variants for a set of components and 8 ready-to-use app layouts to try out.

Mobile-X UI kit

Mobile Templates

Mobile-X UI kit

Meet Mobile-X Figma design system for mobile app design. Cross-compatible & stylish UI kit which fits both iOS / Android apps.

Accordion guide

Tutorials & Education

Accordion guide

The exploration for Accordion component: styles, states, samples, and use cases for desktop & mobile viewports.

Eclipse UI kit

Mobile & Desktop

Eclipse UI kit

Fine components fully loaded with variants, auto-layout, global text & color styles. Hi-end customizable Figma design system (starter).

Appka iOS UI kit

Mobile Templates

Appka iOS UI kit

Appka is a fine-themed & customized iOS design system with 4100+ variants for 28 components and 280+ ready-to-use app layouts for Figma.

Nav templates

Mobile & Desktop

Nav templates

This design resource represents navigation components. It contains sidebars, drawers and headers both in light & dark modes.

Dark charts UI kit

Chart Templates

Dark charts UI kit

Try out this handy source of graphs for your next dashboard, pitch, or even print materials. Contains most common dark chart templates.

Figma email templates

Email Templates

Figma email templates

Five awesome and scalable free email templates to engage your subscribers. Dark & light themes. Contains buttons, lists and cards.

Charts widgets dark & light

Chart Templates

Charts widgets dark & light

Line & Wave charts, Bars, Histograms, Ratings and more graphs widgets are available in this free Figma resource. For dashboards, mobile & desktop.

Shopping layout for web app

Desktop

Shopping layout for web app

Contains navigation, filtering components, tabs, cards and more. This layout was made with Angular and fully coded.

Orion dark templates

Data visualization

Orion dark templates

Figma library with 40+ desktop charts templates served in light & dark themes. Contains 200+ of dataviz widgets for every case.

Responsive imagery cards

Card Templates

Responsive imagery cards

A variety of responsive cards templates for Figma. Constrained and scalable. Made with global styles for typography and colors.

Landing page & web blocks

Web Design

Landing page & web blocks

Use given blocks as a quickstarter for your very next web design mission. This freebie contains 3 landing pages for desktop, tablet & mobile.

Mobile tables several themes

Mobile Templates

Mobile tables several themes

Components-driven iOS layouts with data grid made from one singe cell. Based on different styles. Allows to create better tables in Figma.

12 free mobile templates

Mobile Templates

12 free mobile templates

Use our Full iOS design system as the starter for your next mobile app. This freebie includes 12 screens dark & light powered by 200+ components.

Calendars & Date picker templates

Mobile & Desktop

Calendars & Date picker templates

UI design resource with 56 calendars extracted from our popular UI kits. All the best samples of schedule patterns, planners, event managers.

Schedule & Events template

Desktop

Schedule & Events template

This clean calendar template has been made of a scalable grid, accurately made with colored items and wrapped for the desktop.

Material You for web apps

Mobile & Desktop

Material You for web apps

Figma Material Design 3 starter fully loaded with several desktop & mobile templates (with dark themes) and a bundle of components.

iOS Datepickers

Tutorials & Education

iOS Datepickers

Stand out with our Figma iOS date picker. Offering a true-to-life isometric design and easy-to-edit text, it's the most realistic option.

Segment UI kit

Mobile Templates

Segment UI kit

Design stunning Android apps with our free Figma UI kit. Follow Android guidelines and components and use our fonts, colors, and templates.

Figma React UI kit

Design & Code

Figma React UI kit

Our Figma React UI kit 2-in-1 makes web app building faster. Created in Figma, exported to React, and customised with Blueprint.js library.

Messenger app desktop template

Desktop

Messenger app desktop template

Effortlessly create world-class communication design with our Messenger Template for Figma. With dark and light mode options.

Zeus UI free website template

Web Design

Zeus UI free website template

Zeus Web UI kit-inspired landing page template. Supports all viewports, card-driven UX, polished with Syne and Space Grotesk fonts.

Design system starter

Global Styles

Design system starter

Launch your project with confidence thanks to our Figma design system. Customize grids, text, color, gradients, and shadows with ease.

Navigation layout 4 samples

Mobile & Desktop

Navigation layout 4 samples

Sleek Navigation Menu for Material X design system in Figma. Various sizes and design options. Features badges and active state highlight.

Chart cards

Data visualization

Chart cards

Make your data pop with our easy-to-use Charts UI kit. Featuring bar charts and heatmaps, it's perfect for dataviz, dashboard, pitches and others.

Material UI styled

Mobile & Desktop

Material UI styled

New and improved Material UI Kit, refreshed with enhanced material.io guidelines. Free and ready-to-use components included.

Hyper charts

Data visualization

Hyper charts

Transform your data into captivating visuals with several Figma's chart templates based on Hyper Charts kit. You'll find 8 editable widgets inside.

Search inputs

Components

Search inputs

Explore how Figma inputs are revolutionizing search interface design. Gain key insights to enhance user experience with impeccable UIs.

Figma Grid Layouts

Grid Layouts

Figma Grid Layouts

This template is designed to help you create templates that are beautifully balanced. Features both mobile and desktop layouts with 16/24 gutters.

Panda dashboard template

Desktop

Panda dashboard template

Build sleek dashboards with our Panda UI kit starter! Featuring a 1920w desktop template, UI widgets, and components.

Orion dataviz templates

Dashboard Templates

Orion dataviz templates

The design system starter for your next application. This resource contains 6 dashboard templates and a bundle of UI design widgets.

Subscribe to Setproduct

Once per week we send a newsletter with new releases, freebies and blog publications

By clicking Sign Up you're confirming that you agree with our Terms and Conditions.