Comparisons

tmux vs Zellij: which terminal multiplexer for a server?

Zellij vs tmux on a server: installing Zellij from the release binary, its Ctrl-key modes, sessions and resurrection, and when tmux or screen fits better.

Published ~7 min read
On this page

Short answer: Zellij is a newer terminal multiplexer, written in Rust, that shows key hints on screen, ships layouts, floating panes and WebAssembly plugins, and can restore a session after it ends. tmux is the small, scriptable standard in every distribution’s repositories. On servers you reach over SSH, tmux is the safe default; Zellij suits your own long-lived boxes.

Both do the core job the same way: a terminal session that keeps running on the server when your SSH connection drops, split into tabs and panes. The differences are in how you drive them, what comes built in and how easy each is to get onto a minimal server. Zellij facts below come from zellij.dev and its GitHub repository, read on 21 October 2026; Zellij was not run for this article.

tmux vs Zellij vs screen at a glance

tmuxZellijGNU Screen
Language, licenceC, ISC licenceRust, MIT licenceC, GPL
Debian and Ubuntu packageYesNone in any Debian suite (packages.debian.org, 21 October 2026)Yes
Rocky Linux, AlmaLinuxBase repositoriesRelease binaryEPEL only
How you give commandsPrefix key Ctrl-b, then a keyModes: Ctrl+p pane, Ctrl+t tab, and so onPrefix key Ctrl-a, then a key
Key hints on screenNo, Ctrl-b ? lists bindingsYes, a bar shows the keys of the current modeNo
Config~/.tmux.conf, tmux commands~/.config/zellij/config.kdl, KDL, applied live~/.screenrc
LayoutsBuilt by commands or scriptsBuilt in, KDL layout filesVia .screenrc
Floating panesPopups (display-popup)Yes, toggled with Alt+fNo
PluginsShell scripts via the third-party TPMWebAssembly plugins, built inNone
After the session endsGone (third-party tmux-resurrect can save layouts)Layout and pane commands can be resurrectedGone
Default scrollback2,000 lines10,000 lines100 lines (1,024 on Debian)
Scriptingtmux send-keys, new-window, split-windowzellij run, zellij actionscreen -X

What is Zellij?

Zellij (sometimes typed “zelij”) calls itself a terminal workspace. Like tmux it runs a server process that holds your sessions, tabs and panes, so you can detach and reattach. What sets it apart is that it tries to be learnable without a cheat sheet: the bar at the bottom always shows which keys do what in the current mode. Layouts are plain KDL files that open a set of tabs and panes with commands already running, panes can float above the others or stack, and the tab bar, status bar and session manager are themselves plugins compiled to WebAssembly, so third parties can write their own. Since version 0.43 it also includes an optional web client that serves sessions to a browser. As of October 2026 the newest release is 0.45.1, published 28 August 2026 (GitHub releases).

Install Zellij (and tmux)

Debian has no Zellij package, so on Debian and Ubuntu servers the practical route is the official release binary. The Linux builds are statically linked (musl), so one file runs on any x86_64 distribution:

any x86_64 Linux
curl -fsSLO https://github.com/zellij-org/zellij/releases/latest/download/zellij-x86_64-unknown-linux-musl.tar.gz
tar -xzf zellij-x86_64-unknown-linux-musl.tar.gz
sudo install -m 755 zellij /usr/local/bin/zellij
zellij --version

