Playground

Try the two things people ask about first.

Quick add turns one typed line into a task with a date, a project, labels, a priority and an estimate. Filters turn a short query into a live list. Both run in your browser here, as miniatures of the real features; the demo runs the real thing. Quick add syntax · Filter queries

Quick add

One line, everything set.

Dates in everyday words, #project, @label, a priority from p1 to p4 and an estimate like +30m. Chips show what was understood before you press Enter, and a word taken by mistake can be dismissed. Preview chips

  • Six languages in the app: English, German, French, Italian, Spanish and Portuguese, all at once. Languages
  • Text in double quotes is never interpreted. Preview chips
  • Repeat rules are set in the task panel, not typed here. Make a task repeat

The how-to

  • next Wednesday 15:00
  • #Work
  • @call
  • P1
  • 30 min

Title that will be saved: Meeting with Sarah

Try:
Examples of quick-add lines and what they create
You typeUnderstoodTitle
Meeting with Sarah next Wed at 3pm #work @call p1 +30mnext Wednesday 15:00, #Work, @call, P1, 30 minMeeting with Sarah
Pay rent by fridayFridayPay rent
Watch "Next Friday" tomorrowtomorrowWatch Next Friday
Buy 3 applesnothing specialBuy 3 apples

A miniature in English that follows the quick add reference: dates and times, #project (Work, Home, Errands and Travel exist here), @label, p1 to p4, +30m, and double quotes to keep text literal. The app also reads German, French, Italian, Spanish and Portuguese, and knows your real projects.

Filters

Ask a question, pin the answer.

A query combines small pieces with &, | and !. When the results are useful, press s in the app and the query becomes a saved view in the sidebar, with a live count, on all your devices. Save a filter as a view

  • Filters run on your device: instant, and they work offline. Tips
  • Up to six saved views side by side make a dashboard. Build a dashboard
  • Ten worked examples live in the reference. Examples

The how-to

Without JavaScript this shows the whole sample list; with it, the matching tasks.

Try:
  • Call the plumber about the leak
    1 day overdueHome@call@waitingP1
  • Renew passport
    3 days overdue@errandP2
  • Get three quotes for the kitchen
    todayHome@callP1
  • Review pull request #42
    todayWork@deep-workP2
  • Write release notes for v1.0
    tomorrowWork › Q4 launch@deep-workP2
  • Pick up groceries
    today@errand
  • Status page
    Tue 20 OctWork › Q4 launchP3
  • Water the plants
    Sun 18 Oct
  • Book the dentist for both kids
    Thu 22 OctFamily@callP2
  • Plan the trip to Lisbon
    no dateTravelP3
  • Read the sync design doc
    no dateWork@deep-work@someday
  • Invoice the client
    Sun 25 OctWork@waitingP1
  • Return the library books
    Wed 28 Oct@errandP3completed
  • Fix the squeaky door
    no dateHomecompleted

12 open and 2 completed sample tasks. A miniature of the filter language: @label, #project, ##project (with sub-projects), p1 to p4, today, tomorrow, overdue, no date, no project, due <= 7 days, due before friday, search: word, completed, joined with &, |, ! and brackets. The app runs the real thing over your own tasks, offline.

The real thing is one click away.

The demo runs the actual parser and the actual filters over sample data, with nothing to install and nothing kept.

OpenTodo is free and open source, with no paid tier. If it helps you, a star on GitHub helps other people find it, and a coffee helps keep it going.

Buy me a coffee