File Management

nnn vs Yazi: terminal file manager showdown in 2026

nnn is the legendary minimalist; Yazi is the modern Rust challenger. After a year of running both, here's the honest comparison.

Honam Kang5 min read

nnn and Yazi are the two leading terminal file managers in 2026. They both occupy the "modern minimal terminal file manager" niche but they diverged on key design choices. Here's the head-to-head.

TL;DR

  • Yazi for new users in 2026 — smoother defaults, async-first, image preview included.
  • nnn for users who want the smallest possible binary or have existing shell-script plugin investment.
  • Both are excellent; the choice is more about taste than capability.

Side-by-side

Axis nnn Yazi
Implementation C Rust
Binary size <50KB ~3-5MB
Memory at idle <5MB ~20MB
Preview engine Synchronous + plugin externalize Async, built-in plus plugins
Image preview Plugin (chafa/w3m), fragile setup Sixel/Kitty/iTerm2, just works
Layout Single context (4 workspaces) 3-column Miller (parent/current/preview)
Plugin system Shell scripts Lua, sandboxed
Tabs 4 workspaces Tabs
Config nnnrc env vars yazi.toml + keymap.toml
Theming Limited Full theme system
Cross-platform Linux, macOS, BSD Linux, macOS, BSD, Windows
First release 2014 2023

Where nnn wins

Smaller footprint

50KB binary, <5MB memory. Yazi at 3-5MB and 20MB respectively is small but not nnn-tiny.

For ARM SBCs, ancient hardware, or "I only have 200MB free on this server" situations, nnn wins.

Mature plugin ecosystem

nnn has a broader collection of community plugins than Yazi (still). Years of accumulation. Niche use cases (browse Android ADB, decrypt-on-fly, weird format viewers) often have nnn plugins that don't yet exist for Yazi.

Shell-script plugin authoring

nnn plugins are shell scripts. Quick to write, port, modify. Yazi plugins are Lua — more powerful but more setup.

For "I want to bind a key to this 3-line shell command" — nnn is faster.

Predictable, blocking model

When you select a file in nnn, the operation blocks until done. This is sometimes a feature — you know exactly when something completed. Yazi's async model can feel unpredictable to users who liked the explicit blocking.

Default keybindings

nnn's default keys are vim-like and minimal. Yazi's defaults are more complex (more features → more keys).

Where Yazi wins

Async preview

Yazi loads previews on a background thread. Selecting a 50MB PDF doesn't block; the preview appears when ready. nnn either skips preview or blocks.

For browsing media-heavy directories, Yazi's UX is qualitatively better.

Image preview that just works

Yazi handles image preview via Sixel/Kitty/iTerm2 protocols natively. Install Yazi, open it in iTerm2 (or Kitty/WezTerm), images render in the terminal. No plugin, no chafa, no configuration.

nnn's image preview requires installing chafa or w3mimgdisplay and configuring the plugin. The result is fragile across terminal versions.

Modern plugin system

Yazi's Lua plugins are sandboxed, type-checked, debuggable. The development experience is closer to writing a small program than chaining shell scripts.

For complex plugins (custom previewer for a proprietary format, integration with a remote API), Yazi's model wins.

3-column Miller layout

Yazi's parent / current / preview layout flows naturally. ranger users will recognize it. nnn shows one context at a time (with workspaces toggleable), which is a different navigation feel.

Active development

Yazi ships features monthly. nnn is more mature; updates are rarer. Both are alive but Yazi is the more dynamic project right now.

Cross-platform consistency

Yazi runs on Linux, macOS, BSD, and Windows (native). nnn doesn't have first-class Windows support.

For developers who hop between OSes, Yazi is more portable.

Better defaults

Yazi out-of-the-box is more polished — better preview, prettier theme, more sensible keybindings. nnn out-of-the-box is more spartan.

Where they're tied

  • Both vim-influenced keybindings.
  • Both serious about minimalism (relative to ranger / mc).
  • Both free, open-source, BSD/MIT-style licensed.
  • Both fast.

Use case routing

Workflow Pick
New to terminal file managers in 2026 Yazi
Existing nnn user, customized nnn
Need image preview on first run Yazi
Tiniest possible footprint nnn
Lua-curious, want to write plugins Yazi
Shell-script-pipeline integration nnn
Cross-platform (incl. Windows) Yazi
4-workspace toggle navigation nnn
Miller column flow Yazi (or ranger)

What about ranger and mc?

For completeness:

  • ranger is older, Python-based, slower than Yazi but feature-rich. Used to be default; in 2026 most new users go to Yazi.
  • mc (Midnight Commander) is the dual-pane commander-style terminal app. Different philosophy entirely (Norton Commander descendant). Active but in a different niche.

If you specifically want commander-style 2-pane in a terminal, mc. If you want Miller flow, Yazi or ranger. If you want minimal-vim-style, nnn.

What about mq-dir for terminal users?

mq-dir is a GUI app, not a terminal one. It's not in this comparison.

But for the developer asking "I love nnn for SSH but want a GUI for local Mac work" — mq-dir is the GUI complement most heavy users settle on. Run mq-dir locally, run nnn or Yazi when SSH'd into a server.

Verdict

For new users in 2026: Yazi. Better first-run experience, async preview, modern plugin system, cross-platform.

For existing nnn users with customized setups: stay on nnn. Your config and muscle memory are real investments. Yazi's advantages don't justify migration unless you specifically need image preview or want Lua plugins.

For users who want both: install both.

brew install nnn yazi

They both fit in <30MB total and there's no conflict. Use whichever opens faster in your hand.

mq-dir is the GUI complement for Mac users; both nnn and Yazi pair with it cleanly.

Open source

mq-dir is fully open source.

MIT licensed, zero telemetry. Read the source, file an issue, send a PR.

★ Star on GitHub →

Frequently asked questions

No, they're philosophically different. nnn is C-minimal: tiny binary, shell-script plugins, externalize-everything design. Yazi is Rust-modern: async-first, Lua plugins, batteries-included previews. Yazi feels closer to ranger; nnn feels closer to mc.

References

  1. [1]
  2. [2]

Ready to try mq-dir?

A native quad-pane file manager built for AI multi-tasking on macOS. Free, MIT licensed, zero telemetry.

v0.1.0-beta.11 · MIT · macOS 14.0+ · github