btop: The Resource Monitor That Makes htop Look Retro

htop won the war against top and then stopped shipping features. btop is what happens when someone builds the monitor the terminal was always capable of.

btop is a single-binary resource monitor that renders CPU per-core graphs, memory pressure, disk I/O, network throughput, and a filterable process list in a configurable, mouse-clickable TUI. It reads /proc (or the macOS equivalents) directly — no daemon, no config language, one static binary. The UI is dense but organized: boxes you can rearrange via preset layouts, per-box toggles for what’s shown, and a process table with tree view, sorting, and signal sending built in. It ships with themes (including one that matches your terminal palette), GPU monitoring for NVIDIA/AMD/Intel where drivers cooperate, and battery/temperature sensing on laptops. Where htop answers "which process is hot right now," btop answers "what is this machine doing as a whole, and which process is to blame."

install

macOS
# macOS
brew install btop
Debian/Ubuntu
# Debian/Ubuntu (may be old on LTS)
sudo apt install btop
Fedora
# Fedora
sudo dnf install btop
Arch
# Arch
sudo pacman -S btop

examples

# Launch it. Really.
btop
# Start filtered to your own processes — the flag works, the filter is a substring
btop --filter "$USER"
# Jump straight to a saved layout preset (0-9, defined in config)
btop --preset 3
# Low-color mode for terminals without truecolor (ssh without -t flag confusion)
btop --low-color
# Custom config path — handy for server vs laptop defaults
btop --config ~/.config/btop/btop-server.conf
# Force TTY-safe rendering over flaky ssh connections
btop --tty

pro tip

Press Esc for the menu, then the options screen has a "presets" section — save your favorite box layout as a preset and launch with --preset N. Also, the / key filters the process list; it’s the same substring matching as --filter but without restarting.

honest limits

btop is a monitor, not a debugger — it shows you what’s hot, not why (strace, perf, and flamegraphs live downstream of "which process"). The GPU stats require driver cooperation and lie by omission on some hybrid setups. On thin ssh connections the full redraw can stutter; --tty and --low-color exist for a reason. And it’s deliberately not a process manager for scripting — there’s no batch mode, no JSON output; if you need to collect metrics, that’s sar/node_exporter/vector, not btop.