This guide covers power management settings for macOS using the pmset
utility, focusing on battery optimization and sleep behavior.
# View all power management settings
pmset -g
# View detailed settings for different power modes
pmset -g custom
# Check specific hibernatemode setting
pmset -g | grep hibernatemode
# Check sleep image file size
ls -lh /private/var/vm/sleepimage
# View system wake reasons
syslog |grep -i "Wake reason"
- Mode 0: Traditional sleep mode
- Mode 3: Modern sleep mode (saves to disk)
- Mode 25: Aggressive hibernate (may lose state)
Set hibernate mode:
sudo pmset -a hibernatemode 0
sudo pmset -a restoredefaults
sudo pmset -b sleepbutton 1
sudo pmset -b lowpowermode 0
sudo pmset -b standby 1
sudo pmset -b ttyskeepawake 0
sudo pmset -b hibernatemode 25
sudo pmset -b powernap 1
sudo pmset -b displaysleep 2
sudo pmset -b womp 0
sudo pmset -b networkoversleep 0
sudo pmset -b sleep 1
sudo pmset -b lessbright 1
sudo pmset -b tcpkeepalive 0
sudo pmset -b disksleep 5
sudo pmset -c sleepbutton 1
sudo pmset -c lowpowermode 0
sudo pmset -c standby 1
sudo pmset -c ttyskeepawake 1
sudo pmset -c hibernatemode 3
sudo pmset -c powernap 1
sudo pmset -c displaysleep 10
sudo pmset -c womp 1
sudo pmset -c networkoversleep 0
sudo pmset -c sleep 1
sudo pmset -c tcpkeepalive 1
sudo pmset -c disksleep 10
# Disable unnecessary wake features
sudo pmset -b ttyskeepawake 0
sudo pmset -b womp 0
sudo pmset -b powernap 0
sudo pmset -b hibernatemode 3
# Set aggressive auto power off (4 hours)
sudo pmset -b autopoweroffdelay 14400
sleepbutton
: Control power button sleep behaviorttyskeepawake
: Terminal preventing sleepwomp
: Wake on network accesspowernap
: Background maintenance during sleephibernatemode
: Sleep state management methoddisplaysleep
: Display sleep timerdisksleep
: Hard drive sleep timernetworkoversleep
: Network preventing sleeptcpkeepalive
: Keep TCP connections alive
- Hibernatemode 25 is more aggressive but may risk state loss
- Settings can be applied to all power modes (-a), battery (-b), or AC (-c)
- Always verify changes with
pmset -g custom