How to see CPU, memory, and fan speed in your Mac menu bar

macOS shows the time and the battery icon by default. The actual vitals (whether your CPU is on fire, whether memory pressure is climbing, whether the fan is cranking) are buried in Activity Monitor. Here is how to pull them into the menu bar where they belong.

Published April 28, 2026 7 min read By John Sciacchitano

The Mac menu bar shows the clock, the battery icon, the Wi-Fi signal, and the input source. That is it for system information. CPU usage, memory pressure, fan RPM, GPU load: all hidden behind Activity Monitor, which is a separate app you have to switch to. For most casual users this is fine. For developers, video editors, anyone running heavy apps on a fanless MacBook Air that quietly throttles when it gets warm, the lack of visible vitals becomes a daily friction.

The fix is small. A few hundred lines of code that read the three numbers worth knowing and surface them in a menu bar slot. CPU usage tells you what is busy. Memory pressure tells you whether you are about to swap. Fan speed tells you whether the system is in thermal trouble. Three numbers, one icon, one quick glance, no more hopping into Activity Monitor every time you wonder what is going on.

Why these three numbers in particular

Activity Monitor exposes about thirty different metrics. Most of them do not change moment-to-moment in ways you would actually act on. The three that do, for general use:

CPU usage. Goes up when something is computing hard. Stays high when something is stuck. The number itself is not actionable, but the shape of it is. A short spike is usually fine. A sustained 80% with no foreground task you can name means a background process is misbehaving (a runaway Spotlight reindex, a stuck mdworker, a Chrome tab gone weird). Per-core breakdown helps because Apple Silicon scheduling is asymmetric: efficiency cores at 100% with performance cores idle is a different story than the other way around.

Memory pressure. Apple's word for "how unhappy is the memory system right now." Low pressure means there is room. Medium pressure means macOS is starting to compress and swap. High pressure means the SSD is about to take a beating and your laptop will get warm and slow. macOS displays this as a colored band in Activity Monitor; menu bar tools surface it as a percentage or the same band, smaller. The percentage of memory used is less useful than memory pressure itself, because modern macOS aggressively uses any memory you have for caches that it cheerfully discards under pressure.

Fan speed. The honest signal of thermal load on Macs that have fans. A MacBook Pro 14 or 16 inch will sit at idle RPM (around 1300 on M-series) and ramp up under sustained load. Watching the fan ramp before you hear it tells you a workload is heavier than it looks. On fanless Macs (MacBook Air, Mac mini in some configurations) there is no fan to read; the metric simply does not appear.

What a stats menu bar tool does not usefully give you is most other Activity Monitor numbers. Disk I/O is too bursty to read meaningfully at a glance. Network throughput is the same. Per-process CPU and memory belong inside Activity Monitor when you actually need them. The three above, surfaced together, cover the "what is wrong with my Mac right now" question 90% of the time.

Option 1: TeenyStat ($4.99 once)

What I ship. Native Swift, $4.99 lifetime, 3-day free trial. The menu bar shows one selectable metric (CPU, memory, or fan, your choice). Click the icon and a popup appears with all three displayed together, each with a 60-point sparkline that scrolls in real time. The default polling interval is 3 seconds and it is configurable in settings.

What is in there:

  • CPU usage with per-core breakdown. Click into the CPU card and you see every core's current load, plus user vs system time. On Apple Silicon Macs this distinguishes performance cores from efficiency cores so you can see which class of core is doing the work.
  • Memory pressure with the actual breakdown that Activity Monitor uses (active, wired, compressed, used, free), not just a percentage.
  • Fan speed with min and max RPM read from SMC, plus a graceful "no fans" state on fanless Macs that does not pretend to read what does not exist.
  • Threshold alerts. Set a CPU threshold of 80% and a notification fires if you cross it for more than a few seconds. There is a smart cooldown so you do not get spammed every time the number bounces above and below.
  • Customizable threshold colors. Pick the green-yellow-red boundaries yourself.
  • Session high and low tracking for each metric.
  • Global hotkey to open the popup from anywhere.

What is intentionally not there: GPU monitoring, network throughput, disk I/O, battery health, accessory battery levels (AirPods etc.). The opinion is that fewer metrics, surfaced well, beat more metrics surfaced badly.

Under the hood, fan speed comes from SMC (the System Management Controller, accessed via IOKit), memory pressure from task_info and vm_statistics64, and CPU usage from host_processor_info. Standard Apple APIs, no shell-out to top or iostat, no third-party libraries.

Option 2: Stats (free, open source)

Stats by Serhiy Mytrovtsiy is the de facto open-source Mac system monitor. Free, MIT licensed, available from github.com/exelban/stats or via Homebrew. It covers a much wider surface than teenystat: CPU, memory, network, disk, GPU, fans, sensors, battery, Bluetooth, RAM details. Configurable to a fault.

