Windows process viewer

htop, but it's native Windows.

A fast, keyboard and mouse driven process monitor for the Windows console. Per-core CPU meters, a sortable process table, tree view, and a live I/O tab.

  • written in pure C
  • uses only the Win32 API
  • depends on nothing else
  • ships as one small exe
Install with winget
> winget install Cingano.wtop

No package manager? Build it from source with one command.

Everything htop gives you, mapped to a key.

wtop reads the whole process list from a single system call, so a refresh costs about a fifth of a percent of one core. Every view below is one keystroke away.

F5 Tree view

See the parent and child hierarchy with connector glyphs, sorted under each parent. Filter inside the tree and the path to every match stays visible.

WindowsTerminal.exe
 ├─ OpenConsole.exe
 └─ pwsh.exe
     └─ wtop.exe

F4 Filter

Type a substring to narrow the list by name, case insensitive, updating live as you type. The summary line shows matched over total.

/chrome
14 matched / 233 total

Space Tag & bulk kill

Tag processes with Space, tracked by PID across refreshes. Then F9 ends the whole tagged set after a single confirmation.

▸ node.exe
▸ node.exe
  python.exe
2 tagged

F9 Kill

End the selected process after a y or N confirmation. Run from an elevated console to terminate protected or elevated processes.

Kill process 7264
chrome.exe ? [y/N]

F2 Setup

Tune the refresh interval, sort column and direction, per-core or combined meters, and tree mode. Settings persist between runs.

Refresh   1.5 s
Sort by   CPU%
Meters    per-core
Tree      off

Mouse Click anything

Click a row to select, a header to sort, a tab to switch screens, a key-bar button to act, and scroll the wheel. Works on the classic console host too.

PID  CPU% MEM THR
click a header to sort ↑↓

A full screen of live throughput.

One keystroke flips to the I/O tab: aggregate receive and transmit meters with a per-interface breakdown, and aggregate read and write meters with a per-drive breakdown including a busy percentage.

  • Accurate at any rate. Rates come from the byte-counter delta over real elapsed time, so they hold up at every refresh interval.
  • Auto-scaling meters. Bars track a decaying recent peak with a sensible floor, so quiet and busy periods both read clearly.
  • No admin needed. Network counters come from GetIfTable2, disk counters from IOCTL_DISK_PERFORMANCE. Both work without elevation.
wtop I/O tab showing network receive and transmit meters with a per-interface breakdown, and disk read and write meters with a per-drive breakdown
Network and disk throughput, side by side.

Three ways in. All of them quick.

winget

The fastest path on Windows 10 and 11.

> winget install Cingano.wtop

Build from source

A C compiler is all you need. Tested with GCC from MSYS2 UCRT64.

> make

or compile directly

> gcc -O2 -Wall -Wextra -std=c11 src/*.c -o wtop.exe

Put it on PATH

Install for the current user, no admin rights. Open a new console and just type wtop.

> wtop --install

It copies into %APPDATA%\wtop and adds that folder to your per-user PATH. Remove it any time with wtop --uninstall.

Every key, one screen.

The display refreshes every 1.5 seconds by default. Navigation works from the keyboard and the mouse at the same time.

or kj
Move selection up or down
PgUpPgDn
Page up or down
HomeEnd or gG
Jump to first or last process
<>
Cycle the sort column left or right
Space
Tag or untag the selected process
F1 or ?
Show the help overlay
F2
Open the setup screen
F4 or /
Filter the list by name
F5 or t
Toggle tree view
Tab or F6
Switch between the list and I/O
F9
Kill selected or every tagged process
q or Esc
Quit