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. Add up how long each DarkWake lasted: a few short wakes are routine, and one that lasted hours is your cause. 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.
On a MacBook, the Energy tab's 12 hr Power column helps too: it's each app's average energy impact over the last 12 hours. An app near the top that you didn't use overnight was busy while you weren't looking.
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 ends with how long it stayed in that state. 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. The dark wake entry in the glossary explains each part of the line.
Add up the durations on last night's DarkWake lines. A dozen wakes of under a minute each are routine maintenance. One that lasted an hour or more is the one to explain: look at the lines around it for Assertions, which name the app that asked to keep the Mac awake. If the problem is how often it wakes rather than how long, find the wake reason for each one.
pmset -g log | grep "Wake Requests" | tail -20
pmset -g schedWake Requests lines name the process that asked macOS to wake the Mac at a later time, and pmset -g sched lists wakes that are scheduled now. A request repeated every few minutes from the same process is a strong lead.
pmset -g statspmset -g stats prints a Sleep Count, a Dark Wake Count and a User Wake Count since the Mac started. 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 (Power Nap, on Macs that support it), womp (the same as Wake for network access in System Settings) and, where your Mac lists it, tcpkeepalive. The line for sleep also names the processes currently preventing sleep. Leave standby and hibernatemode at their defaults; they control when a sleeping Mac saves memory to disk, not why it wakes.
To change these, use System Settings rather than pmset. On a MacBook, open System Settings → Battery → Options; on a desktop Mac, System Settings → Energy. Apple notes that some options aren't available on every Mac, and on desktop Macs Power Nap is offered only on Intel-based models.
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. Compare similar nights: the same apps open, the same accessories connected and the Mac on battery both times. 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.

