The best free system monitor for Windows
Pulse by Zaweba is a free Windows system monitor that shows CPU, memory, GPU, disk and network per app, plus temperatures, drive health and 30 days of history.

A good choice for a free system monitor on Windows is Pulse by Zaweba. It shows CPU, memory, GPU, disk and network use for every app, plus temperatures, fan speeds and drive health, and it keeps a one-minute history for 30 days so you can look back at what happened. It is free software, works offline, needs no account and runs as a normal user.
"Best" depends on what you want to know. If all you need is to end a frozen program, the Task Manager that comes with Windows will do. Most people who go looking for something more want answers it can't give: which app ate the data allowance, why the fan roared an hour ago, whether the drive is wearing out. That is the gap Pulse was built to fill.
What a good monitor should show you
The first thing to look for is a clear live view. In Pulse the Live page lists apps rather than single processes, so all the processes of one program make one row, such as a browser with 48 processes shown as one line with its icon and proper name. The columns are App, CPU, Memory, GPU, Disk read, Disk write, Network down and Network up. The table updates in place every second, so your selection and sort order stay where you left them, and a Find box filters by name.
Across the top sit five graphs for the whole PC: CPU, Memory, GPU, Disk and Network. CPU, memory and GPU are scaled from 0 to 100 per cent, while disk and network scale themselves and show their rate. Between the graphs and the table you can see both the overall picture and the app responsible.
A good monitor should also look after the hardware side. Pulse has a Temperatures page with tiles for the CPU, the GPU, the motherboard and each drive, coloured normal, warm or hot, and a Drive health group that reads the drive's own health data.
Why history matters more than you'd think
Most problems on a PC are over by the time you open a monitor. The fan has calmed down, the download has finished, the spike has passed. Pulse records one minute of history at a time in a local file and keeps it for 30 days by default, and you can set anything from 1 to 365 days in Settings. Each minute it stores the machine's CPU, memory, GPU, network and disk, plus each busy app's CPU time, data and disk use and each sensor's peak and average.
The History page then shows Today, Yesterday or This week, with graphs and totals, and lists of the top bandwidth users, the top CPU users and the temperature peaks alongside the three busiest apps at that minute. That turns a vague worry into a name you can act on.
Things that set it apart
Pulse can also warn you instead of waiting to be checked. The Alerts page covers hot temperatures, a drive whose health declines, memory that stays high and an app that uses too much data in a day. Each alert appears as a Windows notification once, then re-arms when things go back to normal.
It is meant to stay out of the way. Closing the window leaves it running in the tray, the tray icon can draw a live CPU graph, and a small always-on-top mini meter shows CPU, RAM, GPU and network while you work. On the test PC it used about 0.1 per cent CPU and 70 MB in the background.
Privacy is simple: no account, no cloud and no telemetry. History and settings live in your own AppData folder. Everything runs without administrator rights; only an optional sensor helper, for CPU and motherboard temperatures, fans and SATA or USB drive health, asks Windows for permission when you turn it on.
Getting started
Install Pulse by Zaweba, open it and leave it running for a day. The live table is useful straight away, but the history is where it really earns its place, so give it time to build up a record. Then try the History page the next time something odd happens and see what it tells you.