TiloBox
Back to directory
Yazi project preview

Yazi

An asynchronous terminal file manager with previews, tabs, bulk operations, plugins, and shell integration.

LicenseMIT
GitHub stars41.6k
Last commit1 weeks ago
Tags7 topics
CliRustProductivityOpen SourceFile ManagerAsync IoTerminal Ui
Overview

Why consider Yazi?

Blazing fast terminal file manager written in Rust, based on async I/O.

Guided learning

Learn Yazi by building

Practical setup notes, real use cases, and copy-ready examples in one focused guide.

3 min read 3 sections
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:

bash
1function y() {
2 local tmp cwd; tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
3 command yazi "$@" --cwd-file="$tmp"
4 IFS= read -r -d '' cwd < "$tmp"
5 [ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd" || builtin true
6 command rm -f -- "$tmp"
7}

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.

Yazi FAQs

Yazi is listed as a Developer Tools tool on TiloBox. Review the overview, features, and official documentation on this page to decide whether it solves your specific workflow.

Start with the project's GitHub repository and official website for supported installation and deployment instructions. Test the setup with representative data or a small project before rolling it out more widely.

Yazi is listed under the MIT license. Read the complete license text and the project's notices before using, modifying, or distributing the software.

Production readiness depends on your requirements. Review maintenance activity, security practices, documentation, backup and upgrade procedures, and compatibility with your stack; then validate it in a non-production environment.

Yazi is listed as an alternative to Midnight Commander. Compare the core workflow, deployment model, integrations, and licensing against your must-have requirements before switching.