Animated illustration of the real interface, on a made-up gamer's PC. Elden Ring and Minecraft are trademarks of their respective owners; Mosaic is not affiliated with them.
⚡ Blazingly fast. Tiny memory. Instant search.
Mosaic is a fast file explorer for Windows 10 and 11, built around a search engine: an Explorer replacement and an alternative to Everything.
It reads your NTFS drives straight from the Master File Table,
keeps up with every change through the USN journal, and answers searches across millions of files in milliseconds.
Tabs, split panes, previews and full-text search, in a native window with no web view and no Electron.
Features · Search language · Keys · How it works · Install · Build
|
Type, and it's there. Every file on every NTFS drive, searched and ranked in about 12 ms. No indexing wait, no spinner, no "searching…". Results change as you type, and files you just saved are already in. |
Search inside your files, too. Text, code, Word, Excel, PowerPoint and PDF, in the same box as filenames. Everything-style syntax, regex, dates, sizes, camera models and duplicates, all in one query. |
It replaces Explorer, not just sits next to it. Folders, drives, Win+E and every Save / Open window in every program open in Mosaic. Switch it off in one click, and uninstalling gives it all back. |
|
Small, on purpose. One 9.5 MB native app. No Electron, no web view, no GUI framework. It starts in under half a second and the window sits around 50 MB. |
Gentle on your SSD. A 24-byte record per file, a compressed cache that loads in one read, and changes appended to a log only when something changed. No rescans, no constant writing. |
Yours to keep. Free, open source, MIT. 75 languages, 16 themes, updates announced in the app, and nothing sent anywhere except one release check against GitHub. |
Measured on a Windows 11 PC with a 1 TB NVMe system drive. The times are median round trips to the index service.
| 2,541,861 | files and folders indexed on one drive |
| ≈ 12 ms | to search and rank all of them for a new query (win, folders first) |
| 0.3 ms | to fetch the next page of results |
| 24 bytes | per file or folder in the name index |
| 0 | rescans after startup: changes stream in from the USN journal |
| < 0.4 s | from launch to a window on screen |
| ≈ 50 MB | of memory for the window, with the index in a separate service |
| 9.5 MB | for the whole app: native Win32 and Direct2D, no browser engine, no GUI framework |
|
|
|
|
|
|
|
|
🌍 75 languages, from Afrikaans to isiZulu, including right-to-left Arabic, Persian and Urdu. 🎨 16 themes, 8 dark and 8 light, each shown as a miniature, with a cross-fade when you switch.
Space means AND. Everything below can be combined, grouped and negated.
| Operator | Example | Meaning |
|---|---|---|
a b |
report 2026 |
both words |
a | b |
jpg | png |
either |
!a |
report !draft |
not |
( ) |
invoice (pdf | docx) |
grouping |
"…" |
"Program Files (x86)" |
exact phrase, operators included |
* ? |
IMG_????.jpg |
wildcards |
| Function | Examples |
|---|---|
ext: |
ext:pdf · ext:jpg;png;gif |
size: |
size:>100mb · size:<=4kb · size:1mb..1gb |
dm: dc: da: modified · created · accessed |
dm:today · dm:lastweek · dc:2026-01 · dm:2026-01-01..2026-06-30 · da:>=2025 |
file: folder: |
folder: node_modules |
path: |
path:\projects\ ext:rs |
attrib: |
attrib:h (hidden) · attrib:rs (read-only + system) · attrib:e (encrypted) |
parent: child: sibling: ancestor: descendant: |
child:"C:\Users\you\Desktop" · descendant:D:\photos ext:raw |
empty: exists: |
folder: empty: |
distinct: unique: |
distinct:name · unique:size |
md5: sha1: sha256: crc32: |
sha256:9f86d081… |
dupe: |
dupe: ext:mp4 (files with an identical twin) |
camera-model: artist: iso-speed: width: height: |
width:>=3840 · camera-model:x100 |
Date words: today yesterday thisweek lastweek thismonth lastmonth thisyear lastyear, or YYYY[-MM[-DD]] with > >= < <= = and A..B ranges.
Typing a bare path such as C:\Users\you\Downloads lists what's under it.
Flip the Content toggle to search inside files, or Tags to match embedded metadata.
| Search and view | Tabs and panes (all can be changed) | ||
|---|---|---|---|
| Alt+M | match case | Ctrl+T | new tab |
| Alt+W | whole word | Ctrl+Shift+W | close tab |
| Alt+E | regex | Ctrl+Shift+T | reopen closed tab |
| Alt+D | ignore diacritics | Ctrl+Tab / Ctrl+Shift+Tab | next / previous tab |
| Alt+T | track created/accessed dates | Ctrl+Shift+PgUp / PgDn | move tab |
| Alt+P | preview pane | Ctrl+Shift+D | duplicate tab |
| Alt+B | sidebar | Ctrl+F2 | rename tab |
| Alt+← / → | back / forward | Ctrl+Shift+A | find a tab |
| Alt+↑ | parent folder | Ctrl+\ / Ctrl+Shift+\ | split right / down |
| F2 | rename | Ctrl+W | close pane |
| F5 | refresh | Ctrl+Shift+M | maximize pane |
| Ctrl+wheel | icon size | Shift+F5 / Shift+F6 | copy / move to the other pane |
| Ctrl+Backspace | delete a word, in every text box | Ctrl+Shift+U | separate panes into tabs |
flowchart LR
subgraph SYS["mosaic-index.exe · Windows service (SYSTEM)"]
MFT[("NTFS MFT")] -->|one pass at first start| IDX["In-memory name index<br/>24-byte records"]
USN[("USN journal")] -->|every change, live| IDX
IDX -->|every 5 min, if changed: append| CACHE[("zstd cache<br/>+ change log")]
CACHE -->|next start, then replay the journal| IDX
USN --> CQ["Content queue<br/>user files: 60 s batches<br/>system churn: daily"]
CQ --> TAN[("tantivy<br/>content index")]
end
subgraph GUI["mosaic.exe · native window"]
UI["Direct2D UI<br/>tabs · panes · previews"] --> Q["query parser"]
UI --> TH["mosaic-thumbs.exe<br/>shell icons and thumbnails"]
UI --> SB[("Explorer's folder views<br/>ShellBags")]
Q --> KV[("hash + metadata caches<br/>snapshot + append log")]
end
DLG["mosaic-dialogs.exe<br/>file window watcher"] -->|opens in place of<br/>Save / Open / Select folder| UI
Q <-->|"named pipe<br/>length-framed JSON"| IDX
Q <-->|content queries| TAN
- No crawling. The service reads the MFT once, then follows the USN journal. After a restart it loads its cache and replays the journal from where it stopped instead of rescanning the drive. The window waits on the journal, so a file you move shows up in its new place at once.
- Unprivileged UI. Only the small service runs elevated. The window talks to it over an ACL-protected named pipe.
- Shell work stays out of the window. Icons, thumbnails and the context menu run in a helper process, so a misbehaving shell extension can't take Mosaic down.
- Ranking is cheap. Records are tiny and contiguous: sorting by name, size or date is a parallel pass over flat arrays, and folders-first touches only the matches.
- Search is never stale. The content index reloads its reader on every query, and files changed since the last batch are read and matched on the spot.
- Folders the index doesn't hold (shares, USB sticks, WSL, This PC, Network) are listed by asking the file system directly.
- Download
MosaicSetup.exefrom the latest release, or build it with one command. - Run it and pick an icon preset: 11 color themes, each in two styles.
- Accept the one admin prompt. It installs the background index service that reads the file table.
- Type. Name search is ready once the drive is read; content indexing then continues quietly in the background.
Mosaic then opens your folders and Save/Open windows in place of Explorer's. Both switch off in the Tools menu, and uninstalling gives them back to Windows.
Requires Rust (stable, MSVC toolchain) and Inno Setup 6. ImageMagick is only needed to re-render the icon presets.
git clone https://github.com/FrCynda/Mosaic.git
cd Mosaic
.\build.ps1 # release build + installer -> dist\MosaicSetup.exe
cargo test --release --bin mosaic-wrapper # the test suite
.\tools\gen-presets.ps1 # optional: re-render icons/presets from icons/presets-src/*.svgProject layout
src/
├─ application/ search engine: query parser, index, ranking, catalog
├─ infrastructure/
│ ├─ ntfs/ MFT reader, USN journal watcher
│ ├─ service/ Windows service host, SCM, named-pipe server/client
│ ├─ cache.rs the name index on disk: zstd snapshot + change log
│ └─ indexing.rs volume indexing, cache persistence
├─ contentindex.rs tantivy full-text index and its live/daily batching
├─ extract.rs text extraction: plain text, Office XML, IFilters
├─ hashcache.rs md5/sha1/sha256/crc32 + duplicate finder
├─ metadata.rs shell property metadata (camera, artist, dimensions…)
├─ kvlog.rs snapshot + append-only log persistence
├─ direct.rs folders outside the index: shares, USB, WSL, This PC, Network
├─ recent.rs recent files and folders
├─ shellbags.rs Explorer's per-folder views, read and written
├─ native.rs the Win32 / Direct2D window: list, grid, status bar, views
├─ native_tabs.rs tabs, groups, panes, layouts, workspaces, shortcuts
├─ native_side.rs the sidebar: places, bookmarks, recent, drives
├─ native_save.rs Mosaic in place of Save / Open / Select folder windows
├─ native_apps.rs which programs' file windows Mosaic answers
├─ native_preview.rs image, video, audio and text previews
├─ native_icons.rs folder content previews and shortcut arrows
├─ native_drop.rs drag and drop
├─ native_themes.rs the theme picker
├─ native_help.rs search option help and the date picker
├─ shell.rs shell integration: icons, context menu, shortcuts, terminals
├─ i18n.rs loads the UI languages
└─ lang/ one text file per language
installer/ Inno Setup script
icons/ app icons, presets and shortcut arrow styles
The NTFS engine (application/, infrastructure/) is adapted from AllTheThings (MIT).
Full-text search by tantivy. Inspired by the legendary Everything by voidtools.
See THIRD-PARTY-NOTICES.md for all licenses.
MIT.
Made with Rust, for people with too many files.