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
Tap to update
Tap to update
Tap to update
Tap to update
Tap to update
Tap to update
Tap to update
Tap to update
Tap to update
Mon
33
Tap to update
44
Tap to update
38
Tap to update
49
Tap to update
Tap to update
70
Tap to update
81
Tap to update
75
Tap to update
86
Tap to update
97
Tap to update
Tue
Tap to update
35
Tap to update
46
Tap to update
57
Tap to update
69
Tap to update
63
Tap to update
74
Tap to update
Tap to update
94
Tap to update
88
Tap to update
Wed
34
Tap to update
45
Tap to update
39
Tap to update
Tap to update
60
Tap to update
71
Tap to update
82
Tap to update
76
Tap to update
87
Tap to update
98
Tap to update
Thu
42
Tap to update
36
Tap to update
47
Tap to update
59
Tap to update
70
Tap to update
64
Tap to update
Tap to update
84
Tap to update
95
Tap to update
100
Tap to update
Fri
35
Tap to update
46
Tap to update
55
Tap to update
50
Tap to update
61
Tap to update
72
Tap to update
83
Tap to update
77
Tap to update
88
Tap to update
Tap to update
Sat
43
Tap to update
37
Tap to update
48
Tap to update
60
Tap to update
71
Tap to update
Tap to update
74
Tap to update
85
Tap to update
96
Tap to update
100
Tap to update
June
July
August
Less
More

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.

FeatureCommittedHabitHeat, init.Habits
A year of days as one graphYesYes
A number inside the square, not just a tickYesYes, on both
Habits you are trying to do less ofCounted down, and shaded by how close to zero you gotNot offered
A single score for how the month went0 to 100, with the weights published belowNot offered
Tasks in the same appProjects, due dates, priorities, recurring tasksHabits only
Price to track unlimited habitsFreeFree

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