The short answer
Big overnight drain almost always means the Mac didn't stay asleep. Run pmset -g assertions to see which apps are preventing sleep right now, and pmset -g log | grep -i wake to see when and why it woke overnight. Quit the app holding the assertion, and if wakes are frequent, review Wake for network access and Power Nap in System Settings → Battery → Options.
On this page
Why a sleeping Mac loses battery
When a Mac sleeps properly it uses very little power. Large overnight losses have three usual causes:
- It never went to sleep. An app held a sleep assertion, for example a video call app, a download, a backup, or a virtual machine.
- It kept waking up. Macs wake briefly with the screen off for maintenance, called a dark wake. A few are normal; long or frequent ones add up.
- Something stayed busy while it was awake. Once awake, apps like container runtimes and sync clients can keep working for minutes each time.
Step 1: see what is preventing sleep right now
In Activity Monitor, open the Energy tab and look at the Preventing Sleep column. Anything marked Yes is holding the Mac awake at this moment. For more detail, use Terminal:
pmset -g assertionsAssertion status system-wide:
PreventUserIdleDisplaySleep 0
PreventSystemSleep 0
PreventUserIdleSystemSleep 1
Listed by owning process:
pid 32754(Zoom): [...] 01:12:40 PreventUserIdleSystemSleep named: "Meeting in progress"The lines under Listed by owning process are what matter: the app, how long it has held the assertion, and its type. PreventUserIdleSystemSleep keeps the Mac awake; PreventUserIdleDisplaySleep keeps the screen on. An assertion held for hours by an app you're not using is your answer.
Step 2: see when and why it woke
The power log keeps a record of every sleep and wake. It is long, so filter it:
pmset -g log | grep -E "(Wake|DarkWake|Sleep) " | tail -4010:30:45 DarkWake DarkWake from Deep Idle [CDNP] : due to ... wifibt ... Using BATT (Charge:100%) 45 secs
10:31:30 Sleep Entering Sleep state due to 'Maintenance Sleep':TCPKeepAlive=active ...
10:32:54 Wake DarkWake to FullWake from Deep Idle [CDNVA] : due to HID Activity ...Each DarkWake line says why the Mac woke (“due to …”) and how long it stayed up. Wake lines are full wakes, such as opening the lid. Look for long dark wakes, or dark wakes every few minutes, and note the battery charge the lines report.
pmset -g statspmset -g stats counts sleeps, dark wakes and user wakes. A dark wake count far above the sleep count you'd expect is a sign something is waking the Mac repeatedly.
Step 3: check the settings that allow wakes
pmset -gLook at powernap, tcpkeepalive and womp (wake on network access). The same line for sleep also names the processes currently preventing sleep. In System Settings → Battery → Options you can change the related settings; which options appear depends on your Mac and macOS version.
Common culprits
- Virtual machines and container runtimes (Docker, OrbStack, Colima) can hold assertions or keep network activity going.
- Video call apps left in a meeting or on a waiting screen.
- Downloads, backups and sync clients that ask the Mac to stay awake until they finish.
- Browser tabs playing media, even muted.
- Accessories and displays that wake the Mac when they reconnect.
Step 4: measure the next night
Note the battery percentage before you close the lid (pmset -g batt shows it), fix one thing, and compare in the morning. For battery health, System Settings → Battery → Battery Health shows maximum capacity, and system_profiler SPPowerDataType shows the cycle count.
The faster way: Sleep & Battery in iKnowMyMac
iKnowMyMac records sleep assertions as they happen, reads the wake log through its optional read-only helper, and turns the night into one line in the morning.