nnn is a free, open source system cleanup & optimization project written in C and released under BSD-2-Clause. It has 21,895 GitHub stars, 817 forks and 1 open issues, and was last pushed 2 days ago. On this registry it ranks #2 of 12 tracked projects in System Cleanup & Optimization, with 5 head-to-head comparisons available.

What is nnn?

nnn (n³) is a tiny, nearly zero-config terminal file manager written in C and released under the BSD-2-Clause licence, built for developers, sysadmins, and command-line users who want fast filesystem browsing, disk usage analysis, batch renaming, and file picking without leaving the shell.

What it is

nnn is a full-featured terminal file manager that lives in the command-line ecosystem. The binary is roughly 150 KiB, typically uses less than 3.5 MB of resident memory, performs all arithmetic with integers rather than floating point, and ships with no configuration file — sensible defaults apply immediately, and features and dependencies can be compiled in or out. It is POSIX-compliant, follows the Linux kernel coding style, and runs on Linux, macOS, BSD, Haiku, Cygwin, WSL, the Raspberry Pi, and Termux on Android, across desktop environments or a strictly CLI environment.

The concrete problem it solves is the ad-hoc shell workflow of chaining ls, cd, cp, mv and rm calls to browse, select, and act on files. nnn gathers those operations into a single keyboard-driven interface: it analyzes disk usage, batch renames selections, launches applications, and acts as a file picker for other programs. Remote directories can be reached through mounts that require sshfs or rclone, and shell integration is easy because nnn can cd on quit. Where the built-in feature set ends, a plugin repository adds live previews, disk (un)mounting, find-and-list, file and directory diffs, and uploads, while a patch framework hosts sizable user-submitted patches that are subjective in nature.

Key capabilities

  • Disk usage analyzer in block or apparent size, alongside light (default) and detail view modes.
  • Search-as-you-type filtering with fuzzy, regex (POSIX or PCRE2), and string (default) matching, plus a subtree search plugin for opening or editing files.
  • Sorting by name, access, change, or modification time, size, and extension, with numeric-name ordering by default, a case-insensitive natural sort, reverse sort, and directory-specific ordering.
  • Built-in previewer for directories and text files, FIFO-based previewer plugins with extensive mime support, and a plugin for image, video, and audio thumbnails.
  • Contexts, which act as tabs or workspaces with custom colors, plus sessions and bookmarks for marking and revisiting directories.
  • Archives can be created, listed, extracted to, and mounted through FUSE, and selected file paths can be copied to the system clipboard.
  • Convenience operations include batch renamer, cross-directory file and range selection, create-with-parents, duplicate, link, copy-as and move-as, FreeDesktop-compliant trash integration, and completion notifications on cp, mv, and rm.

Who uses it and how

  • Vim and Neovim users integrate it through nnn.vim, nnn.nvim, and a vim-floaterm nnn wrapper, using it as a file picker inside an editing session.
  • Operators on memory-constrained or small-screen hardware, such as Raspberry Pi boards and phones running Termux, use the single-column mode, 8-color and xterm-256 support, and handheld-friendly shortcuts.
  • Remote work is handled by mounting directories over sshfs or rclone and operating on them as if they were local.
  • Users who want a fixed setup can compile features in or out, back up configuration with a plugin, and either install through the many packagers that carry nnn or run a static binary with no installation step.
  • Programs and plugins feed file lists in through stdin or a plugin interface, letting nnn act as the selection layer for another tool.

Getting started

Install the nnn package from the distribution's packager — it is widely available — or download the static binary and run nnn directly, since no installation and no configuration file are required.

How it compares

The facts name no competing file managers or paid products, so nnn stands alone in this registry. The only related projects listed are integrations rather than alternatives: nnn.vim, the vim-floaterm nnn wrapper, and nnn.nvim embed it inside an editor instead of replacing it.

When to use it — and when not to

A self-hoster must supply external tools for specific features: remote mounts need sshfs or rclone, and mounting archives uses FUSE. Anyone who wants a graphical file manager, a configuration file with elaborate theming out of the box, or a GUI-driven workflow should look elsewhere, because nnn is deliberately terminal-first and no-config. The main risk to weigh is simply that its minimalism is the point — extension beyond the core depends on plugins, patches, and compile-time choices rather than on a large built-in surface.

project readme (upstream, from github) — read inline


nnn - Supercharge your productivity!

Latest release Availability Circle CI Status GitHub CI Status Privacy Awareness License

[Features] $~~$ [Quickstart] $~~$ [Plugins] $~~$ [Wiki]

nnn () is a full-featured terminal file manager. It's tiny (~150 KiB), nearly 0-config and incredibly fast.

It is designed to be unobtrusive with smart workflows to match the trains of thought.

nnn can analyze disk usage, batch rename, launch apps and pick files. The plugin repository has tons of plugins to extend the capabilities further e.g. live previews, (un)mount disks, find & list, file/dir diff, upload files. A patch framework hosts sizable user-submitted patches which are subjective in nature.

