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
brew install btop
# Debian/Ubuntu (may be old on LTS)
sudo apt install btop
# Fedora
sudo dnf install btop
# 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.