ChargeKeeper

Your MacBook battery, at the right level.

Charge limit, discharge, calibration and scheduling, from the menu bar. Free, open source, no account.

DownloadHow it works

Apple silicon · macOS 14 or later · MIT License

Preview of the ChargeKeeper menu: battery at 80%, charging paused at the limit, the limit slider, discharge and full charge buttons, and the power flow from the adapter to the MacBook.

Preview, sample data.

Download

Looking up the latest release…

On first launch, macOS asks you to allow ChargeKeeper's background service in System Settings > General > Login Items. That service is what talks to the battery.

Features

Keeping a battery between 50 and 80% slows its wear. ChargeKeeper does it for you, even when the app is closed.

Charge limit

Pick a limit from 20 to 100%. On macOS 26 and later, the Mac's own charge limit does the work from 80%.

Discharge

Run from the battery while plugged in, down to your limit. Start it by hand or let it start on its own.

Idle range

Recharge only once the level drops below a range, instead of topping up after every percent.

Calibration

A full cycle: 100%, down to 10%, back to 100%, one hour of rest, then your limit.

Heat protection

Charging pauses above the temperature you set, checked in five-minute windows.

Power flow

Watts from the adapter and the battery to the Mac, live. Warns you when the adapter is too weak.

Schedule

Set a limit, calibrate, charge to 100% or toggle Low Power Mode at set times. Missed tasks can run on wake.

Shortcuts and Terminal

Every action in the Shortcuts app, and chargekeeperctl on the command line.

And also

  • Charge to 100% once
  • MagSafe LED colors
  • Stay awake until the limit
  • Freeze the level during sleep
  • Hardware battery percentage
  • Works for every user account
  • English and French
  • 0% CPU when the menu is closed

Privacy

ChargeKeeper only goes online to check for updates on GitHub. No account, no telemetry, no personal data collected.

That update check contacts github.com, which sees your IP address and the app version. Everything else stays on your Mac.

This website is hosted by GitHub Pages, which logs visitors' IP addresses (see GitHub's privacy statement). Your browser asks api.github.com for the latest release. No cookies, no analytics: only your language choice is kept in your browser (localStorage). Fonts are served from this site.

Read the code (MIT license)

Frequently asked questions

Why does ChargeKeeper need a background service?

Changing how the battery charges requires administrator rights. A small service runs as root and does only that; the menu bar app talks to it through a local socket that only administrators can use. You approve it once in System Settings.

Which Macs are supported?

MacBooks with Apple silicon, on macOS 14 or later. Intel Macs are not supported.

How does a limit below 80% work on macOS 26 and later?

macOS's built-in limit stops at 80%. Below that, ChargeKeeper switches between battery and adapter around your limit, so the level moves by about 1%.

How do updates work?

ChargeKeeper checks the latest GitHub release on startup, then every 6 hours. Each update is signed: the app checks the signature, installs it and restarts its service.

How much does it use?

With the menu closed, the app uses no CPU and about 20 to 30 MB of memory; the service about 30 MB. The power flow animation only runs while it is on screen.

How do I use chargekeeperctl from the Terminal?

Homebrew puts it on your PATH. With the .dmg, link it once: sudo ln -s /Applications/ChargeKeeper.app/Contents/MacOS/chargekeeperctl /usr/local/bin/chargekeeperctl, then chargekeeperctl status.

How do I uninstall it?

Quit ChargeKeeper and move it to the Trash. With Homebrew: brew uninstall --zap chargekeeper.