100 Days of Code Tracker
One hour of code a day for a hundred days, tracked on one grid. Tick the day off when the hour is done and the commit is public. Miss one and the cell shows it, but you do not go back to day 1, because the official rules never said you had to.
Ready for 100 Days of Code?
Track your daily tasks and build consistency. Miss a day? Keep going.
Daily Tasks
- Code for One Hour Sixty minutes minimum on a real project, outside your paid work and outside tutorials
- Log It in Public Push the commit or post the update with #100DaysOfCode, so the day leaves a trace someone else can see
Day-by-Day Progress
How this 100 days of code tracker works
Press Start Challenge and day 1 is today. No start-date field to fill in and no GitHub OAuth screen to get past.
Each day has two checkboxes: the hour of code, and the public log. The day only records when both are ticked, then you press Complete Day. Today's boxes clear at midnight, so yesterday's ticks never roll forward into a day you have not done yet.
Three numbers move as you go: the day you are on out of 100, the number of days completed, and your completion percentage. Because the run is exactly 100 days, those last two read as the same figure. Seventy-eight days done is 78%.
The grid renders 15 cells per row, so all 100 days sit in roughly seven rows on a single screen. A missed day shows as a missed cell, not a reset. Everything is stored in your browser's local storage, on one device in one browser, and nothing leaves the machine.
That puts this in the middle of the field. The VS Code and JetBrains time-tracking extensions count your editor hours automatically, but they only see what happens inside the editor. The GitHub-backed leaderboard trackers want an account and a public repo before you get a grid. Notion templates and printable check sheets have no state at all, so the counting is back on you. This one holds the state without a login. If your 100-day habit is not code, the general-purpose 100-day challenge tracker runs the same grid without the coding framing.
The real rules, and which ones are worth keeping
There are three published rules. Code for a minimum of one hour every day for 100 days. Post your progress publicly each day with the #100DaysOfCode hashtag. Encourage at least two other participants who are doing the same thing.
Then there are two exclusions people skip past. Code you write for your job does not count, and tutorial or online course time does not count either. Both make sense once you see what they are protecting. The challenge is aimed at the hour you would not otherwise have found, and work already has your hours. It is also aimed at building rather than watching, and a video does most of the thinking for you.
One collision is worth naming once: the Udemy "100 Days of Code" Python bootcamp is a different product that happens to share the name. Working through it is a legitimate 100-day project. It is also coursework, so under the hashtag challenge's own rules it does not count towards the hour. Pick which challenge you are running and log it honestly.
The daily-tweet rule needs updating rather than dropping. It was written when Twitter was where developers talked, and the hashtag still runs there, but the useful reading in 2026 is "post somewhere a person will notice." Mastodon, LinkedIn, dev.to, a Discord channel, or a log file committed to a public repo all do the job. Posting is what makes the rule work. Twitter was just where it started.
The tracker gates the day on the first two rules and leaves the third to you. Encouraging other people is good for a run, but it is a bad thing to fail a day on.
Where 100 days of code runs aground
The hour you cannot find. Most misses are calendar failures, not motivation failures. Define the floor version now, while you still feel good: one meaningful commit, or 20 minutes on the smallest open issue. Set it early. Deciding what counts as a minimum on day 54, in the middle of the miss, tends to go badly.
The tutorial drift. Watching is easier than building, and by week four the hour quietly turns into video. This is the exclusion in the official rules, and it is there for a reason. The test takes a second: did anything you wrote today not exist in a video?
Running out of things to build. Around week five or six the starter projects are finished and nothing obvious is next. The fix is a backlog, not inspiration. Keep a running list of small issues on your own project, or pick one open-source repo and work its good-first-issue queue. Ten seconds picking tomorrow's task at the end of today's hour beats 40 minutes staring at an empty editor tomorrow.
The drop-off is real and it is early. Reported completion figures for the best-known 100-day coding curriculum have roughly half of the people who start never reaching day 2, and well under 1% reaching day 100. Those numbers come from a course platform rather than the hashtag challenge, so treat them as rough. The shape is the useful bit: nearly all of the attrition happens early, which makes the unremarkable middle weeks the ones worth planning for.
Bad weeks, not bad days. An on-call rotation, a release week, the flu. Single bad days are easy. A bad week is what the one-miss allowance and the floor version exist for, and it is where most runs are actually decided. If you want to see what a specific miss costs against your target, the Streak Recovery Calculator does that arithmetic.
Forgiving by default, and what that costs
Start with the correction, because almost everyone repeats the wrong version. "Miss a day, start over" is not in the official rules or the official FAQ. What the FAQ actually says is that you are allowed to miss one day, then make it up by adding one more day to the end of the 100, but never miss two days in a row. The restart convention grew up around the hashtag; it was never published as a rule.
The arithmetic agrees with the FAQ. Under a restart rule, missing day 5 costs you four days and missing day 92 costs you 91. In this tracker's strict mode, a miss clears the stored progress and puts you back on day 1. Over a run this long that rule stops protecting the habit and starts deleting the evidence of it.
Forgiving is not a rolling week off. The guard is the challenge's own two-day rule: one miss is noise, two in a row is a new pattern. Mark the missed day, then make the next one non-negotiable even at the floor version.
There is a real cost, and it is worth knowing before you rely on it. The completion celebration and the best-streak screen only appear at 100 out of 100. A run with misses in it ends on a Challenge Period Ended panel showing your final count. That is a score rather than a failure, but it is not the same screen.
Strict genuinely fits some people: a second round after you have finished one, or a bright-line commitment where the unbroken run is the whole idea. The 75-Day Hard Challenge Tracker is the strict-mode example, and the guide on strict vs forgiving habit tracking works through the decision. LockIn30 sets strictness per challenge, so round 1 can be forgiving and round 2 can be strict.
Frequently asked questions
What are the actual rules of #100DaysOfCode?
Three of them, from the official site. Code for a minimum of one hour every day for 100 days. Share your progress publicly each day with the #100DaysOfCode hashtag. Reach out to at least two other people doing the challenge. The rules repository adds two exclusions that trip people up: code you write for your job does not count, and neither does tutorial or online course time. The tracker here gates the day on the first two, because a completed hour of code should not be voided by a day you did not feel like replying to strangers.
If I miss a day, do I have to start over?
No, and this is the most misquoted part of the challenge. The official FAQ says you are allowed to miss one day, then make it up by adding one more day to the end of the 100, but never miss two days in a row. Nothing in the published rules says restart from day 1. This tracker matches that: a missed day shows as a missed cell, your logged days stay logged, and you carry on. The guide on strict vs forgiving habit tracking covers when the harsher rule is worth it.
Does tutorial or course work count towards the hour?
Not under the official rules. The rules repository is explicit that time spent on tutorials, online courses and similar resources does not count, because the point is real projects with real problems. In practice most beginners bend this, and the sensible bend is a ratio rather than a blanket exemption: the tutorial can teach the thing, but the hour only counts once you are building something that was not in the video. If you are following a structured course like the Python bootcamp that shares the name, you are doing something different from the hashtag challenge, and that is fine, but keep the log honest about which one it is.
Does the code I write at work count?
Not officially. The rules say job coding does not count towards the challenge, because you were going to do it anyway and the challenge is about the hour you would not otherwise have found. Some people run a modified version where work code counts, which is a reasonable adaptation for anyone coding 10 hours a day already. Just decide that on day 1. Rewriting the rule on day 40, when you are tired and behind, is a different exercise entirely.
Do I have to tweet every day? What if I am not on X?
The public log matters; the platform does not. The rule was written in 2016 when Twitter was where developers were, and the hashtag still runs there, but the accountability works the same on Mastodon, LinkedIn, dev.to, a Discord thread, or a markdown log file committed to a public repo. That is why the tracker's second task reads "push the commit or post the update": either one leaves the trace. If you want the community half of the challenge, freeCodeCamp runs a #100DaysOfCode Discord where people post daily.
What counts as coding? Does debugging or reading docs count?
If you were in the editor moving your project forward, count it. Debugging counts, refactoring counts, writing tests counts, and reading documentation counts when it is documentation for the thing you are building right now. Planning the architecture on paper for an hour is a judgement call, and the check that settles most of them is the one from the official FAQ: before you go to sleep, ask whether you actually coded for an hour that day. If you have to argue the case, the answer is usually no.
Is my progress saved, and do I need a GitHub login?
No login, no account, nothing sent to a server. Progress is saved in your browser's local storage, on this device in this browser. Most #100DaysOfCode trackers ask you to sign in with GitHub so they can put you on a leaderboard; this one does not, which also means the grid lives and dies with this browser profile. Over more than three months, a cleared cache, a reinstalled browser or a new work laptop will all take it with them. That is the honest case for keeping a run this long somewhere sturdier than a browser tab.
What happens at day 100, and can I run a second round?
Yes, and most people who finish do. Rounds are the normal shape of this challenge, and Round 2 usually looks different from Round 1: one project rather than many, or a language you have been avoiding, or a strict rule now that you know you can hold a loose one. To start again here, reset the tracker and press Start Challenge; day 1 is that day. In LockIn30 a restart bumps the attempt number and keeps the finished run in your history, so round 2 does not overwrite round 1. Either way the tracker is only the record. The hour you kept clearing for three months is the part that carries.
A hundred days is a long run to keep in one browser profile.
LockIn30 runs the same single-habit challenge on your phone for anywhere between 7 and 365 days, so a 100-day coding run fits without workarounds. It reminds you at the hour you actually sit down to code, keeps streak and completion statistics, and has a Be Honest flow for the days you miss. If your project is something you can see, progress photos stack into a shareable 1080x1920 timelapse. Set it to forgiving for the long run, or strict if you want the bright line. Everything stays on your device and there is no account.
Download