Yazi
An asynchronous terminal file manager with previews, tabs, bulk operations, plugins, and shell integration.
Why consider Yazi?
Blazing fast terminal file manager written in Rust, based on async I/O.
Learn Yazi by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide3 sections
High-Performance Terminal File Management with Yazi
Terminal file managers allow developers, system administrators, and power users to navigate complex directory hierarchies, preview diverse asset formats, and execute batch file operations without leaving the command line. Yazi (means "duck") is a terminal file manager written in Rust, based on non-blocking async I/O. Engineered from the ground up for maximum throughput and responsiveness, the application eliminates interface freezing during long disk operations or deep directory tree traversals.
Asynchronous Architecture and Core Design
Traditional terminal file managers often execute disk reads, metadata lookups, and directory indexing synchronously on the main thread, resulting in noticeable UI stuttering when browsing remote drives or directories with tens of thousands of files. Yazi overcomes this limitation through an internal architecture where All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available resources.
Under heavy operational workloads such as copying large files, generating previews, or searching nested subdirectories, Yazi relies on an advanced internal task scheduler. The task manager Provides real-time progress updates, task cancellation, and internal task priority assignment. To ensure instant previews while browsing through image galleries or code repositories, Yazi pairs asynchronous rendering with intelligent prefetching. This approach, Combined with the pre-loading mechanism, greatly accelerates image and normal file loading.
External Tool Integrations and Extensibility
Yazi is designed to integrate cleanly with standard command-line utilities rather than reinventing standalone indexers and decoders. To determine MIME types and handle file classifications accurately, the core system requires file (for file type detection). Users can further expand its capabilities by pairing it with tools like ripgrep for regex content searching, fd for filename discovery, fzf for fuzzy navigation, zoxide for fast historical directory jumps, and poppler or ffmpeg for document and media thumbnails.
Beyond CLI tools, Yazi includes a plugin architecture powered by Lua. This system accommodates UI plugins (rewriting most of the UI), functional plugins, custom previewer/preloader/spotter/fetcher; Just some pieces of Lua. Users can modify UI borders, create custom status lines, or register domain-specific previewers with minimal overhead.
Shell Integration and Directory Synchronization
A common requirement when working in a terminal file manager is maintaining the shell's active working directory upon exiting the interface. Because a child process cannot modify the working directory of its parent shell directly, the documentation notes: We suggest using this y shell wrapper that provides the ability to change the current working directory when exiting Yazi.
Adding the official wrapper function to your shell configuration (~/.bashrc or ~/.zshrc) allows seamless directory handoff:
function y() { local tmp cwd; tmp="$(mktemp -t "yazi-cwd.XXXXXX")" command yazi "$@" --cwd-file="$tmp" IFS= read -r -d '' cwd < "$tmp" [ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd" || builtin true command rm -f -- "$tmp"}Once defined, invoking y launches Yazi, tracks directory changes to a temporary file, and smoothly teleports the active shell session to the target path upon exit.
Related tools
More options with a similar category or technology profile.
diskus
Minimal, fast alternative to du -sh written in Rust using multi-threaded directory traversal.
peco
Simplistic interactive filtering tool for Unix pipelines, process lists, and file trees.
Dapr CLI
Command-line tool for managing Dapr distributed application runtime environments and sidecars.
Freeze
Generate beautiful image screenshots and SVGs of code snippets and terminal outputs.