Project Overview
Files is an open-source file manager for Windows, written in C# on WinUI 3 and maintained by the files-community organization under the MIT license. It covers everything File Explorer does — browsing, copying, moving, renaming, deleting — and adds the workflow features Explorer never grew into: a real tab strip, dual-pane browsing, color-coded file tags, inline Git information, built-in archive handling, and a themeable interface that follows the Windows 11 design language.
You can use it as your daily file manager on Windows 10 or 11 today. This is not an experimental side project: it has a multi-year release history, an active contributor base, and over 43,000 GitHub stars as of 2026-06-12. The MIT license means you can use and redistribute it commercially without restrictions.
One hard boundary up front: Files is Windows-only. The UI is built on the Windows App SDK, so there is no macOS or Linux build and no realistic path to one. If you need cross-platform, start with Double Commander or Spacedrive instead.
Key Challenges Addressed
- One folder per window. Explorer's tabs arrived late and stay minimal. Files gives you a full tab strip with drag-to-reorder, duplicate tab, and reopen-closed-tab, so a multi-folder reorganization stays in one window.
- Two-folder file shuffling. Copying between folders in Explorer means juggling windows. Files has a dual-pane mode: two independent panes side by side with drag and drop between them.
- No metadata layer. Explorer organizes by folder hierarchy and nothing else. Files adds color-coded tags, so a file can belong to more than one grouping without being duplicated, and tags get their own sidebar section for browsing.
- Archives as a separate tool. Files creates and extracts archives natively, so zip and 7z handling doesn't depend on a third-party context-menu extension.
- Repositories are opaque in a file manager. Inside a Git repository, Files shows the current branch and per-file status, so you can see what changed before you switch to a terminal.
Getting Started
You have three install paths: the Microsoft Store, winget, or the classic installer from the official site at https://files.community. Use winget:
winget install --id FilesCommunity.Files -e
Launch Files, pin it to the taskbar, and browse a few folders. The defaults are sensible; you don't need to configure anything to get tabs and layouts working.
Sharp edges you'll hit immediately:
- The Microsoft Store listing is paid — that's how the project funds development, not a different app. If you don't want to pay, the winget package and the classic installer from files.community are free and functionally identical. Install the free path first; buy the Store version later if you want to support the project.
- If you enable "Set Files as the default file manager" (Settings → Advanced) and later uninstall the app without flipping the toggle off, folder-open actions keep routing to a handler that no longer exists and double-clicking folders fails until you repair the association. Disable the toggle before uninstalling, every time.
- Files cold-starts slower than Explorer because explorer.exe is always resident in memory as the Windows shell. Keep Files running and pinned instead of launching it per use, and the difference disappears.
Features and Use Cases
Layouts that match the task. Files ships Details, Grid, Tiles, and a Columns layout, and it remembers layout per folder. Use Details with the Git column for repositories, Grid for image folders, and Columns when you're navigating deep trees and want the full path visible at once.
Tabs and dual pane together. Open each active project in its own tab, then split any tab into dual panes when you need to move files between two locations. Sorting a messy Downloads folder into project directories is a one-window job: Downloads on the left pane, destination on the right, drag and drop.
Tags as a second axis of organization. Assign color-coded tags from the context menu and browse by tag from the sidebar. Tag in-progress client work across scattered folders and you can pull it all up in one view without restructuring directories.
Git awareness. Inside a repository, Files shows the current branch and per-file status. It won't replace your terminal or Git client, but it answers "what did I touch in here?" without leaving the file manager.
Archives without a second tool. Create and extract zip and 7z archives directly from the context menu. For routine compress-and-send work you stop needing a separate archiver install.
Cloud and remote locations. When OneDrive, Google Drive, or Dropbox sync clients are installed, their folders surface in the sidebar. You can also connect to FTP locations by entering an ftp:// address in the path bar.
Ecosystem and Dependencies
Files sits on the current Microsoft desktop stack, which is most of why it feels native:
- Windows App SDK and WinUI 3 provide the XAML UI layer, which gets you OS-consistent theming, dark mode, and native controls without an Electron-style memory tax.
- CommunityToolkit supplies the MVVM plumbing the codebase is organized around.
- FluentFTP backs the FTP support.
- Archive handling builds on the 7-Zip engine rather than a custom implementation.
- Installed cloud sync clients (OneDrive, Google Drive, Dropbox) are detected and surfaced as sidebar entries, and folders open in Windows Terminal from the context menu.
Files also loads shell context-menu extensions, so tools you've installed system-wide still appear. Some legacy extensions render differently than they do in Explorer — if a context-menu tool misbehaves, test it in Explorer to confirm whether the bug is in Files or the extension.
Architectural Overview
The app is a WinUI 3 XAML front end organized with MVVM: views bind to view models, and file operations live in injected services. That separation is what keeps a large community codebase reviewable — contributors can change a service implementation without touching XAML.
The part worth understanding is the storage layer. Windows offers two file APIs: the WinRT StorageFile layer, which marshals calls through a broker and is slow on bulk operations, and direct Win32 file APIs, which are fast. Files routes hot paths — directory enumeration, bulk copies — through Win32 rather than WinRT, which is why large-directory listing stays responsive in an app-store-style app.
Long-running operations (big copies, extractions) run as background tasks with progress reported in an ongoing-tasks flyout, so a slow transfer doesn't freeze the window you're navigating in.
The trade-off in this design: Files inherits the Windows App SDK release cycle. When the platform layer has a rendering or lifecycle bug, Files has to wait on Microsoft's fix or work around it.
Pros and Cons
Pros:
- MIT license with no commercial-use strings attached.
- Native Windows 11 look with dark mode and theming, without Electron overhead.
- Tabs, dual pane, and a Columns layout in one tool — Explorer still offers only basic tabs.
- Tags and Git status add organization and repo awareness Explorer doesn't have.
- Built-in archive creation and extraction removes a third-party dependency.
- Active development with a steady release cadence.
Cons:
- Windows-only by architecture, not by roadmap gap.
- Slower cold start than Explorer, since Explorer is always resident as the shell.
- Windows App SDK dependency means upstream platform bugs surface in the app and fixes wait on Microsoft's cycle.
- The paid Microsoft Store listing confuses newcomers who don't know the winget and classic installers are free.
- Keyboard-driven power workflows are weaker than orthodox managers like Far Manager or Double Commander.
Comparison and Alternatives
GitHub stars
Weekly star gains
Full metrics details
GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.
Files
GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.
180 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.
164 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.
179 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub GraphQL current stargazer cohort, reconstructed from starredAt events and totalCount retrieved in one stable pagination walk. GitHub does not expose historical unstar events, so this is not an exact ledger of past star counts.
167 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Issues opened
Weekly total
Full metrics details
GitHub API observation. Historical values render only when the source provides a real observation for that day.
Files
GitHub API observation. Historical values render only when the source provides a real observation for that day.
178 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Issues closed
Weekly total
Full metrics details
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
Files
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
178 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Pull requests opened
Weekly total
Full metrics details
GitHub API observation. Historical values render only when the source provides a real observation for that day.
Files
GitHub API observation. Historical values render only when the source provides a real observation for that day.
178 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Pull requests closed
Weekly total
Full metrics details
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
Files
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
178 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Pull requests merged
Weekly total
Full metrics details
GitHub API observation. Historical values render only when the source provides a real observation for that day.
Files
GitHub API observation. Historical values render only when the source provides a real observation for that day.
178 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub API observation. Historical values render only when the source provides a real observation for that day.
142 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Open/closed pull request ratio
Weekly average
Full metrics details
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
Files
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
180 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
164 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
179 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub Search pull-request totals queried for exact UTC days; rolling values are sums of proven daily counts.
167 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Open/closed issues ratio
Weekly average
Full metrics details
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
Files
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
180 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
164 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
179 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub Search issue totals queried for exact UTC days; rolling values are sums of proven daily counts.
167 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Releases
Weekly total
Full metrics details
GitHub release published_at events bucketed by UTC day; drafts are excluded.
Files
GitHub release published_at events bucketed by UTC day; drafts are excluded.
180 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Double Commander
GitHub release published_at events bucketed by UTC day; drafts are excluded.
164 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Far Manager
GitHub release published_at events bucketed by UTC day; drafts are excluded.
179 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Xplorer
GitHub release published_at events bucketed by UTC day; drafts are excluded.
167 observed daily rows. Missing days are not fabricated.
| Date | Value |
|---|
Hotness score
Weekly average
Full metrics details
Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.
Files
Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.
180 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.
- Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
- Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
- Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
- Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
- Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
- Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
| Date | Stars | Stars 1d | Stars 7d | Stars 14d | Stars 30d | Stars 90d | Same-day multiplier | Weekly multiplier | Fortnight multiplier | Hot today | Hot week | Breakout | Stored score |
|---|
Double Commander
Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.
164 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.
- Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
- Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
- Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
- Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
- Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
- Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
| Date | Stars | Stars 1d | Stars 7d | Stars 14d | Stars 30d | Stars 90d | Same-day multiplier | Weekly multiplier | Fortnight multiplier | Hot today | Hot week | Breakout | Stored score |
|---|
Far Manager
Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.
179 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.
- Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
- Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
- Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
- Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
- Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
- Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
| Date | Stars | Stars 1d | Stars 7d | Stars 14d | Stars 30d | Stars 90d | Same-day multiplier | Weekly multiplier | Fortnight multiplier | Hot today | Hot week | Breakout | Stored score |
|---|
Xplorer
Derived only from GitHub GraphQL starredAt events after daily star totals are reconciled.
167 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.40 × Hot today + 0.40 × Hot week + 0.20 × Breakout.
- Same-day multiplier = stars 1d ÷ max(1, stars 7d ÷ 7)
- Weekly multiplier = stars 7d ÷ max(1, stars 30d ÷ 30 × 7)
- Fortnight multiplier = stars 14d ÷ max(1, stars 90d ÷ 90 × 14)
- Hot today = clamp(70 × log-scale(stars 1d, 1000) + 30 × breakout-scale(same-day, 4))
- Hot week = clamp(75 × log-scale(stars 7d, 5000) + 25 × breakout-scale(weekly, 3))
- Breakout = clamp(35 × breakout-scale(same-day, 4) + 40 × breakout-scale(weekly, 3) + 25 × breakout-scale(fortnight, 2.5))
| Date | Stars | Stars 1d | Stars 7d | Stars 14d | Stars 30d | Stars 90d | Same-day multiplier | Weekly multiplier | Fortnight multiplier | Hot today | Hot week | Breakout | Stored score |
|---|
Reliability score
Weekly average
Full metrics details
Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.
Files
Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.
180 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.
- Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
- Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
- Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
- Support burden = 100 − 2 × open issues per 1,000 stars
- Liveness = 100 × exp(−pushed days ago ÷ 120)
Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.
| Date | Issues opened | Issues closed | PRs opened | PRs merged | Releases | Stars | Open issues | Pushed days ago | Continuity | Closure | Shipping | Liveness | Support burden | License | Observed days | Missing days | Needs healing | Stored score |
|---|
Double Commander
Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.
164 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.
- Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
- Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
- Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
- Support burden = 100 − 2 × open issues per 1,000 stars
- Liveness = 100 × exp(−pushed days ago ÷ 120)
Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.
| Date | Issues opened | Issues closed | PRs opened | PRs merged | Releases | Stars | Open issues | Pushed days ago | Continuity | Closure | Shipping | Liveness | Support burden | License | Observed days | Missing days | Needs healing | Stored score |
|---|
Far Manager
Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.
179 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.
- Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
- Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
- Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
- Support burden = 100 − 2 × open issues per 1,000 stars
- Liveness = 100 × exp(−pushed days ago ÷ 120)
Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.
| Date | Issues opened | Issues closed | PRs opened | PRs merged | Releases | Stars | Open issues | Pushed days ago | Continuity | Closure | Shipping | Liveness | Support burden | License | Observed days | Missing days | Needs healing | Stored score |
|---|
Xplorer
Derived from the displayed continuity, closure, shipping, liveness, and support-burden components.
167 observed daily rows. Missing days are not fabricated.
Per-day formula: 0.30 × Continuity + 0.30 × Closure + 0.20 × Shipping + 0.10 × Liveness + 0.10 × Support burden.
- Continuity = 35% active ratio 90d + 20% active ratio 30d + 15% PR efficiency 90d + 10% PR efficiency 30d + 10% liveness + 10% observed-history coverage
- Closure = 55% PR merge efficiency 90d + 45% issue close efficiency 90d
- Shipping = 100 × (20% × release ratio 30d + 30% × release ratio 90d + 50% × release ratio 180d); ratios are releases ÷ 2, 6, and 12, capped at 1
- Support burden = 100 − 2 × open issues per 1,000 stars
- Liveness = 100 × exp(−pushed days ago ÷ 120)
Stars, issues, pull requests, and releases are daily observations. Pushed-days and license are repository snapshot-derived inputs and are not independent historical GitHub events.
| Date | Issues opened | Issues closed | PRs opened | PRs merged | Releases | Stars | Open issues | Pushed days ago | Continuity | Closure | Shipping | Liveness | Support burden | License | Observed days | Missing days | Needs healing | Stored score |
|---|
Explorer++ is the lightweight pick: a portable Win32 tabbed file manager with a tiny footprint and no install required. It looks dated and has no tags or Git integration, but it runs from a USB stick and starts instantly.
Double Commander is an orthodox dual-pane manager in the Total Commander tradition, cross-platform across Windows, Linux, and macOS, with plugins, batch rename, and deep keyboard support. The UI is utilitarian, but for bulk file operations it out-powers Files.
Far Manager is a keyboard-driven text-mode manager with a large plugin ecosystem. The learning curve is steep, but once the keybindings are in muscle memory it's the fastest option here for pure file manipulation.
Spacedrive takes a different angle: a Rust-based cross-platform explorer that indexes files across devices into one library. It's earlier-stage than the others — check its commit activity and release cadence before adopting it for daily work.
Xplorer is a Tauri-based cross-platform explorer that drew attention early but has seen little development activity in recent history. Check the commit log before depending on it; treat it as a reference implementation, not a daily driver.
| Project | Repo | Hotness (~6mo) | PRs merged (~6mo) | Star growth (~6mo) |
|---|---|---|---|---|
| Files | https://github.com/files-community/Files | 56.68 | 66 | 3933 |
| Explorer++ | https://github.com/derceg/explorerplusplus | metrics pending | 0 | 23 |
| Double Commander | https://github.com/doublecmd/doublecmd | metrics pending | 0 | 35 |
| Far Manager | https://github.com/FarGroup/FarManager | metrics pending | 0 | -3 |
| Spacedrive | https://github.com/spacedriveapp/spacedrive | metrics pending | 0 | metrics pending |
| Xplorer | https://github.com/kimlimjustin/xplorer | metrics pending | 0 | 24 |
The best overall alternative is Double Commander: it's mature, actively maintained, runs on all three desktop platforms, and its plugin and documentation ecosystem runs deeper than any other open-source file manager listed.
Conclusion
If you're a Windows developer or power user who wants tabs, dual-pane copying, tags, and Git status in one tool, install Files and make it your daily file manager — it's the most polished open-source Explorer replacement you can run today. The official documentation at https://files.community/docs covers every setting and shortcut. You lose nothing by running it alongside Explorer.
Do not enable "Set Files as the default file manager" and then uninstall the app without flipping the toggle off first — the folder-open association keeps pointing at the missing handler and double-clicking folders breaks until you repair it. Do this first: run winget install --id FilesCommunity.Files -e and drive Files side by side with Explorer for a week before touching any default-handler settings.
