TopGit
GitHub Repo Review

Yazi Terminal File Manager: Fast, Async, Built in Rust

sxyazi/yazi
YTopGit review image for sxyazi/yazi
Review by Topgit.dev for sxyazi/yazi, with GitHub repository stats and README context.
Quick verdict

Yazi is a terminal file manager written in Rust that keeps every I/O operation asynchronous, so browsing large directories or loading image previews doesn't freeze the interface. It calls itself a public beta still taking breaking changes. Switching makes sense if you want inline image previews and plugin-driven customization without leaving the terminal; wait if you need a config that won't change under you.

Stars
★ 41.1k
Forks
⑂ 971
Language
Rust
License
MIT
Topic
Automation
Updated
Aug 2026
Homepage
GitHub

What is Yazi?

Yazi (the name means "duck") is a terminal file manager built in Rust around non-blocking async I/O, so file operations and previews run without stalling the main thread. It renders images directly in the terminal via protocols like Kitty's graphics protocol, iTerm2's inline images, and Sixel, falling back to Überzug++ or Chafa where a terminal lacks native support. A built-in package manager also installs and pins its Lua-based plugins.

Core features that set Yazi apart

  • Async I/O core: every file operation and CPU-bound task runs off the main thread, with real-time progress updates and task cancellation, per the README's async task scheduler description.
  • Multi-protocol image preview built in for terminals like Kitty, iTerm2, WezTerm, and Windows Terminal, with Überzug++ or Chafa as fallbacks for X11/Wayland and unsupported terminals.
  • Lua-based concurrent plugin system covering UI overrides, custom previewers, preloaders, spotters, and fetchers.
  • Built-in package manager for installing, updating, or pinning plugins and themes to a specific version.
  • A client-server data distribution layer that syncs state across multiple Yazi instances without running a separate server process.
  • Direct shell-outs to ripgrep, fd, fzf, and zoxide instead of reimplementing search and jump logic.
  • Bulk rename, archive extraction, visual-mode selection, and a trash bin built into core navigation.
  • Vim-like input, pick, confirm, and notify UI components, with cd-path autocompletion.
How this repository's GitHub stars have grown over time. Source: star-history.com.View the star history

What you can do with Yazi

  • Browsing and previewing images, PDFs, archives, and code inline without opening a separate viewer.
  • Managing files over a remote or virtual filesystem through Yazi's custom VFS provider support.
  • Jumping into a project directory with zoxide and filtering results with fzf inside the same session.
  • Using Yazi as a terminal-native file picker alongside Neovim, which is listed among the project's own GitHub topics.
  • Bulk-renaming a batch of files or extracting an archive without leaving the terminal.

Installing Yazi on your system

The README doesn't inline install commands; it points to the official installation docs at https://yazi-rs.github.io/docs/installation instead. Based on the repo's topics (linux, macos, windows, android) and the image-preview compatibility table, Yazi targets terminals on Linux, macOS, and Windows, plus Android-style environments, but the specific package-manager commands for each platform aren't in the README itself. Check the docs link for current steps.

Getting started with Yazi

Day-to-day usage isn't walked through in the README beyond the feature list; the project links out to https://yazi-rs.github.io/features and the installation docs for a getting-started guide. What the README does confirm: navigation borrows Vim-like conventions (its input, pick, confirm, which, and notify components are explicitly described as Vim-like), multi-tab and cross-directory selection are built in, and previews scroll for video, PDF, archive, and directory content. For exact keybindings, the official docs are the source, not this review.

Strengths

  • Async core means the file browser doesn't freeze while a large preview or slow remote directory loads in the background.
  • Inline image, video, PDF, and archive previews work without leaving the terminal or opening a separate viewer.
  • The built-in package manager installs, updates, and pins plugins and themes without a separate tool.
  • Deep integration with ripgrep, fd, fzf, and zoxide fits it into an existing terminal workflow instead of replacing it.
  • MIT license keeps it free to use, modify, and redistribute without restriction.

