Habit Tracker
Build better habits with daily tracking and streaks
Add New Habit
No habits yet. Add your first habit above!
The habit tracker gives every habit you add its own color-coded row with a rolling 30-day calendar, a current-streak counter, and a total completion count. You add habits by name, tick days as you complete them, and the data is saved in your browser — no account, no sync, no server.
How the 30-Day Grid Works
Each row holds exactly 30 cells, laid out 10 across and 3 down, ending on today. The leftmost cell is 29 days ago and the rightmost is today. A completed day fills with the habit’s color; an incomplete day stays pale gray. Clicking any cell toggles that date, so backfilling last Tuesday is a single click. The day number (1–31) appears in each cell, and hovering reveals the full weekday and date.
How Streaks Are Counted
The streak is the number of consecutive completed days ending today. The rule has one sharp edge: if today is not marked complete, the streak is 0, no matter how long the run was through yesterday. When today is complete, the tool walks backward one day at a time and stops at the first gap.
streak(habit, today) =
today complete ? 1 + streak(habit, yesterday) : 0
The completion count, by contrast, is simply the number of true entries across all stored days. It never resets and ignores gaps.
Worked Example: Building a Reading Habit
Say you add a habit called Read 20 pages on a Monday, and over the next two weeks you tick the box every day except one Friday. On the following Monday morning:
- The 30-day grid shows 14 colored cells and one gray Friday.
- The completion count reads 13.
- The streak might read 0 if you have not yet ticked Monday, or 4 once you do — counting Monday, Sunday, Saturday, and Thursday, with the run ending at the missed Friday.
If you later click that missed Friday to fill it in, the streak recomputes and now reaches back through the whole stretch, because the only gap is gone.
What Persists and What Is Missing
Everything is written to localStorage under the key handytools-habits each time you add a habit or toggle a day. Your history reappears after a refresh or a browser restart, as long as you do not clear site data. Two limitations are worth knowing: there is no delete or rename control for a habit, and there is no all-time-longest-streak figure. To start over you clear the site’s storage, which removes all habits together. Each new habit takes the color you pick in the color input, or the blue swatch shown if you leave it; ten preset colors exist in the palette, but the picker accepts any hex value.
Designing a Habit Worth Tracking
The tracker records whatever you decide to measure, so the measurement itself matters. A vague entry like Get fit gives you nothing to tick. A concrete action you either did or did not do — Walk 20 minutes, Read 10 pages, No soda — produces an unambiguous cell and an honest streak. Keep the daily target small enough that a bad day still leaves room to succeed; a two-minute version of the habit is easier to sustain and still keeps the grid green.
Practical Tips and Expectations
The 30-day window is long enough to show real consistency and short enough to scan in a second. A solid block of color means the habit is established; a checkerboard means motivation is arriving in bursts; a long gray stretch that ends in green usually means you restarted recently. Because the window scrolls forward every day, a gap that felt dramatic a month ago eventually drops off the left edge — useful when you want to move on rather than stare at an old failure.
A Realistic Expectation
Most people miss a day within the first two weeks. The tracker is built for that: a missed cell is just an empty cell, and filling it in later repairs both the visual record and the streak. What it cannot do is make the habit automatic — the grid only reflects what you entered. If you find yourself backfilling several days at once, the habit is probably too ambitious and the target should shrink.
Practical Tracking Tips
- Keep the list short. Three to five habits fit on one screen and stay honest; a dozen rows invites scrolling past the ones you are avoiding.
- Backfill within the day. Because a midnight rollover can drop a streak to zero, tick the box the same day you do the thing.
- Use distinct colors. The color picker is free-form, so give related habits different hues and scan the grid instead of reading every name.
- Treat a missed day as data. The grid makes gaps obvious; aim to avoid two in a row rather than keeping a perfect record.
Related Tools
- Pomodoro Timer — Stay focused with 25-minute work sessions and 5-minute breaks.
- Stopwatch & Timer — Lap timing stopwatch plus countdown timer.
- Countdown Timer — Event countdown with customizable presets.
- Random Decision Maker — Coin flip, dice roll, and random picker for decisions.
Frequently Asked Questions
Why is my streak zero when I completed the habit yesterday?
The streak only starts if today is marked complete. The counter works backward from today, so at the start of a new day the streak reads 0 until you tick today's box. Complete today and the run of previous days is counted and restored.
Can I remove one habit without clearing everything?
There is no delete control in the current interface. Habits can be added and days toggled, but the only way to remove a habit is to clear this site's localStorage, which erases all habits and history at once.
Does the tracker remember the longest streak I ever had?
No. It computes and displays only the current streak. There is no all-time-best number, so if you break a run the previous record is not preserved anywhere in the UI.
Which time zone decides the day boundary?
The calendar labels use your local date, but the streak function compares ISO date strings built from UTC. Around midnight, or when the device offset differs from UTC, the day the streak sees can lag the day shown in the grid.
Can I fill in a day I missed last week?
Yes. Every cell in the 30-day grid is clickable, so you can toggle any past day on or off. The completion count updates immediately and the streak recalculates from today.
Where is my habit data stored?
In this browser's localStorage under the key handytools-habits. It survives closing the tab but is tied to one browser on one device. Clearing site data, using private mode, or switching browsers starts you from an empty tracker.
Reviewed by the HandyTools Hub team · Last updated