mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dev Toolsevaluationupdated 26 Aug 2026

nnn review

nnn is a terminal file manager for browsing, selecting, renaming, moving, and previewing files without leaving the shell. It keeps the core program small, then hands jobs such as remote mounts, rich previews, and uploads to optional plugins and command-line programs.

+18stars / 7d
Verdict

Our nnn run installed in 6 seconds and built in 21 seconds, but its test step stopped with no test target, so the program is easy to compile while the checkout gives a new contributor no passing test command. Use it if you want a fast keyboard file browser and are happy to compose previews and integrations from local tools. Choose a more guided file manager if plugins, terminal protocols, and shell functions sound like chores rather than control.

We ran it

Lab card: what happened when we ran nnnScreenshot of nnn (github.com/jarun/nnn)
Install✓ · 6s
Build✓ · 21s
Tests✗ · 10sran, no count parsed
Repo126 files~17,307 lines of source · 0.9 MB · 2 CI workflows

Answers from our run

Does nnn build from source?

Dependencies installed in 6 seconds, and the build succeeded in 21 seconds. We cloned commit c869e9f into a clean Debian container with 3 CPUs and no project-specific setup.

Do nnn's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use nnn?

Users who want graphical drag, drop, thumbnails, and discoverable menus with no terminal vocabulary: nnn's normal interface is keyboard driven, and the README tells beginners to rely on arrows, /, q, and Tab.

What are the alternatives to nnn?

ranger, lf, Yazi. Our nnn run installed in 6 seconds and built in 21 seconds, but its test step stopped with no test target, so the program is easy to compile while the checkout gives a new contributor no passing test command.

Setup4/5Installed in 6 seconds; shell and preview extras need setup
Docs4/5Clear quick start and feature map, with deeper details in the wiki
Community5/521,835 stars, four open issues and PRs, and an August 2026 push
Maturity4/5v5.3 is current, but the sandbox found no test target

Discussed on

  1. hnNnn – a terminal file manager for programmers298 points
  2. hnShow HN: Nnn – unorthodox terminal file manager123 points
  3. hnFast nnn file browser v1.6 released95 points
  4. hnPerformance of nnn vs. ls84 points
  5. hnFile manager nnn v2.9 – simpler controls, smarter workflows25 points

Who it’s for

Developers and administrators who spend most of the day in a terminal and want file operations beside their shell tools.
Vim users who prefer single-key navigation, filters, sessions, and a file picker that can feed paths to another program.
People maintaining small Linux, BSD, macOS, WSL, Android, or Raspberry Pi systems where a graphical file manager is unnecessary.
Tinkerers willing to assemble previews and other extras from plugins plus tools already installed on the machine.

Who it’s NOT for

Users who want graphical drag, drop, thumbnails, and discoverable menus with no terminal vocabulary: nnn's normal interface is keyboard driven, and the README tells beginners to rely on arrows, /, q, and Tab.
Teams that require a repository test suite to pass in a clean build environment: our test command ended with exit 66 and the log only said no test target.
Anyone expecting rich previews to work as one supported bundle: the README routes extensive media previews through plugins and external programs, while open issues 2130 and 2134 report stale or uncleared preview output in specific Kitty, tmux, and image-tool setups.
People uncomfortable running a downloaded shell script: the beginner quick start presents a curl command piped directly to sh, which should be inspected first in a controlled environment.

Setup reality

Our sandbox installed nnn in 6 seconds and built it in 21 seconds. Tests failed with exit 66 after 10 seconds; the only diagnostic in the supplied log was no test target. The checkout contained 126 files, about 17,307 source lines, and occupied 0.9 MB.

The basic file manager needs no account, API key, database, or network service. Shell integration for changing the parent shell's directory needs a generated function, while previews, mounts, clipboard work, and desktop opening depend on the plugins and command-line programs you choose.

nnn runs across Linux, macOS, BSD, Haiku, Cygwin, WSL, Android through Termux, and desktop-free shells. That range also makes configuration host-specific: openers, terminal image protocols, tmux panes, FUSE tools, and clipboard commands are outside one uniform install path.

The core handles files while plugins handle the fancy parts

nnn is a keyboard-driven file manager for people who already think in shell commands. The core covers navigation, filtering, selection, file operations, sessions, bookmarks, disk usage, and launching another program. It can also act as a picker for an editor or script. Instead of trying to own every workflow, it lets your existing opener, editor, shell, and utilities do their jobs. That is a good fit on remote machines and a distinct taste on a graphical desktop.

The checkout we measured was only 0.9 MB, with 126 files and about 17,307 lines of source. Yet the README lists support for Linux, macOS, BSD, Haiku, Cygwin, WSL, Raspberry Pi, and Termux on Android. Portability is part of the design rather than a packaging afterthought. The BSD-2-Clause license is permissive, and users can compile features in or out when the packaged defaults do not match their terminal.

