Cardinal
File search for macOS. You type and results appear as you go, across the whole disk. Search by name, by file type, or by what is written inside.
Cardinal is not an app of my own: the original project belongs to cardisoft and the credit for the search engine is theirs. This is a fork continuing that work, with my contributions to the interface.
For Apple silicon Macs, macOS 12 or later. Signed with a Developer ID and notarised by Apple, so it opens with no Gatekeeper warnings. Its SHA-256 checksum is 0aec374ebf36fe46b1931b7414323596865cd0543482359aac361e7004b3f17c.
Status
Cardinal 0.5.1 finishes off the updater: it installs the new version for you and puts the installer in the Trash when it is done. Shortly before it, 0.5.0 fixed two things that were costing results. It no longer loses filesystem changes: deletions used to stay in the index for good. And it stopped opening files iCloud has not downloaded, which is what made searching inside a synced folder quietly download everything. When that happens it now tells you, with the exact size. The search engine is cardisoft's and has been solid for a long time; what this fork changes is how much of that power is visible, and the things that were breaking without anyone noticing.
What it does
- Finds files and folders by name, instantly, across the whole disk.
- Filters by type from a dropdown: image, video, audio, document, PDF, email, archive, code, application.
- Searches inside file contents and shows you the matching snippet, with the term highlighted.
- Narrows the search to a single folder.
- Quick Look preview with the Space bar, without leaving the app.
- Opens from anywhere with Cmd+Shift+Space.
- Available in 15 languages.
How to search
Loose words are enough most of the time. When you need precision, the bar understands filters:
informe borrador: a space means AND, so only files that contain both words.type:image vacaciones: images whose name contains “holiday”. This is what the type dropdown writes for you.content:invoice content:overdue: files with both words inside, anywhere.content:"Bearer ": in quotes, that exact text.type:email content:Karina: mail mentioning Karina, Outlook included.*.zip size:>100MB: archives larger than 100 MB.~/**/.DS_Store: searches every subdirectory of your home folder.
What's new
The last few versions went into fixing things that genuinely got in the way. The ones that matter most:
- Deletions are no longer lost. One filesystem event at the root made the whole batch be discarded, and the deleted files that came with it stayed indexed. Measured on a real index: everything sampled under DerivedData and the Trash was already gone from disk, against nothing under Documents.
- Content search no longer downloads your iCloud. Opening a file that is not downloaded makes macOS fetch it, so searching for a word could pull down every PDF and video you keep in the cloud. It leaves them alone now, and tells you how many it skipped and what they weigh.
- Folders go on top. Grouped ahead of files, whichever column is sorting and in either direction, with your own order deciding within each group. On by default, and switchable in Preferences.
- "Check for Updates" installs the new version. It used to only say one existed and send you to a web page. It now lists what changed and, on one click, fetches it and updates itself: the app quits, replaces itself and reopens. It verifies the signature before removing anything, so a damaged download leaves the version that worked untouched. When it is done, the disk image goes to the Trash rather than sitting in Downloads. The Trash and not deleted, because if an update turns out badly that file is exactly what gets you back. "Quit and do it myself" is still there if you would rather drag it, and the app still makes no network request unless you ask.
- Searching inside files no longer depends on the order you typed. The content filter shared a priority with the type filter, so
content:invoice type:emailopened and read the whole disk whiletype:email content:invoiceread only the mail. Sixty times apart, measured. On a large disk that was the app locking up. Content now always runs last, over the smallest set possible. - Opening the app no longer costs three seconds. It ran an empty search at launch that returned the entire disk to show you thirty rows, and ran it again every time you cleared the field. The pane now tells you what to type instead.
- The "Contains" field looks for every word you give it, anywhere in the file, instead of the exact phrase. Quotes still mean the phrase. It used to do the opposite of what the bar beside it does with the same input, with nothing to say so.
- Outlook mail is findable. Legacy Outlook keeps every message as its own file, under extensions no search tool recognises;
type:emailnow covers them, along with the.olm,.pst,.ostand.nstmailboxes. - Sorting folders by size works. They were ordered by the size of their own directory entry, a few hundred bytes and near enough identical for every folder, rather than by what they hold.
- Columns can be reordered and hidden, the way Finder does, and the arrangement is remembered.
- "About", "Check for Updates" and "Settings" live on the menu-bar icon, which is where they were needed once the app runs with no window.
The full detail of every version is in the release notes.
What this fork changes
Cardinal es rapidísimo y muy preciso, pero muchas de sus funciones estaban escondidas detrás de una sintaxis que hay que conocer de antemano. La idea de este fork es sacarlas a la superficie sin quitarle potencia: el desplegable de tipo de archivo escribe el filtro en la barra a la vista, así se aprende la sintaxis usándola; la búsqueda por contenido ahora muestra qué encontró y dónde; y el vocabulario dejó de ser de programador, por ejemplo "ámbito de carpeta" pasó a ser "buscar en".
Requirements
macOS 12 or later. Cardinal needs Full Disk Access to index and watch files; you grant it in System Settings > Privacy & Security.
Open source
The code is on GitHub under the MIT licence, with build instructions in the README.
Cardinal was originally created by cardisoft, and this fork continues that work. The credit for the search engine is theirs.
Support
To report a problem, open an issue on GitHub telling me your macOS version, or email me.
Privacy
Cardinal runs locally on your Mac: the file index never leaves the machine and the app has no analytics, accounts or tracking. See la política de privacidad.