The price of that breadth is a settings panel with twelve tabs, a higher idle RAM footprint (50 to 70MB with all modules enabled, versus around 20MB for teenystat), and a UI that takes a while to learn. For users who want everything, Stats is excellent. For users who want three numbers, it is heavier than it needs to be.

Option 3: iStat Menus (subscription)

Bjango's iStat Menus is the long-running paid system monitor. As of 2024 it moved to subscription pricing. The features are the deepest in the category and the polish is excellent. The pricing model puts it out of consideration for most readers of this article. New customers subscribe; the iStat Menus 6 perpetual license is no longer sold.

If you have an existing iStat Menus 6 license and it works for you, no need to switch. If you are starting fresh, the subscription is hard to justify when free Stats and $4.99 teenystat exist.

Option 4: Activity Monitor (built in, free)

The built-in Activity Monitor in /Applications/Utilities shows everything, with depth that no menu bar tool will ever match. The only friction is that it is a separate app you have to switch to. Pin it to your Dock and use Tab when you want detail.

This works for occasional checks. For real-time at-a-glance monitoring, a menu bar tool is the better tool because the eye drift to the menu bar costs nothing.

Picking which metric to show in the menu bar

Most stats tools (including teenystat) only show one metric in the menu bar at a time, with the others tucked into the popup. Picking the right one matters because the menu bar is where you will glance most often.

For developers running builds and dev servers: CPU. The build logs already tell you what is happening, but the live CPU number tells you whether you are CPU-bound or waiting on something else.

For users running a lot of memory-heavy apps (Photoshop, Logic Pro, dozens of Chrome tabs): memory pressure. The pressure metric is the canary that tells you when to close some tabs before swap kicks in.

For thermal-sensitive workloads (video encoding, ML training, long renders) on machines with fans: fan speed. The fan ramping up is the earliest signal that you are about to thermally throttle.

You can switch which metric shows in the menu bar at any time. teenystat has this in its settings. The popup always shows all three regardless.

Threshold alerts, calibrating them

Both teenystat and Stats let you set threshold alerts (notify when CPU is above X for more than Y seconds). Calibrating these takes a week.

Day one: set them low (CPU > 50%, memory pressure > 60%) and observe. The alerts will fire often. You will quickly learn which alerts are real and which are noise.

Day two through five: raise the thresholds until the alerts only fire on actual issues. For most knowledge workers this lands around CPU > 80% sustained for 30 seconds, memory pressure > 70%, fan above 4000 RPM (varies by Mac).

After that: forget about them. The alerts only matter when something is actually wrong. Most days you should never see them.

The notch problem

If you have a 14- or 16-inch MacBook Pro with the notch, menu bar real estate is tight. A stats app showing one metric is fine. Showing three at once gets crowded once you also have the clock, battery, Wi-Fi, control center, and a few other utilities.

The fix is two-pronged. Show one metric in teenystat (the others stay in the popup, one click away). And use a menu bar manager to tuck other icons behind a chevron. More on the clean menu bar approach in this article.

Common questions

Will running a stats app slow down my Mac?

No. The 3-second polling interval and the IOKit/Mach calls used to read metrics are essentially free. teenystat idles around 20MB of RAM and does not measurably move the CPU graph it is reading.

Does it work on Apple Silicon and Intel?

Both. The metric APIs are the same across architectures. SMC keys for fan speed differ slightly between Mac models, but the SMC reader handles the variation.

What about Macs without fans (MacBook Air, Mac mini)?

The fan card shows a "fanless" state and the menu bar metric option for fan is hidden. teenystat detects this on launch via SMCReader.readFanCountStatus().

What about temperatures?

Some stats tools (Stats, iStat Menus) read CPU and GPU temperatures from SMC sensors. These work but the readings vary in accuracy depending on Mac model and macOS version. teenystat intentionally skips temperature readings because the gap between "the number is technically correct" and "the number is meaningful" is wider than I am comfortable with.

Why no GPU?

GPU monitoring on Apple Silicon is harder than it looks. The unified-memory architecture means GPU memory is shared with system RAM, so the metric is not what it would be on a discrete-GPU Mac. I would rather not surface a number that is misleading on the most common modern Mac than ship one that requires footnotes.

Why no battery percentage in the menu bar?

macOS already shows battery percentage in the menu bar natively. Adding it again would be redundant.

The bottom line

The Mac menu bar's lack of system vitals is one of macOS's small but persistent gaps. teenystat at $4.99 is the focused paid pick: CPU, memory, fan, and that is the whole product. Stats is the free, comprehensive alternative for users who want every metric. iStat Menus is the subscription premium for users who already paid for it before the model change.

Pick based on whether you want focused or comprehensive.

$4.99 once. Three vitals, one icon, sparklines for each.

teenystat is the focused paid pick. Native Swift, lifetime, 3-day free trial.