Current limitations to know before you commit

  • The project self-describes as a public beta still taking breaking changes, so upgrades can require re-checking your config or plugins.
  • Install and usage instructions live entirely on an external docs site rather than in the README, so there's no quick-reference cheat sheet in the repo itself.
  • Image preview quality depends on your terminal: full protocol support only kicks in on a specific list of terminals (Kitty 0.28.0+, Windows Terminal v1.22.10352.0+, Rio 0.3.9+, and others); anything else falls back to Überzug++ or ASCII art via Chafa.
  • The plugin system is Lua-based, which is another language to learn if you want to write custom previewers or UI overrides beyond what ships built in.

How Yazi compares to Ranger, nnn, and LF

Ranger — the Python terminal file manager Yazi is most often compared to; slower on large directories since it isn't async, but more mature and heavily documented.nnn — a C-based terminal file manager focused on minimal resource use and a tiny binary; fewer built-in image-preview protocols than Yazi ships with.lf — a Go-based file manager scriptable via shell commands; lighter-weight than Yazi's Lua plugin system but with a smaller plugin ecosystem.xplr — another Rust-based TUI file explorer, aimed more at pipe-friendly scripting than at Yazi's async I/O and image-preview focus.

Frequently asked questions

Is Yazi stable enough to use as a daily file manager?

The README places Yazi in public beta and says it "can be used as a daily driver," though it also warns the project is in heavy development and expects breaking changes. Plenty of people run Yazi daily, but treat config and plugin compatibility as something that can shift between releases.

Does Yazi support image preview in the terminal?

Yazi supports inline image preview built in for terminals like Kitty, iTerm2, WezTerm, and Windows Terminal, and falls back to Überzug++ or Chafa on terminals without native graphics protocols. Coverage depends on which protocol your terminal implements, so check Yazi's image-preview compatibility table for your specific terminal.

How does Yazi compare to Ranger?

Yazi and Ranger both give you a terminal-based directory browser with previews, but Yazi runs every I/O operation asynchronously in Rust, while Ranger is Python and blocks on slow operations. Ranger has a longer track record and more community documentation; Yazi trades that maturity for the async design and built-in image protocols.

Can I extend Yazi with plugins and themes?

Yazi ships a concurrent plugin system built on a Lua API, covering UI plugins, custom previewers, preloaders, spotters, and fetchers, plus a separate theme system. A built-in package manager installs, updates, or pins these plugins and themes to a specific version from within Yazi itself.

What terminals support Yazi's image preview features?

Yazi's built-in image preview covers terminals including Kitty (0.28.0 or later), iTerm2, WezTerm, Konsole, foot, Ghostty, Windows Terminal (v1.22.10352.0 or later), Rio (0.3.9 or later), Black Box, Bobcat, and Warp on macOS and Linux. Terminals outside that list fall back to Überzug++ on X11/Wayland or ASCII art via Chafa.

How do I configure Yazi with a custom config file?

Yazi's own README doesn't walk through config file syntax directly; it points to the official docs site for installation and configuration details instead. What the README does confirm is that Yazi supports custom layouts, a theme system, and Lua-based plugin configuration, but the exact config file format isn't documented in the repository's README.

The problem it solves

Older terminal file managers like Ranger read directories and generate previews synchronously, so opening a folder full of large videos or a slow network mount freezes the whole UI until the read finishes. That's the core complaint against blocking file managers. Yazi's answer is to push every I/O operation and CPU-heavy preview job onto its own async task, so browsing stays responsive even when a thumbnail or archive listing is still loading in the background. It also solves the narrower problem of previewing images without leaving the terminal, wiring directly into terminal graphics protocols instead of shelling out to an external image viewer.

Who should try it — and who should skip

Developers who already spend most of their day in a terminal and want inline image and video previews without switching to a GUI file manager are the clearest fit for Yazi, especially if their terminal already supports Kitty's graphics protocol, Sixel, or iTerm2's inline images. Vim and Neovim users who like scriptable, keyboard-driven tools will also feel at home with its Vim-like input and pick components. Skip it for now if you need a config format that won't change under you, since the project itself warns it's in heavy development with breaking changes, or if your terminal has no image-protocol support and you don't want to install Überzug++ or Chafa as a fallback.

Related repositories

Source & attribution

Facts and feature descriptions sourced from the sxyazi/yazi GitHub repository (github.com/sxyazi/yazi) and its README.

GitHub data · last synced Aug 15, 2026Reviewed by Henry
Back to TopGit

Want a second opinion on yazi?

Ask an AI that can read this page — one click and you get its take on yazi.

GitHub