Your server is dragging. Something’s eating memory, load average is climbing, and you’ve got maybe 90 seconds before your boss notices the dashboard. You ssh in and type top.
And then top greets you with its classic 1984 energy: a wall of numbers, no colors, no mouse, and that special kind of inscrutable UI that makes you feel like you’re filing a tax return. Great tool. Built for a different era.
It’s 2026. There are better options, and honestly they’re not even hard to install. Let’s compare the three that actually come up in every “replace top” conversation: btop, htop, and bottom (the one with the dumb name that ruins every search).
What We’re Actually Comparing
All three are terminal process monitors. They all show CPU, memory, processes, and let you kill stuff. The differences are in aesthetics, feature depth, configurability, resource overhead, and how much you’ll enjoy staring at them at 2 AM.
Quick version reference:
- htop 3.3.0 (released late 2024, still the stable series going into 2026)
- btop 1.4.x (C++, actively maintained)
- bottom 0.10.x (also Rust, also opinionated)
Installation everywhere you’d want it:
# htopsudo apt install htop # Debian/Ubuntusudo dnf install htop # Fedora/RHELsudo pacman -S htop # Arch
# btopsudo apt install btop # Ubuntu 22.04+sudo dnf install btop # Fedora 36+sudo pacman -S btop # Arch
# bottom (the binary is `btm`, of course)sudo pacman -S bottom # Archcargo install bottom # anywhere with Rust toolchain# or grab the binary from GitHub releases:curl -LO https://github.com/ClementTsang/bottom/releases/download/0.10.2/bottom_x86_64-unknown-linux-gnu.tar.gztar -xzf bottom_*.tar.gzsudo mv btm /usr/local/bin/htop — The Reliable Old Friend
htop has been around since 2004. It replaced top the way a decent mechanical keyboard replaces a rubber-dome: same purpose, dramatically better to use. If you’ve been on Linux for more than 15 minutes, you’ve probably already run it.
htopWhat you get:
- Color-coded CPU bars per core
- Memory and swap meters
- Sortable, scrollable process tree
- Mouse support (yes, in the terminal)
Fkeys for filtering, killing, searching- Configurable columns
htop’s killer feature is that it’s immediately usable. No config file to learn. Open it, you understand it. Press F9 to kill a process, F6 to sort by column, / to search. Done. It’s the Toyota Camry of process monitors: not exciting, works every time.
The process tree view (F5) is genuinely useful when you need to see which parent spawned the runaway child process eating your RAM:
htop -t # start with tree viewhtop -u www-data # filter to one user immediatelyhtop -p 1234,5678 # watch specific PIDs onlyWhere htop falls short: The UI is frozen in roughly 2010. The meters are functional but not beautiful. There’s no GPU monitoring. No disk I/O breakdown by process. And the config format (~/.config/htop/htoprc) is a barely-documented flat file that you’ll edit once, break, and never touch again.
It also has no network throughput per-process view, which matters more than people admit. You’ll find yourself opening nethogs in a separate pane, which kind of defeats the point of an all-in-one monitor.
btop — The One That Actually Looks Good
btop started as a Python rewrite of a rewrite (bpytop), then became a C++ project (btop++) — which is what it remains today. Whatever version you’re running, the defining characteristic is: it’s gorgeous.
btopOpen it for the first time and it looks like someone actually cared about the UI. You get:
- Per-core CPU graphs (not just bars — actual scrolling time series)
- Memory with a breakdown that includes cache separately
- Network upload/download per interface with history graphs
- Disk I/O with read/write speeds per device
- Process list that’s sortable and filterable
- A battery indicator if you’re on a laptop
The default theme is legitimately nice. But if you want to tweak it:
# Config lives here after first run:~/.config/btop/btop.confA few useful config options to know about:
# How often to update (ms) — lower = more accurate, more CPUupdate_ms = 2000
# Color themecolor_theme = "Default"
# Show temperatures (requires lm-sensors or similar)check_temp = True
# CPU graph mode: "normal", "inverted", "default"graph_symbol = "braille"
# Sort processes by (pid, program, arguments, threads, user, memory, cpu lazy, cpu direct)proc_sorting = "cpu lazy"
# Show process tree by defaultproc_tree = FalseThe graph_symbol = "braille" setting is the one that makes btop look like the screenshots people post. It uses Unicode braille characters to get smoother, higher-resolution graphs than block characters. On any modern terminal (kitty, alacritty, WezTerm, even modern gnome-terminal) this works great. On older terminals, fall back to "block".
Network monitoring in btop is solid enough to replace casual nethogs use:
# btop shows per-interface totals — if you want per-process, you still need nethogssudo nethogs eth0btop doesn’t do per-process network attribution (a kernel limitation, not a btop limitation), but the interface-level view is there and it’s live.
Where btop falls short: It’s heavier than htop. Not dramatically, but if you’re on a very constrained system (sub-512MB RAM, shared hosting VPS, ancient ARM board), you’ll notice. It also has more configuration surface area, which is a feature and a bug. The keybindings are different from htop muscle memory, and the first session is slightly disorienting.
Check your distro’s package version — some ship older builds and the upstream 1.4.x releases move quickly.
bottom — The Rust One With the Confusing Name
bottom is invoked as btm. Not bottom. Not bot. btm. This is the first and last time the project’s naming makes any sense, and I say this with affection.
btmbottom is the most opinionated of the three. It came out of the Rust CLI tool renaissance and it shows: the defaults are more aggressive, the config is TOML, and it’s designed more around keyboard-driven navigation than casual point-and-click.
What sets it apart:
Widget-based layout. The UI is divided into resizable, movable widgets. You can restructure the whole layout by editing the config. Want CPU on top-left, memory bottom-left, process list taking the full right half? Write that in TOML:
[[row]] ratio = 30 [[row.child]] type = "cpu" [[row.child]] type = "mem"
[[row]] ratio = 70 [[row.child]] type = "proc" ratio = 2 [[row.child]] type = "net"This level of layout control doesn’t exist in htop or btop. If you’ve ever wanted a monitoring setup that’s exactly the layout you want and nothing else, bottom is the path.
It’s fast. Rust, low overhead, and it shows. On a system with 128MB RAM and an ancient CPU, btm will run where btop might stutter.
Temperature and disk I/O widgets are built in and well-integrated. The disk widget shows read/write per device in real time. Temperature display works with lm-sensors on Linux.
Some useful flags:
btm --rate 500 # update every 500ms (default 1000ms)btm --expanded # start with selected widget expanded full-screenbtm --color gruvbox # built-in color themesbtm --mem_as_value # show memory as absolute values not percentagesbtm -b # basic mode, less UI chromeWhere bottom falls short: The default keybindings are non-obvious. dd to kill a process (vim-style) is slick if you’re a vim person and baffling if you’re not. The documentation is thorough but you need to read it. First-run experience is rougher than btop or htop.
Also, btm as the command name causes genuine problems. Every time you tell someone to use bottom, you have to explain that the command is btm. It’s a solvable problem (alias bottom=btm in your shell config) but it shouldn’t be a problem in 2026.
Side-by-Side: What Actually Matters
| Feature | htop 3.3 | btop 1.4 | bottom 0.10 |
|---|---|---|---|
| Install size | ~200KB | ~2-5MB | ~3MB (Rust bin) |
| Memory footprint | ~5-15MB | ~20-40MB | ~10-20MB |
| Per-core CPU graphs | Bars only | Time series | Time series |
| Network monitor | No | Per interface | Per interface |
| Disk I/O | No | Per device | Per device |
| GPU monitoring | No | Nvidia (partial) | No |
| Temperature | No | Yes | Yes |
| Layout customization | Minimal | Theme-based | Full TOML layout |
| Mouse support | Yes | Yes | Limited |
| Config format | Flat file | Key=value | TOML |
| First-run UX | Excellent | Good | Rough |
| Startup time | Instant | Fast | Fast |
On a resource-constrained box (Raspberry Pi, cheap VPS, LXC container with 256MB RAM): htop. No contest. It’ll run anywhere, it’s in every distro’s base repos, and it uses basically nothing.
On a development machine or home lab server where you’re regularly checking on things: btop. The visual quality genuinely improves usability. When CPU usage spikes, the scrolling time series graph tells a story that a single bar cannot. The disk and network views mean you rarely need to open a separate tool.
If you’re a keyboard person who wants a custom monitoring layout: bottom. The TOML layout system is legitimately unique. Once configured, it’s exactly what you want and nothing you don’t.
Practical Setup: Making the Right One Work
If you’re adding btop to a server you actually care about, a reasonable starting config:
update_ms = 1000proc_sorting = "cpu lazy"proc_tree = Falsegraph_symbol = "braille"check_temp = Trueshown_boxes = "cpu mem net proc"For bottom on a dev machine where you want a clean layout:
[flags]rate = "1000ms"color = "gruvbox"mem_as_value = false
[[row]] ratio = 40 [[row.child]] type = "cpu" ratio = 2 [[row.child]] type = "temp"
[[row]] ratio = 30 [[row.child]] type = "mem" [[row.child]] type = "net"
[[row]] ratio = 30 [[row.child]] type = "proc" ratio = 3And if you’re a shell config person, a few aliases that actually help:
# In ~/.bashrc or ~/.zshrc
# Launch btop watching a specific set of processesalias btop-web='btop --filter "nginx|php|mysql"'
# bottom with faster refresh for active debuggingalias btm-fast='btm --rate 250'
# htop sorted by memory for memory leak huntingalias htop-mem='htop --sort-key PERCENT_MEM'The Bottom Line
Use htop if: you’re on a constrained system, you SSH into many different boxes and want consistency, or you just need a reliable tool you already know how to use. htop 3.3 is genuinely good software that doesn’t need to prove anything.
Use btop if: you spend real time in a terminal monitor, you care that your tools look decent, and you want disk + network + CPU in one place without opening three tools. It’s the default recommendation for most people in 2026.
Use bottom if: you want full layout control, you’re comfortable with a config file, and the keyboard-driven philosophy clicks with you. The TOML layout system is the feature nobody else has.
The honest answer is: install all three. They’re tiny. btop gets the daily driver slot, htop stays as the universal fallback you can always count on, and btm lives configured on the machine where you actually care about the layout. None of these cost you anything except the 30 seconds it takes to install them.
And none of them are top. That’s the whole point.