Understand your files. Reclaim your space.
A privacy-first desktop application for understanding, organizing, and cleaning your files.
Entirely local. Zero cloud dependencies. No telemetry.
FeaturesΒ Β·Β ScreenshotsΒ Β·Β InstallationΒ Β·Β ArchitectureΒ Β·Β DocumentationΒ Β·Β Contributing
Over time, your Downloads folder becomes a digital attic. Old installers, duplicate files with different names, scattered documents, and large forgotten files accumulate silently. Disk space shrinks. Finding what matters becomes harder.
Existing solutions either upload your files to the cloud (compromising privacy), charge subscription fees, or lack the depth to detect similar (not just identical) duplicates and intelligently organize files by type.
FileSight was built to solve this β entirely on your machine.
FileSight gives you a complete picture of your files, detects duplicates at three levels of precision, suggests organization strategies, and lets you act with confidence β all without your data ever leaving your device.
- Scan any folder and get a complete file inventory with metadata
- Analyze storage by category, size, and age
- Detect duplicates β exact copies, similar images, similar documents, and filename matches
- Organize files into structured folders by type, with full undo support
- Preview images, PDFs, videos, and text files before acting
- Clean safely β files move to the system Trash, never permanently deleted without confirmation
Recursively scan directories and extract rich metadata from every file: name, size, extension, creation and modification dates, and content category. Configurable scan depth, hidden file handling, and symbolic link options. Real-time progress reporting with estimated completion.
Visual breakdown of storage by file category (images, videos, documents, archives, installers, audio, code, applications, and other). Identify largest files, oldest files, and get actionable suggestions β old installers taking up space, stale archives, and large files worth reviewing.
Automatically classify files by type and generate a plan to organize them into folder categories. Preview every proposed move before executing. Destinations are created automatically, duplicate filenames are handled via intelligent renaming, and every move can be undone.
- 7 categories: Images, Documents, Videos, Audio, Archives, Installers, Other
- Safe execution: Preview before moving, conflict resolution (rename / skip)
- Full undo: Every move is recorded and reversible from the History page
Three levels of duplicate detection with smart recommendations:
Level 1 β Exact duplicates: Files are grouped by size first, then SHA-256 hashed. Only files with matching sizes are hashed, avoiding unnecessary computation. Identical hashes form duplicate groups.
Level 2 β Similar files:
- Images: Perceptual difference hashing (dHash) via Sharp. Compares visual fingerprints to find resized, recompressed, or slightly modified images. Returns a similarity percentage.
- Documents: Text extraction from PDF, DOCX, TXT, and Markdown files. TF-IDF vectorization with cosine similarity to find documents with substantially similar content.
- Videos: Metadata-based comparison using file size, extension, modification date, and filename similarity.
Level 3 β Filename intelligence: Detects files that are likely duplicates based on naming patterns β copy suffixes, numbered versions (photo (1).jpg), "final" and "backup" markers, and conflicting copy patterns. Uses Levenshtein distance for fuzzy matching.
Smart recommendation: For each group, FileSight recommends which file to keep based on resolution (higher is better), modification date (newer is better), file size (larger is better for originals), and filename quality.
Preview supported file types directly in the application β no external viewers needed:
| Type | Formats |
|---|---|
| Images | PNG, JPG, JPEG, GIF, WebP, SVG, BMP, ICO |
| Text | TXT, MD, JSON, JS, TS, JSX, TSX, HTML, CSS, XML, CSV, LOG |
| Audio | MP3, WAV, OGG, M4A |
| Video | MP4, MOV, WebM, AVI, MKV |
Every scan, cleanup, and organization action is recorded:
- Scan history: Full scan results with category breakdowns, largest files, and duplicate size. Compare any two scans to see storage changes over time.
- Cleanup tracking: Every file moved to Trash is recorded with total space recovered.
- Organization history: Every file organization batch is stored with full undo capability.
- Timeline view: Visual timeline of all scan activity with storage and category trend charts.
Files are never deleted without confirmation. The cleanup workflow is:
- Preview β See which files will be affected and how much space will be recovered
- Confirm β Explicitly approve the action
- Move to Trash β Files are sent to the system Trash/Recycle Bin using
shell.trashItem() - Track β All cleanups are recorded in history with space recovered totals
| Home | Dashboard | History |
|---|---|---|
![]() |
![]() |
![]() |
Select a folder
β
βΌ
βββββββββββββββββββ
β File Scanner β Recursive directory walk, metadata extraction, categorization
β (electron/scanner)
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββββββ
β Analysis Engine β Storage stats, category breakdown, largest/oldest files
β (electron/analyzer)β Suggestions for cleanup opportunities
ββββββββββ¬βββββββββββββ
β
βΌ
βββββββββββββββββββββββββββ
β Duplicate Finder β Level 1: SHA-256 exact match
β (electron/services/ β Level 2: Perceptual image, document text, video metadata
β duplicateFinder/) β Level 3: Filename intelligence + Levenshtein distance
ββββββββββ¬βββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββ
β Organization Engine β Classify files β generate plan β preview moves
β (electron/services/) β Execute with conflict resolution β undo support
ββββββββββ¬βββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β User Review β Preview, select, confirm, or reject each action
ββββββββββ¬βββββββββ
β
βΌ
ββββββββββββββββββββ
β Safe Cleanup β Move to OS Trash (not permanent deletion)
β or Organization β Record in history, enable undo
ββββββββββββββββββββ
FileSight is an Electron + Next.js application. The frontend is a static Next.js export served via a custom app:// protocol handler in the Electron main process. The renderer operates in a sandboxed context with contextIsolation: true and no nodeIntegration.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Electron β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β Main Process β β
β β ββββββββββββ ββββββββββββββββββββββββ β β
β β β Scanner β β Analyzer β β β
β β β Cleanup β β Duplicate Finder β β β
β β β Settings β β Organization Engine β β β
β β ββββββ¬ββββββ ββββββββββββ¬ββββββββββββ β β
β β β β β β
β β ββββββΌββββββββββββββββββββΌββββββββββββ β β
β β β IPC Handlers β β β
β β β (electron/ipc/) β β β
β β ββββββββββββββββββ¬ββββββββββββββββββββ β β
β βββββββββββββββββββββΌββββββββββββββββββββββββββ β
β β β
β βββββββββββββββββββββΌββββββββββββββββββββββββββ β
β β Renderer Process (sandboxed) β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββ β β
β β β Next.js 16 (static export) β β β
β β β React 19 Β· TypeScript Β· Tailwind 4 β β β
β β β Zustand 5 Β· Recharts Β· Radix UI β β β
β β ββββββββββββββββββββββββββββββββββββββββ β β
β β β² β β
β β β contextBridge (preload.ts) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Routing: Next.js App Router with static generation (
output: 'export') - State: Zustand stores for scan results, duplicate detection, and history
- UI: Radix UI primitives (dialog, tabs, collapsible, checkbox, scroll-area) with Tailwind CSS 4 styling and Lucide icons
- Charts: Recharts for storage trend and category trend visualizations
- Theming: next-themes for light/dark/system mode support
- Main process: Window management, custom
app://protocol for serving static files, all file I/O and system operations - Preload: Context bridge (
contextBridge.exposeInMainWorld('electronAPI', ...)) exposing typed IPC methods - Sandbox: Renderer runs with
sandbox: true, no direct Node.js access
All business logic runs in the main process:
| Module | Responsibility |
|---|---|
electron/scanner/ |
Recursive directory traversal, metadata extraction, progress reporting |
electron/analyzer/ |
Storage analysis, category breakdown, suggestion generation |
electron/services/duplicateFinder/ |
Three-level duplicate detection engine |
electron/services/fileClassifier.ts |
Extension-to-category mapping |
electron/services/organizationEngine.ts |
Organization plan generation |
electron/services/moveManager.ts |
Safe file moves with conflict resolution |
electron/services/undoManager.ts |
Move reversal and undo record persistence |
electron/duplicate-engine/ |
Legacy duplicate detection (simpler hashing + filename matching) |
electron/cleanup/ |
Trash integration via shell.trashItem() |
electron/settings/ |
User preferences persistence |
- Database: JSON file at
{userData}/database.jsonwith in-memory caching - Settings: Separate JSON file at
{userData}/settings.json - Schema:
{ scans: ScanRecord[], cleanups: CleanupRecord[], organizations: OrgUndoRecord[] } - No external databases, no cloud storage, no server-side persistence.
filesight/
βββ src/ # Next.js frontend
β βββ app/ # Pages (home, dashboard, duplicates, history, settings)
β β βββ page.tsx # Home / scan entry point
β β βββ dashboard/page.tsx # Insights, Organize, Files tabs
β β βββ duplicates/page.tsx # Duplicate review
β β βββ history/page.tsx # Scan history + trends + comparisons
β β βββ settings/page.tsx # User preferences
β βββ components/ # 93 React components
β β βββ ui/ # Primitive UI components (Radix + custom)
β β βββ duplicates/ # Duplicate detection UI
β β βββ organization/ # Organization assistant UI
β β βββ preview/ # File preview components
β β βββ history/ # History and timeline components
β β βββ insights/ # Analysis dashboard components
β β βββ ...
β βββ hooks/ # 10 custom hooks
β βββ stores/ # Zustand state stores
β βββ lib/ # Utilities, constants, file helpers
β βββ types/ # Shared TypeScript types
β
βββ electron/ # Electron main process
β βββ main.ts # App entry, protocol registration, window setup
β βββ preload.ts # Context bridge (50+ IPC methods)
β βββ scanner/ # File scanning engine
β βββ analyzer/ # Storage analysis engine
β βββ services/ # Business logic services
β β βββ duplicateFinder/ # Duplicate detection engine (3 levels)
β β βββ fileClassifier.ts # File category classification
β β βββ organizationEngine.ts # File organization planning
β β βββ moveManager.ts # File move execution
β β βββ undoManager.ts # Organization undo system
β βββ cleanup/ # Trash integration
β βββ database/ # JSON persistence layer
β βββ settings/ # User settings management
β βββ ipc/ # 9 IPC handler modules
β
βββ tests/ # 279 tests across 19 test files
βββ assets/ # Branding, icons, screenshots
βββ resources/ # App icons and build resources
βββ docs/ # Documentation
βββ scripts/ # Dev tooling
βββ .github/ # CI/CD workflows
FileSight is designed with a local-first, privacy-by-design architecture. This is not a marketing claim β it is enforced by the architecture itself.
- Files never leave your computer. All scanning, analysis, hashing, and processing happens in the Electron main process on your local machine.
- No outbound network requests. The application has zero cloud dependencies. No telemetry, no analytics, no crash reporting, no tracking.
- No account required. There is no registration, login, or user account system.
- User controls every action. Nothing is deleted automatically. All cleanups go through a preview β confirm β trash workflow. Moves to the system Trash are reversible.
- Minimal permissions. The application only reads directories you explicitly select through the native folder picker. No network, camera, microphone, or location permissions are requested.
For full details, see docs/PRIVACY.md and SECURITY.md.
Download the latest release for your platform from the Releases page.
| Platform | Format | Command |
|---|---|---|
| macOS | .dmg |
Open DMG, drag to Applications |
| Windows | .exe |
Run installer |
| Linux | .AppImage |
chmod +x && ./FileSight-*.AppImage |
| Linux | .deb |
sudo dpkg -i FileSight-*.deb |
Requirements: Node.js 18+ and npm 9+.
git clone https://github.com/anomalyco/filesight.git
cd filesight
npm install
# Development mode (Next.js + Electron concurrently)
npm run dev
# Production build + package
npm run dist:mac # macOS DMG
npm run dist:win # Windows NSIS installerSee docs/INSTALLATION.md for detailed setup instructions, development commands, and troubleshooting.
| Command | Output |
|---|---|
npm run dist:mac |
dist/FileSight-*-mac.dmg |
npm run dist:win |
dist/FileSight-*-win.exe |
npm run dist |
Current platform package |
npm run build:next |
out/ (static HTML export) |
npm run build:electron |
electron-dist/ (compiled TypeScript) |
npm test |
Test results (279 tests) |
The build pipeline: Next.js static export β Electron TypeScript compilation β electron-builder packaging. See electron-builder.yml for full configuration.
- File scanning with progress reporting
- Storage insights and analysis
- Smart cleanup suggestions
- File explorer with search, filter, sort
- Duplicate detection (exact, perceptual, document text, filename)
- Download organization assistant with undo
- File preview (images, PDFs, text, audio, video)
- Scan history with trend charts and comparisons
- Settings and preferences
- Onboarding wizard
- Advanced similarity algorithms (video frame comparison, audio fingerprinting)
- Batch organization of multiple folders
- Custom organization rules
- Export reports (PDF, CSV)
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (static export) |
| UI Library | React 19 |
| Desktop | Electron 43 |
| Language | TypeScript 5 |
| Styling | Tailwind CSS 4 |
| State | Zustand 5 |
| Charts | Recharts 3 |
| Icons | Lucide React 1 |
| UI Primitives | Radix UI (dialog, tabs, collapsible, checkbox, scroll-area, progress) |
| Hashing | Node.js crypto (SHA-256) |
| Image Analysis | Sharp (perceptual dHash) |
| Document Parsing | pdf-parse (PDF), mammoth (DOCX) |
| Testing | Vitest (279 tests across 19 test suites) |
| Building | electron-builder 26 |
| Package Manager | npm |
Contributions are welcome and appreciated. See CONTRIBUTING.md for detailed guidelines on:
- Setting up the development environment
- Code style and conventions
- Testing requirements
- Pull request process
Key points:
- TypeScript with strict mode
- Tests required for new functionality
- Run
npm testandnpm run buildbefore submitting - Keep PRs focused on a single concern
MIT β Copyright (c) 2026 FileSight
FileSight is open-source software. See LICENSE for the full license text.
Built with Electron, Next.js, and TypeScript. Runs entirely on your device.
Report a bugΒ Β·Β
Start a discussionΒ Β·Β
Changelog


