Journal · Guide · 8 min

Why your Mac wakes at 3am, and how to read the sleep log

By Ziyarex ·

You closed the lid at midnight. At 3am the fan spins up, the charging light changes, the machine is warm in the morning and the battery is down eleven percent. Nobody touched it.

Most advice for this is a list of things to turn off. Don't do that. macOS writes down exactly why it woke, every single time, and the fix depends entirely on the reason. Read the log first, it takes about ninety seconds.

Step one: ask what happened

pmset -g log | grep -e "Wake  " -e "DarkWake" | tail -40

You'll get lines that look roughly like this:

2026-08-14 03:00:11 +0100 Wake        DarkWake to FullWake from Standby [CDNVA] : due to RTC/HID Activity
2026-08-14 03:24:52 +0100 DarkWake    due to ARPT/Maintenance

Two fields matter. Wake vs DarkWake, and the reason after "due to".

A DarkWake is a maintenance wake: the screen stays off, the machine does a task, it goes back to sleep. That's normal and mostly harmless. A Wake is a full wake, screen, fans, the works. Repeated full wakes overnight are what you're hunting.

Step two: decode the reason

These are the ones you'll actually see:

  • RTC (Alarm), a scheduled wake. Something asked the machine to get up at a specific time. Run pmset -g sched to see the schedule.
  • ARPT / Wake on Network, something on your network sent a packet the Mac was told to care about. Screen sharing, a Back to My Mac descendant, a NAS, or another Apple device.
  • EC.LidOpen: you opened the lid. Not your mystery.
  • XHC1 / XDCI / USB, a USB device twitched. A mouse on a slightly uneven desk, a dock, a hub with flaky power, a monitor's built-in hub.
  • HID Activity, a keyboard, trackpad or Bluetooth input device reported activity. Bluetooth mice in a bag are a classic.
  • BATC / Battery, a battery threshold event.
  • Maintenance / PowerNap: Power Nap doing mail, calendar, photo sync, Time Machine or a software update check.

The single most common cause of the 3am pattern specifically is a scheduled maintenance window: Power Nap plus automatic update checks plus Time Machine tend to cluster overnight, and they're the reason the machine picks a suspiciously round hour.

Step three: see what's holding it awake right now

Different question, same evening. If the machine won't sleep at all, the culprit is an assertion, not a wake:

pmset -g assertions

The top block shows which assertions are held, and the block below names the process holding each one. PreventUserIdleSystemSleep held by a video app, a download manager, or a stuck helper is the usual answer. If you find something you don't recognise, that's your lead.

For the full picture at once: settings, assertions, scheduled events and recent history in one dump:

pmset -g everything | less

Step four: fix the cause you actually found

Apply only the one that matches your log. Each of these is a real trade-off, not a free win.

If it's Power Nap / Maintenance:

sudo pmset -a powernap 0

Cost: mail, calendar and photo sync stop happening while asleep. They resume the moment you wake it. For most laptops this is a good trade.

If it's ARPT / Wake on Network:

sudo pmset -a womp 0

Cost: you can no longer wake this Mac remotely, and screen sharing to a sleeping machine stops working. On a desktop that you remote into, leave this alone.

If it's a network stack keepalive (a Mac on power, waking every few hours):

sudo pmset -a tcpkeepalive 0

Cost is real and worth stating plainly: Find My, iMessage delivery and push notifications stop arriving while the machine is asleep. macOS will warn you about this. Only reach for it if the log clearly points here.

If it's Bluetooth / HID: System Settings → Bluetooth → Advanced, and turn off "Allow Bluetooth devices to wake the computer." Then check whether a mouse is living in a bag with something pressing on it, because that's frequently the whole story.

If it's USB: unplug the hub or dock for one night as a test. A single failing hub can generate dozens of wakes, and no software setting fixes bad hardware.

If it's RTC with a scheduled event: pmset -g sched will name it. Time Machine, an update check, or something you set up years ago and forgot. Remove the schedule at its source rather than blanket-disabling wakes.

The setting to reach for last

You'll find sudo pmset -a disablesleep 1 recommended in forum threads for this. It does work, in the sense that a machine that never sleeps never wakes.

It also disables the sleep safety entirely, including lid-closed sleep. Leave it on, put the laptop in a bag, and it will run at full tilt in an enclosed space with no airflow. That's a real way to cook a battery. If you need closed-lid awake behaviour deliberately, that's a different job with different guardrails, and we wrote it up separately, it's also the entire reason Insomniac watches the thermal state instead of just flipping the switch.

For the 3am problem, don't use it. You have a log line telling you the actual cause. Fix that.

A note on what "fixed" looks like

After you change one setting, check the log again the next morning rather than declaring victory:

pmset -g log | grep -e "Wake  " | tail -20

Machines usually have more than one cause. Fix them one at a time, in the order the log ranks them by frequency, and you'll find two settings cover almost everything.

Mentioned in this post