nnn: A Tiny Terminal File Manager That Puts Speed and Privacy First
n The unorthodox terminal file manager. Runs on the Pi, Termux (Android), Linux, macOS, BSD, Haiku, Cygwin, WSL, across DEs or a strictly CLI env.
At a glance
- What is it?
- nnn is a BSD-licensed C file manager that runs almost anywhere, from Termux to Haiku, with a focus on minimal resource use and keyboard-driven workflows. It is not a full-blown file manager with a GUI, but a fast, configurable tool for users who live in the terminal.
- Who is it for?
- Adopt nnn if you are a terminal-centric user who wants a fast, low-memory file manager that works across many platforms, including Android and BSD, and values privacy with no unconfirmed data collection. Skip it if you need a GUI, extensive built-in previews, or a configuration file you can edit; nnn's philosophy is nearly zero-config and plugin-driven.
- Can I use it commercially?
- Yes. BSD-2-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What nnn Actually Solves
nnn targets a specific pain: navigating files in a terminal without the bloat of a full desktop file manager. It is tiny, around 150 KiB, and the README claims it typically uses less than 3.5 MB of resident memory. That makes it suitable for low-resource environments like a Raspberry Pi, an Android phone via Termux, or a headless server. The core problem it solves is efficiency: you can filter, sort, select, and act on files without leaving the keyboard, and it integrates with shell functions to cd on quit. It is not for casual users who prefer mouse clicks; it is for developers, sysadmins, and power users who want a fast, scriptable tool. The project's tagline, 'Supercharge your productivity!', reflects that focus, but the real value is in the resource frugality and the breadth of supported platforms.
How nnn Works: Modes, Contexts, and Filters
The README describes nnn as a full-featured terminal file manager with several distinct modes. The default is 'light' mode, with a 'detail' mode for more information. There is a disk usage analyzer that can show block or apparent usage, which is handy for finding large files. Navigation relies on contexts, which are like tabs or workspaces, each with custom colors. You can have multiple contexts open and switch between them, which is a powerful way to manage different directories simultaneously. Filtering is a major feature: search-as-you-type with fuzzy, regex (POSIX or PCRE2), or string filters. The 'type-to-nav' mode enables turbo navigation, where typing filters and auto-enters on a unique match. Sorting is also flexible, with options for name, time, size, extension, and a natural version sort. The underlying architecture is POSIX-compliant C code, with a focus on integer math and minimal screen refreshes, which explains the low CPU and memory footprint. The README emphasizes that it avoids FPU usage, even for file sizes, which is a notable design choice for older hardware.
Getting Started: Install and Quickstart
Installation is straightforward, with packages available on many distributions and platforms, including Termux and Haiku. The README's quickstart for beginners suggests using the package manager, then running a script to generate a shell function: sh -c "$(curl -Ls https://raw.githubusercontent.com/jarun/nnn/master/misc/quickstart.sh)". This script creates a function that launches nnn with your preferred configuration. For power users, the steps are more granular: install nnn and dependencies, use the -e option to open text files in the terminal, configure cd on quit, sync the subshell PWD, install plugins, and use -x to sync the selection to the clipboard and show notifications. There is no config file; instead, you use environment variables and command-line options. For example, setting NNN_OPENER to nuke with the -c option is recommended for CLI-only environments. The README even suggests aliasing ls to 'nnn -de' to replace ls entirely, though that is a bold move that might not suit everyone.
Plugins and Patches: Extending the Core
nnn's core is deliberately minimal, but the plugin repository adds substantial functionality. The README lists examples: live previews, mounting and unmounting disks, find and list, file/dir diff, and upload files. Plugins are language-agnostic, meaning you can write them in any scripting language, which lowers the barrier for customization. There is also a patch framework for user-submitted patches that are 'subjective in nature', meaning they are not merged into the main binary but can be applied selectively. This is a double-edged sword: you get flexibility, but you must manage patches yourself, and they may break with updates. The plugin installation is not detailed in the README, but the wiki and plugins directory provide instructions. For previews, there are FIFO-based previewer plugins with extensive mime support, and a built-in previewer for directories and text files. This modular approach means you can keep the core lean and add only what you need, but it also means you need to invest time in setup.
Limitations and Failure Modes
nnn is not a GUI file manager, and that is a limitation for some. It has a learning curve, with many keyboard shortcuts and options; the README says 'Don't memorize! Arr...' but the truncated text suggests there is a cheat sheet. The lack of a config file means you rely on environment variables and command-line flags, which can be less discoverable than a config file. Another limitation is that many advanced features require plugins or patches, which are not part of the core binary. For example, live previews are not built-in, and you need to install a plugin. The README also mentions that nnn is 'privacy-aware' with 'no unconfirmed user data collection', but that is a claim you must verify by reading the source. The project runs on many platforms, but not all features work everywhere; for instance, remote mounts need sshfs or rclone, and archive creation needs FUSE. If you are on a system without those dependencies, those features will not work.
Alternatives: ranger and lf
The most common alternative is ranger, a Python-based file manager with a similar terminal-oriented approach. ranger has a built-in preview system and a configuration file, which makes it more feature-rich out of the box but also heavier, consuming more memory and CPU. lf is another alternative, written in Go, which is also minimalist but uses a different configuration syntax and has a focus on client-server architecture. The key difference is that nnn emphasizes low resource usage and a nearly zero-config philosophy, while ranger offers more immediate functionality at the cost of performance. lf is closer to nnn in spirit but has a smaller plugin ecosystem. The choice depends on your priorities: if you want the fastest, lightest tool, nnn is a strong candidate; if you want built-in previews and a config file, ranger might be easier. The README does not mention these alternatives, but they are well-known in the terminal file manager space.
Maintenance and License
The project is actively maintained, with the latest release v5.3 'Mai Tai' pushed on 2026-08-15, following v5.2 'Blue Hawaii' and v5.1 'Moscow Mule'. The release names follow a cocktail theme, which is a fun touch. The primary language is C, and the license is BSD-2-Clause, which is permissive and allows commercial use with attribution. The repository is not archived, and the default branch is master. The README mentions that the code is POSIX-compliant and follows the Linux kernel coding style, which suggests a high standard for maintainability. However, the maintenance cost for users is in keeping up with plugins and patches, as they may need updates when the core changes. The static binary option is a plus for portability, as you can run nnn without installation on a new system. The project has a wiki with troubleshooting pages, which is a good sign for community support, but the README is the primary source of documentation.
Editorial conclusion
Adopt nnn if you are a terminal-centric user who wants a fast, low-memory file manager that works across many platforms, including Android and BSD, and values privacy with no unconfirmed data collection. Skip it if you need a GUI, extensive built-in previews, or a configuration file you can edit; nnn's philosophy is nearly zero-config and plugin-driven. Before adopting, verify that your required features, such as live previews or archive mounting, are available through plugins or patches, and test the quickstart script in a sandbox to see the default keybindings. Also check the package version in your distro, as the latest release v5.3 may not be packaged everywhere. The project is actively maintained, with recent releases in 2026, so you can expect ongoing fixes and new features.
Community notes