The commit graph, for your life
GitHub-style habit tracker
with numbers in the squares
One square per day, shaded by how much you actually did. Ninety days of work in a single glance, whether the number is going up or down.
A tick cannot tell twelve pushups from a hundred
Most habit grids record one bit per day: you did the thing, or you did not. That bit is enough to draw a streak, and streaks are motivating right up until the morning you manage twelve pushups instead of your usual hundred and the app records it exactly the same as the day you did nothing at all.
Committed writes the number into the square and sets the shade from how close it came to your goal. A light square is a day you showed up tired. An empty one is a day you did not show up. Those are different facts about your life and the graph should say so.
Pushups
Ninety days, climbing from ten a day to a hundred. Rest days left in.
| Sun | Aug 20 of 100Click to update progress | Aug 90 of 100Click to update progress | Aug 160 of 100Click to update progress | Aug 230 of 100Click to update progress | Aug 300 of 100Click to update progress | Sep 60 of 100Click to update progress | Sep 130 of 100Click to update progress | Sep 200 of 100Click to update progress | Sep 270 of 100Click to update progress | |
| Mon | 44 Aug 344 of 100Click to update progress | 38 Aug 1038 of 100Click to update progress | 49 Aug 1749 of 100Click to update progress | Aug 240 of 100Click to update progress | 70 Aug 3170 of 100Click to update progress | 81 Sep 781 of 100Click to update progress | 75 Sep 1475 of 100Click to update progress | 86 Sep 2186 of 100Click to update progress | 97 Sep 2897 of 100Click to update progress | |
| Tue | 35 Aug 435 of 100Click to update progress | 46 Aug 1146 of 100Click to update progress | 57 Aug 1857 of 100Click to update progress | 69 Aug 2569 of 100Click to update progress | 63 Sep 163 of 100Click to update progress | 74 Sep 874 of 100Click to update progress | Sep 150 of 100Click to update progress | 94 Sep 2294 of 100Click to update progress | 88 Sep 2988 of 100Click to update progress | |
| Wed | 45 Aug 545 of 100Click to update progress | 39 Aug 1239 of 100Click to update progress | Aug 190 of 100Click to update progress | 60 Aug 2660 of 100Click to update progress | 71 Sep 271 of 100Click to update progress | 82 Sep 982 of 100Click to update progress | 76 Sep 1676 of 100Click to update progress | 87 Sep 2387 of 100Click to update progress | 98 Sep 3098 of 100Click to update progress | |
| Thu | 36 Aug 636 of 100Click to update progress | 47 Aug 1347 of 100Click to update progress | 59 Aug 2059 of 100Click to update progress | 70 Aug 2770 of 100Click to update progress | 64 Sep 364 of 100Click to update progress | Sep 100 of 100Click to update progress | 84 Sep 1784 of 100Click to update progress | 95 Sep 2495 of 100Click to update progress | 100 Oct 1100 of 100Click to update progress | |
| Fri | 46 Aug 746 of 100Click to update progress | 55 Aug 1455 of 100Click to update progress | 50 Aug 2150 of 100Click to update progress | 61 Aug 2861 of 100Click to update progress | 72 Sep 472 of 100Click to update progress | 83 Sep 1183 of 100Click to update progress | 77 Sep 1877 of 100Click to update progress | 88 Sep 2588 of 100Click to update progress | Oct 20 of 100Click to update progress | |
| Sat | 43 Aug 143 of 100Click to update progress | 37 Aug 837 of 100Click to update progress | 48 Aug 1548 of 100Click to update progress | 60 Aug 2260 of 100Click to update progress | 71 Aug 2971 of 100Click to update progress | Sep 50 of 100Click to update progress | 74 Sep 1274 of 100Click to update progress | 85 Sep 1985 of 100Click to update progress | 96 Sep 2696 of 100Click to update progress | 100 Oct 3100 of 100Click to update progress |
Real data from a real habit shape. Switch to Year to see the same run as a full contribution graph.
Why the graph works
The honest version is that nobody has proven a contribution graph makes people more consistent. What can be said without overclaiming is narrower, and still useful.
A grid shows a month at once, so one missed day reads as one pale square among thirty rather than as a counter resetting to zero. That proportionality is the real difference from a streak number, which turns a single bad Tuesday into the loss of everything before it. The behaviour a streak counter most reliably produces is quitting after you break one.
The idea is also older than GitHub. Comedians and writers have kept wall calendars with a mark for every day worked for far longer than the contribution graph has existed, and the appeal is the same: a record you can see across the room, where the run itself becomes the thing you do not want to spoil.
What the graph will not do is make a badly chosen goal achievable. If you set sixty minutes and average thirty-eight, a year of pale squares is an accurate picture of a target that was wrong, not of a person who failed.
Streaks versus momentum
One number for how the month actually went
A streak answers one question: how many days in a row. It cannot tell you whether this month beat last month, and it is destroyed by a single missed day no matter how good the fifty before it were.
Momentum is a score out of 100 that survives a bad Tuesday. Here is exactly how it is built, because a score you cannot inspect is a score you have no reason to trust.
- 40%Days you hit the goal in the last weekWhat you did recently counts most.
- 30%Days you hit the goal in the last monthOne good week is not a habit yet.
- 20%Your current streak, full marks at fourteen daysRewards the run without making it everything.
- 10%How far into each goal you got, averagedThirty pushups beats zero, and the score says so.
Two consequences worth stating plainly. A perfect score needs a fortnight of hitting every goal, so 100 is reachable but not casually. And your streak is never broken by today: a run survives until the day is actually over, so an unfinished afternoon does not cost you a month of work.
The other direction
Some habits you are trying to do less of
Every habit grid can count up. Almost none can count down, so the things people most want to change, drinks, cigarettes, hours on a phone, end up tracked as a yes or no about whether you were perfect. Committed treats reducing as its own shape: you set what you are starting from and what you are aiming at, and a day shades darker the closer to the target you land.
Set the direction
Twenty a day down to zero. The goal is the floor, not the ceiling.
Log what happened
Three today. Not a failure, a number, and a shade closer than yesterday.
Scored the right way
Momentum counts a low number as the win it is, rather than as nothing done.
Against the other GitHub-style trackers
HabitHeat and init.Habits both build good versions of this idea, and both already let you put a value in a cell rather than a bare tick. The rows below say so. Where Committed differs is what happens after the graph is drawn.
| Feature | Committed | HabitHeat, init.Habits |
|---|---|---|
| A year of days as one graph | Yes | Yes |
| A number inside the square, not just a tick | Yes | Yes, on both |
| Habits you are trying to do less of | Counted down, and shaded by how close to zero you got | Not offered |
| A single score for how the month went | 0 to 100, with the weights published below | Not offered |
| Tasks in the same app | Projects, due dates, priorities, recurring tasks | Habits only |
| Price to track unlimited habits | Free | Free |
Compiled in August 2026 from what each product publishes on its own GitHub-style tracker page. If any of it has gone out of date, tell us and it gets corrected.
Start your graph today
One habit is enough to begin. Unlimited habits, unlimited history, free forever.
Get started free