Website profiles · Technology insights · Alternatives

yazi-rs.github.io

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

No paid content found
Visit website
Profile views 1 Outbound visits 0 Normal
Yazi Full homepage screenshot

At a glance

Category
Development
Language
English
Paid-content signal
No paid content foundObserved
Registered
Unknown
Hosting
FastlyInferred
HTTPS certificate trusted
PassedObserved
Last updated

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 yazi executable into a directory on your PATH (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:

  1. Find the default keymap file shipped with Yazi, or start a new keymap.toml in your config directory.
  2. Copy only the entries you want to change into your own file, so defaults stay intact for everything else.
  3. Bind keys to existing commands first; add custom commands only when a built-in one does not cover your need.
  4. 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.

Related questions

More questions →
How Yazi's Asynchronous I/O Makes It Fast

Yazi is fast because it never lets a slow I/O operation block the interface: every file-system and network operation runs asynchronously, CPU-heavy work is spread across multiple threads, and files (including images) are pre-cached and pre-encoded before you navigate to them. The result is a terminal file manager that stays responsive while previews, directory listings, and background tasks run in parallel. This explanation applies to anyone evaluating Yazi or trying to understand why it feels faster than synchronous file managers.

The core mechanism: async I/O everywhere

In a synchronous file manager, opening a large directory or previewing a big file blocks the UI until the read finishes. Yazi's design, as described on its site, makes all I/O operations asynchronous. The UI thread issues a request and continues handling input; the result arrives later and is rendered when ready.

A practical example: you hold down the arrow key to scroll through a directory of hundreds of high-resolution photos. With blocking I/O, each preview would stall the cursor. With async I/O, navigation input is processed immediately while previews load in the background and appear as they complete.

Multi-threaded CPU work

Not all work is I/O. Decoding images, highlighting code, and encoding previews are CPU-bound. Yazi spreads these CPU tasks across multiple threads, so they use the machine's available cores instead of serializing on one thread. This matters on modern multi-core machines: a single-threaded manager leaves most cores idle during preview generation.

Pre-caching and pre-encoding

Yazi combines built-in code highlighting and image encoding with a pre-caching mechanism. Rather than encode an image only when it scrolls into view, it prepares previews ahead of time, which "greatly accelerates image and normal file loading." For everyday browsing this means the next few entries are often already prepared by the time you reach them.

Task scheduling you can see and control

Yazi provides async task scheduling and management with three observable behaviors:

  • Real-time progress updates — long operations report status instead of appearing frozen.
  • Task cancellation — you can stop a task you no longer need (for example, aborting a large copy).
  • Internal task priority assignment — the scheduler decides what runs first, so interactive work isn't starved by background jobs.

These are the practical payoff of the async architecture: responsiveness is preserved even under load, and you retain control over running work.

Image protocol support

Yazi has built-in support for multiple image protocols and is integrated with Überzug++, which the site says covers almost all terminals. This means image previews work across a wide range of terminal emulators rather than being limited to one protocol.

When this design matters most

Scenario Benefit of Yazi's design
Large directories with many images Pre-caching and async loading keep scrolling smooth
Slow storage or network mounts UI stays responsive while reads complete in background
Multi-core machines CPU tasks parallelize across threads
Long-running operations Progress updates and cancellation keep you in control
Varied terminal setups Multiple image protocols plus Überzug++ integration

If your browsing is mostly small text files on fast local storage, the difference will be less noticeable. The gains are largest when previews are expensive (images, code) or when I/O is slow.

How to verify it yourself

  1. Open a directory containing many large images and scroll quickly — the cursor should move without stalling while previews fill in.
  2. Trigger a long operation such as copying a large tree and watch for progress updates; try cancelling it.
  3. Compare against a synchronous file manager on the same directory to feel the difference in input latency.

If previews don't appear at all, the usual sticking point is terminal image-protocol support — check that your terminal is covered by the supported protocols or Überzug++ integration.

Terminal and Image Protocol Support for Yazi Previews

Yazi can preview images and highlighted code in most terminals, but image previews depend on your terminal supporting an image protocol. Yazi has built-in support for multiple image protocols and integrates with Überzug++, which the project describes as covering almost all terminals. Code highlighting is built in and works alongside image encoding and pre-caching, so normal file previews do not require a separate protocol. Before relying on image previews, confirm that your terminal supports one of the protocols Yazi can use.

What Yazi provides for previews

According to the Yazi project page, the file manager includes:

  • Built-in support for multiple image protocols — image previews are handled by Yazi itself rather than requiring an external preview tool.
  • Überzug++ integration — the project states this covers almost all terminals, which matters if your terminal lacks native image protocol support.
  • Built-in code highlighting and image encoding — combined with pre-caching, these accelerate both image and normal file loading.

The practical split is simple: text and code previews work through Yazi's built-in highlighting, while image previews require a compatible terminal or the Überzug++ path.

How to check whether your terminal will show image previews

  1. Identify your terminal emulator. Note the exact name and version, since protocol support varies by terminal and by version.
  2. Check whether it supports a native image protocol. Terminals that implement protocols such as Kitty's graphics protocol or Sixel can display images directly. The Yazi documentation lists the specific protocols and terminal compatibility, so check that page against your terminal rather than assuming.
  3. If there is no native protocol, plan on Überzug++. Yazi's integration with Überzug++ is the fallback the project presents as covering almost all terminals.
  4. Verify in practice. Open Yazi in the target terminal, navigate to a directory containing an image, and confirm the preview renders. Then open a source file to confirm highlighting appears.

Expected results

  • Code and text files: highlighted previews should appear without extra terminal configuration, since highlighting is built in.
  • Images: a preview should render if your terminal supports a protocol Yazi uses, or if Überzug++ is available and configured.
  • No image preview: this points to a terminal protocol gap or a missing Überzug++ setup, not a general failure of Yazi.

Common sticking points

  • Assuming every terminal works out of the box. "Almost all terminals" through Überzug++ is not the same as every terminal with no setup. Treat image preview as something to verify, not assume.
  • Testing only with text files. Code highlighting can work while image previews fail, so test both separately.
  • Ignoring terminal version. Protocol support can change between terminal releases; confirm against current Yazi documentation for your version.
  • Confusing speed with compatibility. Pre-caching and asynchronous I/O make previews load faster, but they do not add protocol support your terminal lacks.

Bottom line

If you mainly preview code and text, Yazi's built-in highlighting should work in a normal terminal setup. If image previews matter, check your terminal against Yazi's documented protocol support first, and fall back to the Überzug++ integration when native support is absent. Verify with one image and one code file before making it part of your workflow.

How Yazi Manages and Schedules Asynchronous Tasks

Yazi runs file operations as asynchronous tasks with real-time progress updates, cancellation support, and internal priority assignment. You can watch long-running work (copies, moves, deletes, downloads) advance and stop it mid-flight instead of waiting blindly or killing the terminal. This applies to operations Yazi performs itself; it is not a general-purpose job scheduler for arbitrary shell commands.

Why async task management matters in a file manager

Traditional terminal file managers block the interface while copying a large directory: no progress, no cancel, no way to keep browsing. Yazi is built on async I/O in Rust, so I/O operations run asynchronously and CPU work is spread across multiple threads to use available resources. Task management is the user-facing layer on top of that design — it turns background work into something you can see and control.

The three capabilities

Real-time progress updates

Each running task reports its progress as it advances, so you can judge whether a large transfer is moving or stalled. This is the practical difference between "the terminal seems frozen" and "this 40 GB copy is 62% done."

Task cancellation

A running task can be cancelled rather than left to finish or interrupted by closing the terminal. Useful when you started the wrong move, or a transfer to a slow drive is no longer worth waiting for.

Internal task priority assignment

Yazi assigns priorities to its internal tasks. Higher-priority work is not stuck behind bulk background operations, so the interface stays responsive while heavy jobs run.

How the pieces fit together

Capability What you get When it matters
Async I/O Operations don't block the UI Browsing while a copy runs
Multi-threaded CPU work Resources are used across threads Many files, heavy previews
Progress updates Live status per task Large transfers, slow drives
Cancellation Stop a task mid-run Wrong operation, changed mind
Priority assignment Important tasks aren't starved Mixed light and heavy work

The same async foundation powers previews: built-in code highlighting and image encoding are combined with a pre-caching mechanism to speed up image and normal file loading. So the responsiveness you notice while scrolling is the same design that keeps long operations manageable.

A concrete example

Suppose you start copying a large media directory to an external drive and then notice you grabbed the wrong folder. With Yazi's task model, the copy appears as a tracked task with progress; you cancel it instead of waiting for completion or force-closing the terminal. Meanwhile, because I/O is asynchronous and tasks carry priorities, you can keep navigating and previewing files — including images, via the built-in image protocol support — while other work continues.

Limits to keep in mind

  • The evidence covers progress, cancellation, and priority for Yazi's own tasks; it does not describe a user-facing queue editor or custom priority settings, so don't assume you can reorder tasks manually.
  • Image preview depends on terminal support for image protocols; the async task system and preview rendering are related but separate concerns.
  • No pricing or licensing details are established here — check the project site for current terms.

For exact keybindings and task-panel behavior, consult the Yazi documentation at yazi-rs.github.io, since those interface details change between versions.

What Is Yazi? A Rust Terminal File Manager Explained

Yazi is a terminal file manager written in Rust and built on asynchronous I/O. It is aimed at people who already work in a terminal and want a faster, more responsive way to browse and manage files without leaving it. If you are deciding whether to try it, the short answer is: Yazi is worth a look if your main pain point is a slow or blocking file manager, and you are comfortable running a TUI (terminal user interface) tool.

What Yazi actually does

Yazi is a file manager that runs inside your terminal. Its defining design choice is that all I/O operations are asynchronous, and CPU tasks are spread across multiple threads so available resources are used more fully. In practice, that means file listings, previews, and background work do not freeze the interface while they run.

Beyond navigation, the project lists several built-in capabilities:

  • Async task scheduling and management — real-time progress updates, task cancellation, and internal task priority assignment.
  • Multiple image protocol support — including integration with Überzug++, which the project says covers almost all terminals.
  • Code highlighting and image encoding — combined with a pre-caching mechanism to speed up loading of images and normal files.

Who it is for

Yazi fits terminal-centric workflows: developers, sysadmins, and anyone who already lives in a shell and wants file operations to stay in the same window. The async design matters most when you work with large directories, remote or slow storage, or image-heavy folders, where a blocking file manager would stall.

It is a weaker fit if you prefer a graphical file manager, need a mouse-first interface, or work in an environment where terminal image protocols are unavailable — though Yazi still functions as a text-based file manager in that case.

How it compares on the dimensions that matter

Dimension What Yazi offers
Language and runtime Written in Rust, based on async I/O
Responsiveness All I/O asynchronous; CPU work across multiple threads
Long-running work Task scheduling with progress, cancellation, and priorities
Previews Built-in image protocols (incl. Überzug++), code highlighting, image encoding, pre-caching
Interface Terminal-based

The practical takeaway: Yazi's differentiators are concurrency and preview performance, not a radically different feature set from other terminal file managers. If those are your bottlenecks, it is a reasonable candidate to try.

What to check before adopting it

  • Terminal compatibility for images. Image previews depend on supported protocols and Überzug++ integration; confirm your terminal is covered before expecting visual previews.
  • Your workflow's reliance on the terminal. Yazi is a TUI tool, so it assumes terminal comfort.
  • Feature fit beyond the headline items. The project description emphasizes async performance, task management, and previews; verify any other specific feature you need against the project's own documentation at yazi-rs.github.io.

If those conditions match how you work, the next step is to install it and test it against a directory that currently feels slow — that is the scenario where its async design should show up most clearly.

Website Overview

Identifiable technologies and additional version or configuration signals make the service easier to fingerprint, which may help targeted scanners narrow their checks. Page metadata, canonical configuration and social previews work together to provide more consistent search and sharing presentation.

Domain and Registration

Unknown

DNS and Email

Nameservers are provided by Amazon Route 53, indicating managed DNS hosting. CAA records restrict which certificate authorities are authorized to issue certificates. No CNAME was found; the observed records resolve directly to addresses. No MX record was found. A conventional explicit inbound-mail route is not configured. The lowest observed DNS TTL is 2256 seconds.

TLS and Certificates

The certificate uses an RSA 2048-bit public key, offering broad client compatibility. The server supplied a complete certificate chain. No organization name is present in the certificate; the available fields are consistent with domain validation. The certificate was issued by Let's Encrypt, commonly associated with automated certificate services. The certificate's total validity is about 89 days, consistent with a short renewal cycle.

HTTP and Browser Security

The response lacks these common security headers: CSP, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, clickjacking protection. CORS permits any origin to read this response. This is common for public resources; sensitive responses need narrower handling. No X-Powered-By header was found, reducing one common source of backend fingerprinting information. The x-cache, x-served-by, via response header indicates a CDN or caching proxy in the delivery path. No obvious internal addresses or debug information were found in the headers.

Technology Stack Analysis

The public page identifies Docusaurus 3.10.1, Fastly, with exact versions exposed for 1 technologies. These details can narrow vulnerability checks, although exposure alone is not a vulnerability.

Search and Social Sharing

The Generator tag identifies Docusaurus v3.10.1, making the publishing system easier to fingerprint. Open Graph is partially configured; og:type is missing. Twitter Card metadata is configured. The page declares 2 language or regional alternatives using hreflang. The title has 4 characters, within a common display range.

Hosting and Email

DNSAmazon Route 53
HostingFastly
EmailUnknown
Approximate IP geolocation (inferred; a CDN or proxy may differ from the origin server) United States flagUnited States Inferred 185.199.108.153

Registration details

RDAP / WHOIS

Unknown

DNS records

DNS

TypeNameValueTTLPriority
Ayazi-rs.github.io185.199.108.1533600—
Ayazi-rs.github.io185.199.109.1533600—
Ayazi-rs.github.io185.199.110.1533600—
Ayazi-rs.github.io185.199.111.1533600—
AAAAyazi-rs.github.io2606:50c0:8000::1533600—
AAAAyazi-rs.github.io2606:50c0:8001::1533600—
AAAAyazi-rs.github.io2606:50c0:8002::1533600—
AAAAyazi-rs.github.io2606:50c0:8003::1533600—
NSgithub.iodns1.p05.nsone.net2256—
NSgithub.iodns2.p05.nsone.net2256—
NSgithub.iodns3.p05.nsone.net2256—
NSgithub.iodns4.p05.nsone.net2256—
NSgithub.ions-1339.awsdns-39.org2256—
NSgithub.ions-1622.awsdns-10.co.uk2256—
NSgithub.ions-393.awsdns-49.com2256—
NSgithub.ions-692.awsdns-22.net2256—
TXTgithub.iov=spf1 a -all3600—
CAAgithub.io0 issue "digicert.com"3600—
CAAgithub.io0 issue "letsencrypt.org"3600—
CAAgithub.io0 issue "sectigo.com"3600—
CAAgithub.io0 issuewild "digicert.com"3600—
CAAgithub.io0 issuewild "letsencrypt.org"3600—
CAAgithub.io0 issuewild "sectigo.com"3600—

TLS and certificates

TLS / SSL

AssessmentNormal configuration
Supported protocolsTLSv1.2、TLSv1.3
Negotiated protocolTLSv1.3
Certificate subject*.github.io
IssuerLet's Encrypt
Valid until2026-12-29T23:44 · Remaining when checked: 63 days
Verification detailsCertificate trust: Passed · Hostname match: Passed

HTTP response headers

HTTP

HeaderValue
content-typetext/html; charset=utf-8
cache-controlmax-age=600
serverGitHub.com
strict-transport-securitymax-age=31556952
access-control-allow-origin*

Identified technologies

Docusaurus 3.10.1Fastly

Pages, Search and Sharing

Meta descriptionBlazing fast terminal file manager written in Rust, based on async I/O.
Canonical URLhttps://yazi-rs.github.io/
LanguageEnglish (default)
Twitter Cardsummary_large_image

No robots.txt found

User reviews (0)

  • No reviews yet.