Lightning-fast file search for Windows, powered by NTFS MFT + USN Journal.
An open-source alternative to Voidtools Everything, built with Python and PyQt6 for extensibility and customization.
- Instant indexing via NTFS Master File Table (MFT) direct read with parallel scanning
- FAT32/exFAT/ReFS support for external drives and Dev Drives via recursive
os.scandirwalk - USN Journal V2/V3/V4 support — V3/V4 with 128-bit file IDs for ReFS compatibility
- Real-time updates via USN Change Journal monitoring (NTFS) and configurable periodic rescan (FAT/exFAT/ReFS)
- Non-admin fallback — gracefully degrades to
os.scandirwhen UAC is declined - SQLite FTS5 full-text search cache with WAL mode and memory-mapped I/O
- DB corruption recovery with automatic integrity checks and rebuild
- Sub-second search across millions of files with compiled pattern matching
- Incremental availability — search is available as soon as the first drive finishes indexing
- Minimal footprint — lightweight in-memory index with
__slots__optimization
- Instant-as-you-type results with debounced search
- Smart case sensitivity — uppercase in query auto-switches to case-sensitive (fd-style); explicit
case:/nocase:overrides - Fuzzy matching via
fuzzy:modifier — subsequence matching for typo-tolerant search - Search history with autocomplete suggestions
- Result highlighting — match substrings painted in accent color
- Inline column filtering — per-column filter row below headers
- Regex support (
regex:pattern) - Wildcards (
*.py,test?.log) - Boolean logic — AND (spaces), OR (
|), NOT (!term) - Content search —
content:keywordsearches inside text files - Usage-based ranking — frequently opened files rank higher with Relevance sort
- 16 search modifiers:
case:,path:,file:,folder:,wholeword:,ext:,size:,dm:,dc:,len:,attrib:,content:,parent:,dupe:,fuzzy:,regex: - Search syntax help panel accessible from Help menu
- Launcher popup —
Ctrl+Shift+Fsummons a floating search bar (Wox/Flow Launcher style) with keyboard hints and empty-state feedback - Catppuccin Mocha dark theme — premium polished aesthetic with rounded inputs, focus rings, and consistent spacing
- Details view with sortable columns (Name, Path, Size, Date Modified, Date Created, Type, Attributes)
- Column visibility — right-click header to show/hide columns, persisted in settings
- Keyboard navigation —
Enteropen,Deleterecycle,F2rename,Ctrl+Enteropen folder - Thumbnail view for visual browsing
- Preview pane for text files, images, and file info with label-above-value layout
- Filter bar with built-in filters (Audio, Video, Image, Document, Executable, Compressed, Folder) + custom filters
- Bookmarks — save/restore search + filter state
- Context menu — Open, Open Path, Copy Name/Path, Terminal Here (CMD/PowerShell/WT), Delete to Recycle Bin, Properties
- System tray with minimize-to-tray and close-to-tray
- Dark title bar via DwmSetWindowAttribute on Windows 10/11
- Accessibility —
accessibleName/accessibleDescriptionon key widgets; focus-visible states on all interactive elements
- HTTP/HTTPS server for remote web browser access with TLS certificate support, token-based authentication, per-IP rate limiting (60 req/min), XSS protection (CSP headers +
html.escape), and sticky-header web UI .quickfindignorefiles — place in any directory with glob patterns to exclude files/folders from indexing (like.gitignore)- EFU file lists for indexing non-NTFS and network drives
- CLI tool (
es.py) with full search syntax, CSV/JSON output, and DB cache for instant results - Per-drive rescan intervals — configure different rescan frequencies for SSD vs NAS drives
- Export/import settings — save and restore configuration as JSON
- Log rotation —
RotatingFileHandlerwith 5 MB max and 3 backups - 145 automated tests covering search parsing, MFT record parsing, cache helpers, remote server configuration, and ignore patterns
- PyInstaller build script for single-file or single-folder distribution
- Windows 10/11
- Python 3.10+
- Administrator privileges recommended (for NTFS MFT access; falls back to
os.scandirwithout admin)
# Clone the repo
git clone https://github.com/SysAdminDoc/QuickFind.git
cd QuickFind
# Install dependencies
pip install -r requirements.txt
# Run (attempts admin elevation, falls back gracefully)
python quickfind.py# Basic search (uses DB cache for instant results)
python cli/es.py "*.py"
# Force reindex (bypass cache)
python cli/es.py --reindex "*.py"
# Regex search for log files
python cli/es.py -r "error.*\.log$"
# Find large MP4 files, output as JSON
python cli/es.py --json "size:>100mb ext:mp4"
# Files only, sorted by date modified
python cli/es.py -f -s dm "report"
# Search specific drives
python cli/es.py --drives C,D "*.docx"# Build single-folder distribution
python build.py
# Build single-file exe
python build.py --onefile
# Clean build artifacts
python build.py --clean| Syntax | Description |
|---|---|
foo bar |
Files containing both "foo" AND "bar" |
foo | bar |
Files containing "foo" OR "bar" |
!temp |
Exclude files containing "temp" |
"exact phrase" |
Match exact phrase |
*.py |
Wildcard matching |
regex:^test\d+ |
Regex matching |
fuzzy:qickfind |
Fuzzy subsequence matching |
case:FooBar |
Case-sensitive match |
path:src\utils |
Match in full path |
file: / folder: |
Files or folders only |
ext:py;js;ts |
Filter by extension |
size:>1mb |
Size greater than 1 MB |
size:100kb..5mb |
Size range |
dm:today |
Modified today |
dm:>2024-01-01 |
Modified after date |
dc:thisweek |
Created this week |
content:TODO |
Search inside file content |
len:>20 |
Filename length > 20 chars |
attrib:rh |
Read-only + hidden |
parent:node_modules |
Parent directory filter |
dupe: |
Find duplicate filenames |
Smart case: Queries with uppercase letters automatically use case-sensitive matching. All-lowercase queries match case-insensitively. Override with case: or nocase:.
Place a .quickfindignore file in any directory to exclude matching files and folders from indexing. Uses glob patterns, one per line (like .gitignore):
node_modules
*.pyc
.git
__pycache__
.venv
Lines starting with # are treated as comments.
QuickFind/
quickfind.py # Entry point (bootstrap + admin elevation + fallback)
build.py # PyInstaller packaging script
requirements.txt # pip dependencies
core/
ntfs.py # NTFS MFT/USN via ctypes + ReFS/Dev Drive support
index.py # In-memory index + USN monitor + deferred path resolution
cache.py # SQLite FTS5 cache + integrity check + search history + usage tracking
search.py # Search engine with modifiers + fuzzy matching
utils.py # Shared utilities (size parsing)
file_list.py # EFU file list import/export
hidden_paths.py # Per-filter hidden path management
everything_import.py # Everything config file import
gui/
main_window.py # Main window (menus, toolbar, layout, multi-tab search)
launcher_popup.py # Floating launcher search bar (Ctrl+Shift+F)
results_view.py # Table model + highlight delegate + column filters
preview_pane.py # Text/image/info preview
filters.py # Filter bar + custom filter editor
bookmarks.py # Bookmark manager + panel
context_menu.py # Right-click menu with shell integration
tray.py # System tray + global hotkey + app icon
settings_dialog.py # Settings dialog with tabs + export/import
hidden_paths_dialog.py # Hidden paths management dialog
theme.py # Catppuccin Mocha theme system
server/
http_server.py # Remote web search server + token auth + rate limiting
cli/
es.py # Command-line search tool + DB cache
tests/
test_search.py # Search parsing, modifiers, smart case, fuzzy matching
test_ntfs.py # MFT record parsing, FILETIME conversion, USA fixup
test_cache.py # Datetime conversion, FTS5 detection
test_index.py # .quickfindignore pattern matching
test_file_list.py # EFU file loading and FILETIME parsing
assets/
quickfind.ico # App icon (auto-generated on first run)
- MFT Scan (NTFS): Reads the NTFS Master File Table directly to enumerate all file/folder records in ~1-2 seconds per drive (parallel scanning across drives)
- Directory Walk (FAT/exFAT/ReFS): Uses recursive
os.scandirfor non-NTFS drives (external USB, SD cards, Dev Drives) - Non-Admin Fallback: If UAC elevation is declined, falls back to
os.scandirfor all drives - Incremental Availability: Search is available as soon as the first drive finishes indexing — no waiting for all drives to complete
- Path Resolution: Builds parent-child FRN tree to resolve full paths on demand with deferred batch resolution
- USN Journal (NTFS): Polls the NTFS Change Journal (V2/V3/V4) every second for creates/deletes/renames/modifications
- Periodic Rescan (FAT/exFAT/ReFS): Re-walks non-NTFS drives at configurable intervals for change detection
- Search: Parses query modifiers, compiles matchers (regex/wildcard/substring/fuzzy), and filters the in-memory index — falls back to SQLite FTS5 for simple queries
- DB Cache: SQLite FTS5 database persists the index for instant CLI searches and fast startup recovery
- Usage Tracking: Files opened via QuickFind have their open counts tracked in SQLite for relevance-based ranking
# Run the test suite (141 tests)
python -m pytest tests/ -vTests cover search query parsing (all modifiers), size/date helpers, smart case sensitivity, fuzzy matching, MFT record parsing, USA fixup, USN records, cache datetime round-trip, FTS5 detection, .quickfindignore pattern matching, and EFU file loading.
- XSS protection: HTTP server uses
html.escape()for all user-derived content withContent-Security-PolicyandX-Content-Type-Optionsheaders - Rate limiting: Per-IP rate limiter (60 requests/minute) on the HTTP server with
429 Too Many Requestsresponse - HTTPS support: Optional TLS certificate/key configuration for encrypted remote search access
- Token authentication: Optional Bearer token authentication for the HTTP/HTTPS server
- Safe Win32 calls: All ctypes DLL loads use
WinDLL(use_last_error=True)with completeargtypesdeclarations - Atomic config saves: Settings, bookmarks, filters, and hidden paths use atomic write (temp file + rename) to prevent corruption on crash
- Privilege scoping:
SeBackupPrivilegeenabled only when needed for NTFS MFT access
MIT License