Four contexts and typed filters replace a mouse-first browser

Navigation centers on filtering the current directory as you type. A unique match can open automatically, and users may choose string, regular-expression, or fuzzy matching. Four contexts work like separate directory workspaces. Sessions and bookmarks cover longer-lived locations, while cd on quit passes the final directory back to the parent shell through a wrapper function. The result is quick once the keys become muscle memory, though first-time users get fewer visual cues than a dual-pane graphical browser provides.

The beginner guide reduces the initial vocabulary to arrows, /, q, and Tab, then offers a shell script that generates the wrapper function. Power users face more choices: desktop or terminal opener, selection syncing, plugins, notification behavior, and environment variables. One instruction pipes a downloaded quick-start script directly into sh. Inspecting that script before execution is the sensible move, especially on an administered workstation.

What happened when we ran it

Our sandbox installed nnn in 6 seconds, then completed the build in 21 seconds. The repository had 2 CI workflow files and no Dockerfile or tests directory. Those signals describe commit c869e9f in a fresh unprivileged container with 3 CPUs and 8 GB of RAM. They show that the main program compiled without a long dependency ceremony. They do not establish whether a distribution package or every optional plugin behaves the same way.

The test step failed after 10 seconds with exit code 66. Its log tail contained no test target and nothing more specific. We cannot turn that line into a claim about broken program behavior, nor does it identify a missing system package. It does mean the command available to our harness did not run a passing suite. Contributors who need regression evidence should inspect the project's CI commands and static-analysis setup instead of treating a successful compile as a test result.

Rich previews depend on the exact terminal and helper chain

Text and directory previews are built in, while broader media handling can involve the preview-tui or preview-tabbed plugins plus tools for images, video, PDF, archives, and terminal graphics. Remote mounts likewise call out to sshfs or rclone. This modular approach keeps the binary focused, but the real setup lives across nnn configuration, plugin files, environment variables, and whatever programs exist on the host. A copied dotfile is not guaranteed to behave identically in Kitty, Konsole, tmux, or a plain SSH session.

Two open reports make that boundary concrete. Issue 2130 describes a frozen video image remaining when preview-tui moves to text or a directory in Kitty on Fedora 44. Issue 2134 reports later previews drawing over earlier ones with img2sixel or chafa in a tmux pane. These are narrow configurations, not proof that previewing is generally broken. They are good reasons to test the precise terminal, multiplexer, and media helpers your team intends to standardize.

v5.3 adds a native preview without replacing plugin workflows

Release v5.3, published August 15, 2026, added a native preview pane for directories and text files, improved fuzzy filtering, lazy-loaded plugins, and changed readline linking to opt-in. It also added safeguards around session headers and long shell arguments. The last push was August 26, and GitHub showed 21,835 stars with 4 combined open issues and pull requests. The issue list was small and recently touched, while that combined count should not be mistaken for 4 confirmed bugs.

The native pane narrows the amount of setup needed for ordinary inspection, but the README still sends richer formats to plugins and external viewers. That division is sensible for a small terminal program. It also explains the buying decision: nnn rewards users who already have preferred Unix tools and want a quick conductor for them. Someone seeking a single package with consistent thumbnails, drag and drop, and graphical settings will spend more time assembling nnn than using it.

nnn is best when the shell is already your desktop

The 6-second install and 21-second build make trying nnn cheap. Its file picker, sessions, contexts, filters, and parent-shell integration solve daily terminal work without introducing an account or background service. The weak spot in our run is verifiability: no test target is too little feedback for a contributor who expects one obvious local quality gate.

For an experienced shell user, that trade is acceptable because the core is focused and current development is visible. Start with packaged defaults and the native preview, then add one plugin only when a real need appears. If your required workflow begins with video thumbnails inside tmux, validate that chain before adopting it across a team; the open preview reports show how quickly the experience can depend on one terminal-specific detail.

Alternatives

ProjectWhat it isPick it when
rangerA Vim-inspired console file manager with a Python configuration and preview system.pick this instead when a three-column browser and Python-based customization feel more natural than nnn's compact interface.
lfA terminal file manager with a server-client design and configurable shell commands.pick this instead when you want a simple ranger-like layout and prefer configuring behavior in lf's command language.
Yazi gh↗An asynchronous Rust terminal file manager with built-in preview-oriented workflows.pick this instead when concurrent file work and a richer default preview experience matter more than a tiny C core.

What people are saying

  1. [velocity-scout] jarun/nnn

Sources

  1. nnn README
  2. nnn repository facts
  3. nnn v5.3 release
  4. Kitty video preview issue 2130
  5. tmux image preview issue 2134

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →