Find anything on your Mac before you finish typing.

Fastlight is a free, open-source launcher for macOS. Press ⌥Space, type a few letters, and it finds your apps and every file on the disk in microseconds.

Free and open source · macOS 14 or later · No account, no network

The Fastlight panel with the query “term”: Terminal as the Top Hit, iTerm under Applications, and matching files such as terminal-cheatsheet.md under Files. The Fastlight panel with the query “invoice”: Invoice-2026-041.pdf as the Top Hit, followed by an Invoices folder and more invoice PDFs, spreadsheets and pages documents. The Fastlight panel with the query “grep:TODO ext:swift”: Swift files listed with the line number and text of each TODO comment.
Real panel renders with sample files.

Millions of files. Microseconds.

Fastlight ships fsearch, a whole-disk index that crawls once, then follows every change through FSEvents. Typing never waits on the disk.

fsearch’s own benchmark: M4 Max, 8.3 million files on disk.
Find a file by name, whole disk0.13 ms
Search inside files2.3 ms
A new, renamed or deleted file shows up~0.1 s
First run, until fully searchable49 s

Median (p50) times. Your Mac and your disk will differ.

Forgives typos
Words are fuzzy, and words of five letters or more survive one typo: mian.rs still finds main.rs.
Reads inside files
A trigram index of your text files makes grep: instant. Matches are read fresh from disk, so they are never stale.
Whole disk, not a guess
Every folder you give it access to, not a curated subset. With Full Disk Access that includes Desktop, Documents and Mail.

Apps first. Files right after.

Results arrive in sections, so launching an app never means wading through files, and finding a file never means scrolling past apps.

  • Top Hit is what ↵ opens.
  • Applications, with their real icons, from /Applications, /System/Applications and ~/Applications. Ranked by how well the name matches and how often you open them, so vsc finds Visual Studio Code.
  • Files from everywhere else. Plain queries leave out app bundles, dot-folders and ~/Library; any filter brings them back.
The query “saf”: Safari as the Top Hit with its icon, and the files Safety deposit.pdf and safari-bookmarks.html in a separate Files section.

Say exactly what you mean.

The search field speaks fsearch’s query language. Plain words for everyday use; filters when you know what you are after.

  1. invoice ext:pdf mtime:<30d

    PDFs named like “invoice”, changed in the last 30 days.

  2. readme in:~/src

    Every readme under ~/src, and nowhere else.

  3. grep:TODO ext:swift

    Swift files that contain “TODO”, with the matching line.

Results for “grep:TODO ext:swift”: four Swift files, each with the line number and the text of its TODO comment.
Content matches show the file, the line number and the line itself.

Operators

'exact
No fuzziness
^prefix
Name starts with
suffix$
Name ends with
!word
Leave out paths with it in the name or a folder: !node_modules. Works with ', ^ and $ too
"two words"
Quotes keep spaces in one word or value: in:"~/My Notes"
folder/name
Words can match folders on the path too, as long as one is in the name: src readme or src/readme

Filters

ext:
Extension; commas for several: ext:jpg,png
type:
image, video, audio, doc, code, archive, font or app
kind:
file (f), dir (folder, d) or link (symlink, l)
in:
Under a folder, absolute or ~: in:~/src
size:
size:>5mb, size:1m..10m
mtime:
Modified: mtime:<7d within a week, mtime:>1y over a year ago. Also modified:
re:
Regex over the name, ignoring case: re:^IMG_\d+
path:
Regex over the full path, ignoring case
grep:
Text inside files, smart-case. Also content:
regex:
Regex inside files, smart-case
sym:
Where a symbol is defined. Also symbol:

Values

> < ..
More than, less than, between (>= and <= too); size: takes an exact value too
size
b, kb, mb, gb, tb (or k, m, g, t); 1 kb is 1000 bytes, bytes if left out
mtime
s, m/min, h, d, w, mo, y; days if left out

Matching ignores case, except sym: and grep: or regex: patterns with capitals.

Make it yours.

Extensions add their own results, through a keyword or in their own section of the normal results.

  • Emoji — type : then a name (:joy, :tada:); ↵ pastes it where you were typing.
  • Calculator — type math (1920*1080, 15% of 80) and the answer is the Top Hit, or start with =; ↵ copies it.
  • Conversions — units, world clocks and dates (10 km in mi, time in tokyo, days until dec 25), the same way, offline.
  • System — open a System Settings pane (bluetooth, full disk access), run your Shortcuts, or lock, sleep and restart the Mac; restarting asks first.
  • Contacts, Calendar, Reminders — type a name and the person is there, ready to email, call or message; cal  is today's agenda, remind  what's due.
  • Dictionary — type define or dict and a word for its definitions, from the dictionaries built into macOS; ↵ opens Dictionary. Only there, so normal search stays apps and files.
  • Web — type an address (github.com) and ↵ opens it, or web and anything to search in your browser.
  • Your own — any language: a folder with an extension.json and a script that speaks JSON lines.
{
  "id": "com.example.bc",
  "name": "bc",
  "version": "1.0.0",
  "keywords": ["bc"],
  "command": ["/bin/sh", "bc.sh"]
}

