Website review
This review may include AI-generated content and is not individually verified. Domain, certificate and other facts come from the observed data on this page.
What is Yazi?
Yazi is a terminal file manager written in Rust, built around asynchronous I/O. In practice, that means it's a keyboard-driven tool for browsing, moving, copying and previewing files from inside a terminal, designed to stay responsive while heavy operations run in the background.
What that means in use
- Non-blocking operations: All I/O is asynchronous and CPU work is spread across threads, so copying a large directory doesn't freeze the interface.
- Task management: Background tasks report progress in real time, can be cancelled, and are assigned internal priorities—useful when several transfers are queued at once.
- Previews: Built-in code highlighting and image encoding, combined with pre-caching, speed up previewing files as you move through a directory.
- Image support: It handles multiple terminal image protocols and integrates with Überzug++, so image previews work in most terminals.
Who it suits
Developers and terminal-heavy users who want fast navigation and previews without leaving the shell. If you mostly work in a graphical file manager or need deep desktop integration, a terminal file manager like Yazi is a different workflow rather than a drop-in replacement.
A practical next step
Install it, open a directory with many files, and test two things: scroll quickly through a folder of images and source files to judge preview latency, and start a large copy to confirm the UI stays usable. Those two checks tell you whether its async design actually matters for your daily work.
How does Yazi's asynchronous I/O make it faster than other terminal file managers?
Yazi's speed comes from handling file operations asynchronously and spreading CPU work across multiple threads, rather than blocking the interface while it waits on disk or network I/O. In practice, this means browsing a large directory or previewing files does not stall the whole program: I/O runs in the background while the UI stays responsive. Its task scheduler also assigns priorities and reports live progress, so heavy jobs like copying or scanning can run alongside lighter interactions without freezing the terminal.
The page evidence also points to pre-caching of image and code-highlight content, which shortens the wait when you move between files. Combined with multi-threaded processing, that is where the perceived speed advantage over simpler terminal managers comes from—most of them perform reads synchronously on the main loop.
What this means in use
- Large directories: listings and previews populate without locking the cursor.
- Bulk operations: copy or move tasks run in the background with progress and cancellation.
- Image-heavy folders: built-in image protocol support (including Überzug++) plus pre-caching makes previews feel near-instant.
Practical check
If your main pain point is a laggy UI in huge folders or slow previews, compare Yazi against your current manager on the same directory and same terminal. Speed differences show up most clearly with many files, remote or slow storage, and image previews—those are the scenarios where asynchronous I/O and pre-caching matter most.
How do I install and configure Yazi on my system?
Yazi is installed as a single Rust binary, so the practical path is: get the binary onto your PATH, install the optional helpers you actually need, then configure it through its config files rather than expecting a setup wizard.
Installation
Pick the method that matches how you manage software on your machine:
- Package manager: check whether your distro or Homebrew ships a Yazi package first; it is the least work and keeps updates tied to your normal upgrade routine.
- Prebuilt release binary: download the archive for your OS/architecture from the project's releases, unpack it, and move the
yaziexecutable into a directory on yourPATH(e.g.~/.local/bin). - From source with Cargo: if you already have a Rust toolchain,
cargo install(or a build from the repository) works, but expect a longer compile and the need to reinstall to update.
After installing, run yazi --version to confirm the shell finds it. Then verify the optional dependencies you care about — image previews in the terminal, file-type detection for opening files, and archive handling are typically provided by companion tools rather than the binary itself, so install the ones relevant to your workflow.
Configuration
Yazi reads configuration from a config directory, usually under ~/.config/yazi/. The main files are:
| File | What you set there |
|---|---|
yazi.toml |
Behaviour: preview settings, opener rules (which program opens which file type), layout and manager options |
keymap.toml |
Keybindings, including adding your own shortcuts |
theme.toml |
Colours, icons and UI appearance |
Start minimal: copy the default config files if the install provides them, change one thing at a time, and restart Yazi to see the effect.
A concrete starting scenario
If you mainly browse code and images, first make sure a terminal image protocol works (the page notes built-in support for multiple image protocols plus Überzug++), then add opener rules so source files launch in your editor and images preview inline. That gives you most of the day-to-day benefit before you touch themes or custom keys.
Decision criterion
If you want zero maintenance, use your package manager and keep the default config. If you need a specific version or custom keybindings, use the release binary or Cargo install, and keep your ~/.config/yazi/ files under version control so upgrades don't overwrite your setup. The project site, Yazi, documents the exact config keys, so check it before editing files by hand.
Which terminal emulators and image protocols does Yazi support for previewing images?
Yazi previews images in the terminal through built-in support for multiple image protocols, with Überzug++ integrated to extend coverage to nearly all terminals. The page evidence names these features but does not list specific terminal emulators, so it is safer to describe protocol support than to claim a particular terminal is verified.
What the evidence supports
- Multiple image protocols: Yazi builds in support for more than one protocol rather than relying on a single one.
- Überzug++ integration: This fallback layer is what broadens image preview to terminals that lack native protocol support.
- Speed features: Code highlighting and image encoding are combined with pre-caching to speed up image and file loading.
Practical decision criterion
If your terminal supports a native image protocol, Yazi can use it directly. If it does not, the Überzug++ path is the practical fallback. A reader on a minimal or remote terminal should test an image preview first, since fallback rendering can behave differently from native protocol rendering.
For the current list of supported terminals and protocols, check the project's own documentation at Yazi.
How can I customize Yazi's keybindings and themes to fit my workflow?
Yazi's keybindings and themes are configured through plain-text files, so you can adapt the file manager to your own habits without editing source code. The general approach is to locate your configuration directory, create or edit the relevant files, and reload Yazi.
Keybindings
Yazi uses a keymap.toml file for keybindings. The pattern is to map a key combination to a named command, usually grouped by context such as normal mode, visual mode, or specific prompts. For example, you might bind a key to open a file with your preferred editor, or to jump to a frequently used directory.
A practical workflow:
- Find the default keymap file shipped with Yazi, or start a new
keymap.tomlin your config directory. - Copy only the entries you want to change into your own file, so defaults stay intact for everything else.
- Bind keys to existing commands first; add custom commands only when a built-in one does not cover your need.
- Restart or reload Yazi and test each binding in the mode where it should apply.
Decide on bindings by frequency: keys you press constantly (navigation, opening files, search) deserve the easiest reach, while rarely used actions can stay on defaults.
Themes
Theming in Yazi is handled through a theme file, typically theme.toml, which controls colors for elements such as the file list, status bar, borders, and icons. You can set colors per component and adjust how selected or hovered items appear.
For a coherent result:
- Pick a small palette (background, foreground, one or two accents) and apply it consistently across components.
- Match your terminal's color scheme so Yazi does not clash with the surrounding shell.
- Check readability of selected and highlighted states, since those are easy to overlook.
- Keep a copy of your theme file so you can reuse it across machines.
How the two fit together
| Area | File | What you control | Main trade-off |
|---|---|---|---|
| Keybindings | keymap.toml |
Which keys trigger which actions, per mode | More custom bindings mean more to remember and maintain |
| Themes | theme.toml |
Colors for lists, bars, borders, icons | Heavy customization can reduce contrast or break with terminal palettes |
A concrete scenario
If you mostly browse code and open files in an editor, bind a single key to open the current file in that editor and another to toggle a preview pane. Then choose a theme with a subdued background and a clear accent for the cursor line, so the file list stays readable during long sessions.
As a next step, open Yazi's official documentation at Yazi to confirm the exact file names, config directory location, and available command names for your installed version, since these details can change between releases.
How do I manage background tasks like file copies or downloads in Yazi, including cancelling them?
Yazi runs file operations as asynchronous background tasks rather than blocking the interface, so you can keep browsing while a copy or download continues. The task system reports real-time progress, lets you cancel running jobs, and internally assigns priorities to tasks. Because all I/O is asynchronous and CPU work is spread across threads, large copies don't freeze the file manager.
Managing tasks in practice
- Watch progress: tasks show live progress, so a long copy or download can be monitored without leaving the current directory.
- Cancel a job: the task manager supports cancellation, which is the place to stop a copy or download you no longer need.
- Let priorities work: you generally don't need to micromanage ordering; Yazi assigns internal priorities, so foreground actions you trigger tend to get attention while bulk work continues.
A concrete scenario
You start copying a multi-gigabyte folder to an external drive, then notice you grabbed the wrong source. Instead of waiting, open the task view, confirm which job is the copy, and cancel it; the interface stays responsive throughout because the operation was never blocking.
Decision criterion
If your work involves frequent large transfers, treat the task view as a habit: check it after starting any long operation so you can catch mistakes early and cancel rather than wait. For a broader tour of the project, see Yazi.
User reviews (0)