Each release also has aarch64 builds, a .sha256sum file beside every archive, and zellij-no-web-* builds without the web server, which is all a headless server needs. Other routes from Zellij’s install docs:

  • Cargo: cargo install --locked zellij compiles it from source, which takes a long time on a small VPS; cargo binstall zellij fetches the binary instead.
  • Arch Linux: pacman -S zellij. macOS: brew install zellij.
  • Fedora: sudo dnf copr enable varlad/zellij, then sudo dnf install zellij. Zellij’s docs list this as a third-party package, not one they maintain.
  • Try it first: bash <(curl -L https://zellij.dev/launch) downloads and runs a temporary copy. Fine on your laptop; on a server, prefer a binary you have checked.

tmux is one command away almost everywhere: sudo apt install tmux on Debian and Ubuntu, sudo dnf install tmux on Fedora, Rocky Linux and AlmaLinux. The tmux cheat sheet covers its keys, and the screen command guide does the same for GNU Screen.

Zellij keys: modes instead of a prefix

tmux uses one prefix key: press Ctrl-b, release, press a command key. Zellij uses modes. In normal mode, a Ctrl combination switches into a mode, the bar shows that mode’s keys, and a single letter acts; Enter or Esc takes you back to normal mode. The defaults, from Zellij’s default keybinding file:

KeysMode or actionUseful keys inside
Ctrl+pPane moden new, d split down, r split right, x close, f fullscreen, w toggle floating
Ctrl+tTab moden new, x close, r rename, b break pane into a tab, s sync input
Ctrl+nResize modearrow keys or h j k l
Ctrl+hMove modearrow keys move the pane
Ctrl+sScroll modearrows and PageUp/PageDown, s search, e open scrollback in $EDITOR
Ctrl+oSession moded detach, w session manager, c configuration
Ctrl+btmux moded detach, c new tab, % split right, " split down
Ctrl+gLocked modeevery key goes to the program; Ctrl+g again unlocks
Ctrl+qQuitends the session
Alt+n / Alt+fNew pane / show or hide floating panesfrom normal mode
Alt + arrowsMove focus between panesfrom normal mode

The catch is that those Ctrl keys are also used by shells and editors: Ctrl+p and Ctrl+n walk shell history, Ctrl+o saves in nano, Ctrl+s and Ctrl+t mean things in Emacs and Vim. Zellij offers two ways out: press Ctrl+g to lock it while you work in such a program, or switch to the unlock-first preset in the configuration screen (Ctrl+o, then c). That preset starts locked; Ctrl+g unlocks, then a single letter picks the mode, for example p for pane mode, so Ctrl+g, p, n opens a new pane, and the bar shows the other letters. On a Mac, the Alt shortcuts only work if your terminal app sends Option as Meta (Alt).

Sessions: start, detach, list, reattach

TasktmuxZellij
Start a named sessiontmux new -s workzellij -s work
Attach, or create if missingtmux new -A -s workzellij attach -c work
DetachCtrl-b dCtrl+o, then d
List sessionstmux lszellij ls
Reattachtmux attach -t workzellij attach work
End a sessiontmux kill-session -t workzellij kill-session work
Forget an ended sessionNot neededzellij delete-session work

Losing the connection detaches you in both: Zellij’s on_force_close option defaults to detach when the terminal goes away, as tmux does. The difference comes when a session really ends, after a quit, a crash or a reboot. tmux forgets it. Zellij keeps writing each session’s layout and the command in each pane to your cache folder while it runs, and zellij ls keeps listing ended sessions so you can attach to them again. You get the tabs and panes back, and the commands wait for you to press Enter before they run (--force-run-commands skips that).

Layouts and scripting

tmux is scripted with its own commands, which makes it easy to drive from shell scripts and cron jobs:

tmux · a monitoring session from a script
tmux new-session -d -s mon 'htop'
tmux split-window -h -t mon 'journalctl -f'
tmux attach -t mon

Zellij describes the same thing declaratively in a layout file and starts it with --layout. A layout replaces the default one, so keep the tab bar and status bar panes if you want them:

~/.config/zellij/layouts/mon.kdl
layout {
    pane size=1 borderless=true {
        plugin location="zellij:tab-bar"
    }
    pane split_direction="vertical" {
        pane command="htop"
        pane command="journalctl" {
            args "-f"
        }
    }
    pane size=2 borderless=true {
        plugin location="zellij:status-bar"
    }
}
Zellij · start it, and add panes from inside a session
zellij --layout ~/.config/zellij/layouts/mon.kdl
zellij run -- tail -f /var/log/nginx/error.log      # new pane running a command
zellij run --floating -- htop                       # the same, as a floating pane

zellij action exposes most keyboard actions (new tab, focus, resize) to scripts. For heavy automation, tmux is still the better-trodden path: its command language has been stable for years and countless scripts and tools build on it.

Minimal servers and resource use

tmux is a small C program and is in every repository, which matters on the servers you did not set up yourself: a fresh cloud image, a colleague’s box, a rescue environment. Zellij is a single, larger binary that also embeds a WebAssembly runtime for its plugins, so expect a larger memory footprint than tmux. Neither is heavy on a modern VPS, but measure rather than guess, with both running:

any Linux · resident memory in KiB
ps -eo pid,rss,comm | grep -E 'tmux|zellij'

Zellij’s default bars use arrow glyphs. If your terminal font lacks them, set simplified_ui true in its config; tmux needs nothing comparable.

Which one on a VPS over SSH?

  • Choose tmux if you log in to many servers, work on minimal images, automate sessions from scripts, or already know the keys. It is installed or one package away everywhere, and it behaves the same on all of them.
  • Choose Zellij for a box you live on, such as your own Linux VPS used as a development server: the on-screen hints, per-project layouts, floating panes and resurrection pay off when you return to the same server every day and can install a binary once.
  • Keep GNU Screen where it is already the only one installed, or for serial consoles, which it opens directly.

Mixing them is common: Zellij on your workstation, tmux on the servers. When a remote tmux runs inside a local Zellij pane, press Ctrl+g to lock Zellij so every key, including Ctrl-b, reaches the remote tmux. Whichever you pick, run the long job inside it, and a dropped connection (SSH: broken pipe) costs you nothing but a reattach.

Frequently asked

What is Zellij?

A terminal multiplexer written in Rust. Like tmux, it keeps sessions running after you disconnect and splits the terminal into tabs and panes. It also shows its key bindings on screen, has built-in layouts, floating panes and WebAssembly plugins, and can resurrect a session after it ends.

How do I install Zellij on Ubuntu or Debian?

Debian has no zellij package, so download zellij-x86_64-unknown-linux-musl.tar.gz from the project's GitHub releases, extract it and install the zellij binary to /usr/local/bin. cargo install --locked zellij builds it from source instead.

How do I detach and reattach in Zellij?

Press Ctrl+o, then d, to detach. Run zellij ls to list sessions and zellij attach NAME to go back. zellij attach -c NAME attaches to the session, or creates it if it does not exist yet.

Is Zellij better than tmux?

Not across the board. Zellij is easier to learn and has more built in. tmux is smaller, is in every distribution's repositories and is easier to script. For servers you only visit over SSH, tmux is the safer default.

Related articles

All comparisons