The Challenge of Consistency

We've all been there: you start a new habit with enthusiasm — meditation, exercise, reading, maybe just getting some morning sunlight. The first week goes great. Then life happens. You miss a day. Then another. Soon you're wondering: "When was the last time I actually did this?"

Org mode users have long had a powerful solution to this problem: org-habit, a consistency graph that shows your habit completion history at a glance. And now, we're thrilled to announce that organice brings this feature to your browser and mobile device!

Here's what it looks like:

What Are Org Habits?

If you're new to Org mode, here's the concept: a "habit" is a TODO item that repeats on a schedule. Each time you complete it, the task reschedules itself. Over time, your LOGBOOK fills with completion timestamps.

The magic happens in the Agenda view. Instead of just showing today's tasks, Org habits display a consistency graph — a row of colored squares representing each day. At a glance, you can see your streak, your gaps, and how you're doing overall.

Color code

  • Blue: If the task was not to be done yet on that day.
  • Green: If the task could have been done on that day.
  • Yellow: If the task was going to be overdue the next day.
  • Red: If the task was overdue on that day.

And for comparison, here's the same data displayed in Emacs org-mode:

Setting Up Your First Habit

Creating a habit is straightforward. Here's a complete example:

* TODO I will get sunlight, in the morning, so that I can become an awake person
  SCHEDULED: <2026-01-08 Thu .+1d>
  :PROPERTIES:
  :STYLE:    habit
  :END:

Let's break down the key parts:

  1. STYLE: habit - This property tells organice to treat this as a habit and show the consistency graph
  2. SCHEDULED: <2026-01-08 Thu .+1d> - The timestamp with a repeater. The . means "shift from today when marked DONE"—perfect for habits

Understanding Repeaters

The repeater syntax is worth understanding, as it changes how tasks reschedule:

=+ (plus repeater): Shifts from the original date. If you miss multiple days, all missed instances appear as overdue. Useful for deadlines but less ideal for daily habits.

=++ (plus-plus repeater): Shifts to a future occurrence while preserving certain properties (like day of week). Good for "every Tuesday" style tasks.

. (dot repeater): Shifts from today when you mark it DONE. This is the sweet spot for habits—if you miss a few days, the next occurrence is always tomorrow.

Min/Max Ranges

Here's something clever that's unique to habits: the min/max slash syntax. Lets say you want to do your weekly GTD (Getting things Done) review every week, but you know life gets busy. You might aim for weekly but accept every other week:

SCHEDULED: <2026-01-08 Thu .+1d/2d>

This means "at most every 1 week, at least every 2 weeks." The consistency graph will show green for weekly consistency, but won't mark you red for the occasional off week.

Configuring Your Graph

The consistency graph has three configurable settings in organice:

  1. Org habit preceding days (default: 21) - How many days back to show
  2. Org habit following days (default: 7) - How many days forward to show
  3. Show all habits today - Whether to show all habits regardless of due date

Adjust these based on your preference. A longer preceding window gives you more historical context. A longer following window helps you see what's coming.

Try It Out

Ready to build better habits? Here's how to get started:

  1. Open https://organice.200ok.ch
  2. Create a new TODO item
  3. Add a SCHEDULED timestamp with a repeater (try . for habits)
  4. Add the property STYLE: habit
  5. Open the Agenda view and watch your consistency graph appear!

For more details on habit configuration, check out the full documentation.

Acknowledgments

Org habits in organice builds on the excellent work of the Org mode community. The original org-habit implementation was created by the Org mode developers, and we're grateful for their pioneering work in this space.

Feedback and Contributions

As with all organice features, we welcome feedback! Find us on:

Happy habit building!


If you liked this post, please consider supporting our Free and Open Source software work – you can sponsor us on Github and Patreon or star our FLOSS repositories.