Your MacBook (MacBook, Air or Pro) battery is dead after only one, two or three days of hibernation? Well, it shouldn’t happen but if it does there is a solution. Change hibernatemode to 25.
What is hibernatemode?
Manual of pmset says:
hibernatemode supports values of 0, 3, or 25. Whether or not a hibernation image gets written is also dependent on the values of standby and autopoweroff.
For example, on desktops that support standby a hibernation image will be written after the specified standbydelay time. To disable hibernation images completely, ensure hibernatemode standby and autopoweroff are all set to 0.
hibernatemode = 0 by default on desktops. The system will not back memory up to persistent storage. The system must wake from the contents of memory; the system will lose context on power loss. This is, historically, plain old sleep.
hibernatemode = 3 by default on portables. The system will store a copy of memory to persistent storage (the disk), and will power memory during sleep. The system will wake from memory, unless a power loss forces it to restore from hibernate image.
hibernatemode = 25 is only settable via pmset. The system will store a copy of memory to persistent storage (the disk), and will remove power to memory. The system will restore from disk image. If you want “hibernation” – slower sleeps, slower wakes, and better battery life, you should use this setting.
So this command should help you:
sudo pmset -a hibernatemode 25
Note: since desktops are plugged in to power all the time it doesn’t make much sense to do this on an iMac, Mac Mini or Mac Pro, unless you’d like to save a tiny bit of energy