M3 Tracker
Requires macOS 13 or later · Free · Signed and notarized by Apple
How far does your mouse actually travel in a day? M3 Tracker sits in your menu bar and counts the distance, along with your keystrokes and your left and right clicks, then charts it by hour, by day, and across the year.
Screenshot
Click the menu bar item to see today by hour, the past week by day, and the year to date.
What it counts
Distance
Both a mouse and a trackpad move the pointer the same way, so both are counted identically. The menu bar shows feet to the tenths place until you pass a mile, then switches to miles. Counters persist across restarts and reboots, so the total is cumulative rather than a per-session count.
Clicks and keystrokes
Left and right clicks are counted separately, and keystrokes are counted as a running total rather than recorded. Nothing you type is stored, and nothing leaves your Mac.
Resetting and preferences
Preferences shows your current stats and lets you reset mileage, keystrokes, clicks, or everything, each behind a confirmation. There is also a Launch at Login checkbox, which works once the app is in your Applications folder.
The one permission it asks for, and why
Counting keystrokes requires Accessibility permission. macOS prompts for it the first time you launch the app, and you can also grant it later at System Settings, Privacy and Security, Accessibility.
It matters that this only affects keystrokes. Mouse movement and clicks are counted with no permission at all, so without it the app looks like it is working perfectly: your mileage climbs, your clicks climb, and your keystroke count sits at zero forever with no error of any kind.
Because that failure is invisible, the app tracks the permission explicitly. Preferences shows a warning with a button straight to the right settings panel when it is not trusted, and it re-registers its monitors if you grant permission while it is running, which does not otherwise happen on its own.
Installing it
Open the downloaded disk image, drag M3 Tracker to your Applications folder, and launch it. There is no setup beyond granting the one permission below.
Keeping it up to date
M3 Tracker updates itself from GitHub. Check for Updates in the menu bar does it on demand, and there is a Check for Updates at Launch option that stays silent unless there is something to offer. Declining an update offers Skip This Version, which stops the launch check raising that one again, though checking manually still will.
Under the hood
How it measures
A global event monitor observes pointer movement, clicks, and key-down events system-wide. Distance is accumulated in Cocoa points and converted using the standard 72-points-per-inch definition, since there is no API to query a pointing device's physical DPI. Counters are written to UserDefaults every five seconds and on quit, with mileage separately bucketed by hour and day for the charts, which are drawn with Swift Charts.
How updating works
The app compares the latest GitHub release tag against its own bundle version and, if newer, downloads that release's disk image. Before installing it verifies the signature, requires the same Developer ID Team ID as the running copy, and requires a passing Gatekeeper assessment. Any failure aborts and leaves your installed copy untouched. The swap is handed to a detached script, because an app cannot replace its own bundle while running, and the old bundle is moved aside rather than deleted so a failed copy can be restored.
Building from source
M3 Tracker is a Swift package and builds as a universal binary for both Intel and Apple Silicon, with a macOS 13 deployment target. Build instructions are in the repository.
