Show the moon phase in your Mac menu bar

Multimeter has a face for this: the Moon Phase face waxes from new to full as its value climbs. Feed it the moon’s illumination and it draws tonight’s moon.

The command works it out from the date alone, counting lunar cycles since a known new moon, so it needs no network and no API.

Recipe tested October 29, 2026 with Multimeter 1.1. Source: Script.

Preview: the Moon Phase face and two alternatives, with sample values like the ones this recipe returns.

What you need

  • Multimeter for macOS 13 or later, $19.99 once.
  • The direct download version of Multimeter from this site (the Script source isn’t in the Mac App Store version).

Set it up

  1. Try it in Terminal. It prints the percent illuminated and whether the moon is waxing or waning:
    Command
    s=$(( ($(date +%s) - 947182440) % 2551443 )); awk -v s=$s 'BEGIN { a = s / 2551443; i = (1 - cos(2 * 3.14159265 * a)) / 2 * 100; printf "{\"value\": %d, \"formatted\": \"%d%% %s\"}\n", i + 0.5, i + 0.5, (a < 0.5 ? "waxing" : "waning") }'
  2. Add a Script meter with the command and refresh every 15 minutes.
  3. Leave the range at 0 to 100, turn alerts off, and pick the Moon Phase face.

Multimeter settings

In Customize This Meter… (from the meter’s menu):

Settings for this meter
SettingValue
SourceScript
Commandthe awk line above
Refresh every15 minutes
Range0 to 100
AlertsOff
LabelMOON
FaceMoon Phase

Tested: Run on October 29, 2026, three days after the full moon of October 26: {"value": 86, "formatted": "86% waning"}.

Script meters need the direct download version of Multimeter from this site, which is the one on sale now. How commands run, the PATH they see and the 10 second limit are in the Script meters guide.

Limits

  • The average lunar month is used, so the phase can be off by up to about a day from an almanac. For a glance at the sky, that is plenty.

Troubleshooting

What the meter says, why, and what to do
SymptomCauseFix
The script didn’t print a numberThe command failed or printed an error message instead.Run the exact command in Terminal. If it works there, check for tools that live outside the meter’s PATH and use their full path (which tool).
The script took longer than 10 secondsA slow network call. Multimeter stops scripts after 10 seconds.Keep the -m timeout on curl, and refresh less often.
Scripts need the version from multimeterapp.comThis copy of Multimeter came from the Mac App Store, which can’t run scripts.Use the direct download version, or run the command from cron or launchd and point a File meter at its output.

Questions

Does this work in the Mac App Store version?

Script meters need the direct download version from multimeterapp.com, because the App Store sandbox doesn’t let apps run your commands. Web Address, File and Sent Value meters work in every version.

Does the face show waxing versus waning?

The face draws how full the moon is. The words “waxing” or “waning” appear in the meter’s menu and in text faces.

Related

Put it in your menu bar

$19.99 one-time. No subscription. Needs macOS 13 Ventura or later.