Independent (neo)vim plugins - nnn.vim, vim-floaterm nnn wrapper and nnn.nvim (neovim exclusive).

Runs on the Pi, Termux (Android), Linux, macOS, BSD, Haiku, Cygwin, WSL, across DEs or a strictly CLI env.

(more use cases)

Live demo by Demoshell

Features

  • Quality
    • Privacy-aware (no unconfirmed user data collection)
    • POSIX-compliant, follows Linux kernel coding style
    • Highly optimized, static analysis integrated code
  • Frugal
    • Typically needs less than 3.5MB resident memory
    • Works with 8 colors (and xterm 256 colors)
    • Disk-IO sensitive (few disk reads and writes)
    • No FPU usage (all integer maths, even for file size)
    • Minimizes screen refresh with fast line redraws
    • Tiny binary (typically around 100KB)
    • 1-column mode for smaller terminals and form factors
    • Hackable - compile in/out features and dependencies
  • Portable
    • Language-agnostic plugins
    • Static binary available (no need to install)
    • Minimal library deps, easy to compile
    • No config file, minimal config with sensible defaults
    • Plugin to backup configuration
    • Widely available on many packagers
    • Touch enabled, handheld-friendly shortcuts
    • Unicode support
  • Modes
    • Light (default), detail
    • Disk usage analyzer (block/apparent)
    • File picker, (neo)vim plugin
  • Navigation
    • Filter with automatic dir entry on unique match
    • Type-to-nav (turbo navigation/always filter) mode
    • Jump to an entry with visible relative offset
    • Contexts (aka tabs/workspaces) with custom colors
    • Sessions, bookmarks, mark and visit a dir
    • Remote mounts (needs sshfs, rclone)
    • Familiar shortcuts (arrows, ~, -, @), quick look-up
    • cd on quit (easy shell integration)
    • Proceed to next file on file open and selection
  • Search
    • Instant filtering with search-as-you-type
    • Fuzzy, regex (POSIX/PCRE2) and string (default) filters
    • Subtree search plugin to open or edit files
  • Sort
    • Ordered pure numeric names by default (visit /proc)
    • Case-insensitive version (aka natural) sort
    • By name, access/change/mod (default) time, size, extn
    • Reverse sort
    • Directory-specific ordering
  • Mimes
    • Built-in previewer for directory and text files
    • FIFO-based previewer plugins with extensive mime support
    • Open with desktop opener or specify a custom opener
    • File-specific colors (or minimal dirs in context color)
    • Icons and Emojis support (customize and compile-in)
    • Plugin for image, video and audio thumbnails
    • Create, list, extract (to), mount (FUSE based) archives
    • Option to open all text files in $EDITOR
  • Convenience
    • Detailed file stats and mime information
    • Run plugins and custom commands with hotkeys
    • FreeDesktop compliant trash utility integration
    • Cross-dir file/all/range selection
    • Create (with parents), rename, duplicate files and dirs
    • Create new file or directory (tree) on startup
    • Batch renamer for selection or dir
    • List input stream of file paths from stdin or plugin
    • Copy (as), move (as), delete, archive, link selection
    • Easily copy, move paths in system clipboard to current dir
    • Dir updates, notification on cp, mv, rm completion
    • Copy file paths to system clipboard on select
    • Launch apps, run commands, spawn a shell, toggle exe
    • Access context paths/files at prompt or spawned shell
    • Lock terminal after configurable idle timeout
    • Capture and show output of a program in help screen
    • Basic support for screen readers and braille displays

Quickstart

Beginners

  1. Install nnn, preferbly using the package manager.
  2. Run the following command to generate (and optionally add to your rc file) a shell function to start with.
    sh -c "$(curl -Ls https://raw.githubusercontent.com/jarun/nnn/master/misc/quickstart.sh)"
    

Use the shell function name you chose to run nnn with your preferred configuration.

Power users

  1. Install nnn and the dependencies you need.
  2. Install plugins.
  3. Configure cd on quit.
  4. The desktop opener is default. Use -e to open text files in the terminal. Optionally open detached.
  5. In a CLI environment, set NNN_OPENER to nuke. Use option -c. For GUI apps, consider xopen.
  6. Sync subshell $PWD to nnn.
  7. Use -x to sync selection to clipboard, show notis on cp, mv, rm and set xterm title.
  8. Bid ls goodbye! alias l='nnn -dDe' :sunglasses:
  9. Visit the Live previews and Troubleshooting Wiki pages.

Don't memorize! Arrows, /, q suffice. Tab creates and/or cycles contexts. ? lists shortcuts.

Wiki

Videos

Elsewhere

readme truncated — read the full docs on github

Frequently asked questions

Is nnn free to use?

nnn is open source under the BSD-2-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does nnn do?

n³ The unorthodox terminal file manager

What is nnn written in?

nnn is primarily written in C. Its source is publicly available at https://github.com/jarun/nnn, and it has 21,895 GitHub stars.