Best Terminal System Monitors
Compare btop, htop, bottom, glances and zenith: terminal system monitors for CPU, memory, disk, network and processes.
Updated
short verdict
Pick btop if you want one full-screen dashboard with mouse support and themes. Pick htop for a small, ncurses-only process viewer with renice and CPU affinity. Choose bottom for Windows support and zoomable graphs, or glances when you need a web UI, REST API or remote monitoring.
A terminal system monitor shows CPU, memory, disk, network and process data without leaving the shell. The options split into three groups: process-first viewers like htop, graphical TUI dashboards like btop, bottom and zenith, and Glances, which also serves stats over HTTP and exports them to other systems. They differ in platform coverage, language and runtime dependencies, and in how much they do beyond the local terminal.
this page is for
- Developers who want a single-screen dashboard for CPU, memory, disk, network and processes
- Admins who need a process viewer that works on minimal Unix systems
- Windows or cross-platform users who want graphical widgets
- Teams that need remote or exported system metrics
A C++ dashboard covering CPU, memory, disks, network and processes, with mouse support and bpytop-compatible themes.
best for
- A full dashboard in one TUI
- Users migrating from bpytop or bashtop themes
strengths
- Clickable UI, process filter, tree view and signal sending
- Reads bpytop and bashtop theme files
- GPU monitoring on Linux when built with GPU support
- Runs on Linux, macOS, FreeBSD, NetBSD and OpenBSD
weaknesses
- No Windows support listed
- GPU monitoring needs a build with GPU support enabled
An ncurses process viewer in C that kills, renices and filters processes by selection instead of PID.
best for
- Process-focused troubleshooting
- Minimal or older Unix systems
strengths
- Renice, kill, search, filter and tree view from the keyboard
- Full command lines with horizontal and vertical scrolling
- Setup menu for columns and layout
- Optional CPU affinity control and sensor monitoring
weaknesses
- No historical graphs, network or disk widgets in the description
- Packaging instructions shown are build dependencies, so you compile it yourself from source
A Rust monitor (btm) with per-core CPU, RAM, swap, network, disk, temperature and battery widgets that you can zoom in time.
best for
- Windows, Linux and macOS users
- People who customize layouts and color themes
strengths
- Officially supports Linux, macOS and Windows on x86_64, aarch64 and i686
- Zoomable time intervals on every graph widget
- htop-inspired basic mode and single-widget expansion
- Installs with cargo, Homebrew or APT
weaknesses
- Layout and widget options add configuration to learn
- FreeBSD and Android support is unofficial
A Python monitor with a terminal UI, a web server with REST API, client/server mode and export to databases.
best for
- Remote or multi-host monitoring
- Feeding metrics into scripts or databases
strengths
- Docker and LXC container monitoring
- Exports to CSV and JSON, plus InfluxDB, ElasticSearch and PostgreSQL
- glances --stdout cpu.user,mem.used,load for scripting
- Reads temperatures, voltages and fan speeds
weaknesses
- Needs Python and pip, with extras via glances[all]
- Wider scope than a local-only monitor needs
A Rust TUI with zoomable charts, per-process disk usage and optional NVIDIA GPU metrics on Linux and macOS.
best for
- Reviewing performance history across runs
- NVIDIA GPU users on Linux or macOS
strengths
- Saves performance data between runs
- Zoomable charts with historical scrolling
- Per-process disk usage and battery status
- Delay accounting data on Linux as root
weaknesses
- Linux and macOS only
- Smaller user base than btop, bottom and htop
A Python predecessor of btop with mouse support, process signals and an in-UI configuration menu.
best for
- Systems where pip or APT install is preferred
- Existing bpytop users
strengths
- In-UI menu edits all settings without touching files
- Auto-scaling network graphs and disk read/write speeds
- Sends SIGTERM, SIGKILL and SIGINT to selected processes
- Installs via pip3, Homebrew or APT
weaknesses
- Needs 24-bit truecolor or 256-color conversion plus Unicode braille
- macOS needs superuser privileges to show all processes
- Superseded by btop, its C++ continuation
How to choose
- Smallest footprint and process control: htop, which only needs ncurses and supports renice and CPU affinity.
- Best all-in-one local dashboard: btop, with mouse support, themes and network and disk panels.
- Windows support: bottom, which lists Windows as officially supported.
- Remote monitoring, web UI or exports: glances, with its HTTP API and database exporters.
- Historical charts between runs: zenith, which saves performance data and lets you scroll history.
When not to use these
- You need long-term alerting and dashboards across many hosts, which a live terminal view does not provide.
- You only need a one-off process check, where the classic top already ships on most systems.
FAQ
- What is the difference between btop and bpytop?
- btop (btop++) is the C++ continuation of bashtop and bpytop. It reads bpytop theme files and adds GPU monitoring on Linux with a GPU-enabled build. bpytop is written in Python.
- Which terminal system monitor works on Windows?
- bottom lists Windows as officially supported, alongside Linux and macOS. btop, htop, zenith and bpytop do not list Windows support.
- Can I monitor a system remotely?
- Glances has a web server mode with a RESTful API and a client/server mode, and it can export to InfluxDB, ElasticSearch and PostgreSQL.
- Which one is the lightest?
- htop is built on ncurses with minimal runtime dependencies. It focuses on the process list, so it has fewer graphs than btop or bottom.