Read the extension guide

The emoji picker in keyword mode with the query “joy”: Face with Tears of Joy at the top with its emoji and the :joy: keyword, then similar emoji, and an action bar naming Paste Emoji and Copy Emoji.
The query “15% of 80”: 12 as the Top Hit with the calculator icon, and the file 15 percent rule.pdf under Files.
Math in normal search: the answer is the Top Hit, and ↵ copies it.

Hands stay on the keyboard.

Fastlight lives in the menu bar and waits for ⌥Space, or any shortcut you pick in Settings. Everything after that is a key away.

Keyboard shortcuts
KeysDoes
⌥SpaceShow or hide Fastlight
↑↓Move through results
Tab / ⇧TabNext or previous section (also ⌘↓ ⌘↑)
↵Open (on an extension result, its main action, like Paste)
⌘↵Show in Finder (on an extension result, its second action, like Copy)
⌘YQuick Look
⌥⌘CCopy the path
: / =Emoji picker / calculator
⌫On an empty field, leave an extension
⎋Clear the query, then close

Installed in a minute.

One app, fsearch included. No daemon to set up, no account.

  1. Download the DMG

    Get Fastlight-<version>.dmg from the latest release and open it. Or, with Homebrew, run brew install --cask elboletaire/tap/fastlight and skip to step 3.

  2. Drag it to Applications

    Drop Fastlight onto the Applications folder in the DMG window, then open it from there.

  3. Click “Open Anyway” if asked

    Builds that aren’t notarized are blocked the first time. Go to System Settings → Privacy & Security and click Open Anyway.

  4. Grant Full Disk Access

    Add Fastlight under System Settings → Privacy & Security → Full Disk Access, so Desktop, Documents and Downloads get indexed too.

The Fastlight panel showing the notice “Allow Full Disk Access to also find files in Desktop, Documents and Downloads.” with an Open Settings button.
Until access is granted, the panel says so and links straight to the right settings pane.

Questions

Does anything leave my Mac?

No. The index, the queries and the results stay on your Mac. Fastlight and fsearch talk over a local socket in ~/Library/Application Support/FSearch; there is no account, no analytics and no network access. Extensions you install can do whatever their code does; the built-in extensions never use the network (web search opens your browser). Contacts, Calendar and Reminders are read from your Mac's own stores, only after you allow it, and never changed.

Why does it need Full Disk Access?

macOS protects folders like Desktop, Documents, Downloads and Mail. Without the grant, fsearch quietly skips them instead of popping a prompt for each one, so those files never show up. The grant only lets Fastlight read file names and text on your own disk.

You can grant it before or after the first launch: if the search daemon started without access, Fastlight restarts it as soon as it has the grant, and it rescans. If files still don't show up, run tccutil reset SystemPolicyAllFiles com.elboletaire.fastlight and pkill -f 'fsearch serve', add Fastlight to Full Disk Access again and reopen it.

How is it different from Spotlight?

Spotlight relies on metadata importers and decides what is worth indexing; Fastlight indexes every file name it can reach and answers fuzzy, typo-tolerant queries in microseconds. It keeps apps and files in separate sections and adds a query language with filters such as in:, mtime: and grep:. It doesn’t replace Spotlight, so you can keep both.

Can I extend it?

Yes: an extension is a folder with an extension.json and a program in any language that answers JSON lines. Drop it in ~/Library/Application Support/Fastlight/Extensions/. The emoji picker, calculator, conversions, dictionary, web search, System Settings, Shortcuts, System, Contacts, Calendar and Reminders are built the same way and come with the app. Read the extension guide.

Are extensions safe?

Fastlight asks before running a new extension and again whenever its files change. An approved extension runs with Fastlight’s permissions, which can include Full Disk Access, and isn’t sandboxed, so only install extensions you trust. Turn them off any time from the menu-bar icon › Extensions. The built-in ones are part of the app.

Can it open with ⌘Space instead of Spotlight?

Yes. Open Settings from Fastlight’s menu bar icon. It takes you to the Keyboard Shortcuts setting where you turn off Spotlight’s shortcut, and switches to ⌘Space as soon as it’s free. An experimental button can do it for you and put it back later. Spotlight itself stays on either way, so Finder and Mail search keep working.

What do I need to run it?

macOS 14 Sonoma or later. On macOS 27 and later the panel picks up the Liquid Glass look. Everything else, fsearch included, is inside the app.

Is it really free?

Yes. Fastlight is free and open source under the MIT license, and so is fsearch. The code is on GitHub; issues and pull requests are welcome.

I updated and files went missing. What happened?

Ad-hoc signed builds get a new signature on every release, and macOS ties Full Disk Access to that signature. Remove Fastlight from the Full Disk Access list, add it again, and it is back to the whole disk.

Press ⌥Space. Type. It’s there.

Search by fsearch, made by Noah Dunnagan and released under the MIT license. Fastlight bundles it unchanged and wouldn’t exist without it.