Mac battery draining fast: diagnose and fix it from the terminal

Check battery health, hunt down CPU-hungry and sleep-blocking processes, and tune sleep settings to stop fast battery drain on macOS.

macOSProcessesmonitoringcpuPower & SleepDiagnosticsbatteryMedium risk
Check your battery's health and cycle count with system_profiler, then use top and pmset -g assertions to find what is draining it.

What this covers

Fast battery drain on a Mac usually comes from one of three places: an aging battery, a process burning CPU in the background, or something preventing the machine from sleeping. This guide walks through all three in order, using only built-in terminal tools, so you can pinpoint the cause and apply the right fix.

Symptom

?Your MacBook loses charge much faster than it used to, gets warm while idle or closed, or wakes up noticeably less charged after sitting overnight.

Check battery health and cycle count first

Before blaming software, find out whether the battery itself is worn out. The cycle count tells you how much life the battery has used, and the condition line (Normal / Service Recommended) tells you whether macOS considers it degraded. A high cycle count or a 'Service Recommended' condition means fast drain is expected hardware aging, not a settings problem. If the condition is Normal, move on to software causes.

pmset -g batt shows charge state; system_profiler SPPowerDataType adds condition and cycle count.

Command
$ pmset -g batt && system_profiler SPPowerDataType | grep -E "Cycle Count|Condition|Full Charge Capacity"

Find processes burning CPU

A runaway process is the most common software cause of fast battery drain. Take a one-shot snapshot sorted by CPU and look at the top entries. A background app, browser tab, or stuck helper process sitting near 100% CPU will drain the battery even when the screen is idle. Note the process name — you can look up its full command line later with pgrep to decide what it belongs to.

Print a single top-style report sorted by CPU instead of watching a live updating screen.

Command
$ top -l 1 -o cpu

See what is preventing sleep

Battery often drains while the Mac sits 'closed' or idle because something holds a power assertion that blocks sleep. List all active assertions: each entry names the app or service and why it keeps the machine awake (audio playback, screen sharing, a scheduled task, etc.). If an app you don't need is listed with 'Preventing sleep', that's your drain.

List every power assertion — the named reason an app, audio stream, or screen share blocks sleep.

Command
$ pmset -g assertions

Review your sleep settings on battery

Aggressive settings — long display sleep timers, disabled standby, or 'Prevent sleep on battery' options — quietly shorten battery life. Read the current configuration, shown separately for battery and charger. Note the values for displaysleep, sleep, and standbydelay on the Battery section so you know what you're changing in the next step.

pmset -g custom prints the live sleep configuration separately for battery and charger.

Command
$ pmset -g custom

Tune how quickly the Mac hibernates

If the Mac spends hours in normal sleep instead of entering deep hibernation, standby power drains accumulate. Increase standbydelay so the machine transitions to hibernation sooner when left asleep, cutting overnight/weekend drain. This uses sudo and changes system power settings, so apply it deliberately — the original value (10800 seconds) can be restored with the undo command if behavior changes unexpectedly.

Adjust how long your Mac sleeps normally before hibernating, using pmset standbydelay.

Command
$ sudo pmset -a standbydelay 86400
▾ Undo
Undo
$ sudo pmset -a standbydelay 10800

Watch overall power behavior over time

After fixing the culprit, confirm the machine behaves normally: CPU should idle low, and the battery discharge rate should drop. A live system monitor shows CPU, memory, and process activity in one screen, so leave it running for a few minutes — idle CPU near zero and no surprising top processes mean the fix worked.

macOSA Terminal System Monitor With bottomLow riskStep 6Optional

Watch CPU, memory, disk, network and process widgets in one screen.

Command
$ btm
!The sleep-setting fix uses sudo and modifies system power management. Note the original values before changing them, and restore them if the Mac behaves oddly afterward.

How to confirm it worked

Idle CPU stays near zero, no unexpected process holds a power assertion, and the battery holds charge overnight after the sleep settings change.

Undo everything

Every command above can be reverted. Run these in order to undo all of it.

Undo everything
$ sudo pmset -a standbydelay 10800

Review before running — some steps may not be independent.

Sources

Last verified: 2026-09-21

Related guides