Quick Links

Todo.txt stores your tasks in a simple text document, and I've been using it for a year now. I honestly wonder why I ever used anything else.

To-do lists don't have to be complicated: people literally use pen and paper to keep track of their tasks. And yet most modern to-do apps are bloated nightmares.

Wunderlist, for example, takes up 127 MB of hard disk space on macOS, even though the app is basically a wrapper for a website. And it gets worse: Microsoft bought Wunderlist in 2015, and plans on eventually shutting it down in favor of Microsoft To-Do, a new-ish app that as of this writing isn't even available for Mac.

That's a lot of nonsense to deal with, and we haven't even gotten into the subscription upselling most to-do apps on the market try to pull for what is basically a text document. Which is why I advocate ditching them all and using a text document. Not only is using a text document simple and flexible, but you future proof yourself against that inevitable day when your favorite to-do app gets shut down.

Todo.txt is a system for managing to-do lists originally created by Lifehacker founder Gina Tripani way back in 2006. Originally a command line tool, a community has grown around todo.txt, offering great GUI clients for every platform you can imagine. And if all else fails, you can just use a text editor. It's flexible in precisely the way so many modern apps aren't, and if you like tweaking things until they're just right, I can't recommend it enough.

A Simple Text Document

Every computer and smartphone on earth can open text documents, and you don't need anything but a text editor to start using the system. Every task takes up one line in a document named "todo.txt." Like this:

        Feed iguana
Ask doctor about ticks
Write elephant touchscreen post
Research laptop prices
Clean the damn kitchen

It sounds simple, because it is. This is literally all you need to do in order to get started with todo.txt.

But, through a clever formatting system, you can add features like priorities, projects, contexts, and due dates. All of these are simple to learn.

Labeling Priority Tasks

Let's start with priorities: simply put a capital letter in parenthesis at the beginning of the line. Like this:

        Feed iguana
(A) Ask doctor about ticks
Write elephant touchscreen post
(B) Research laptop prices
(C) Clean the damn kitchen

Most todo.txt clients sort your tasks by priority, so don't overlook this feature. It's very useful for setting the pace of your workday. But even if you just use a text editor instead of a client app, it's still easy to scan your list and see your most important tasks.

Grouping Tasks By Project

You can also define any task as part of one or more Projects, which is useful because you can filter your list by project later. Projects are marked with the plus sign followed by a word, like this:

        Feed iguana +Personal
Ask doctor about ticks +Personal
Write elephant touchscreen post +HowToGeek
Research laptop prices +Personal
Clean the damn kitchen +Personal +Cleaning

Adding Context to a Task

In the task world, context means tracking where (and sometimes when) you need to take care of a task. There are some you'll need to handle while in your office, some while at your computer, some while at home, at so on.

You can add one or more Contexts to your tasks, allowing you to quickly see which tasks need to happen where. This is done with the @ symbol, like this:

        Feed iguana @Home
Ask doctor about ticks @DoctorsOffice
Write elephant touchscreen post @Home @Laptop
Research laptop prices @Home @Laptop
Clean the damn kitchen +Personal @Home

Combining All These Elements

Obviously, you can combine priorities, projects, and contexts for tasks. Here's how that might look:

        Feed iguana +Personal @Home
(A) Ask doctor about ticks +Personal @DoctorsOffice
Write elephant touchscreen post +HowToGeek @Home @Laptop
(B) Research laptop prices +Personal @Home @Laptop
(C) Clean the damn kitchen +Personal +Cleaning @Home

It looks a bit busy, sure, but most clients help reduce the noise by colorizing the tags and priorities. Still, it best to only use contexts and projects sparingly to avoid cluttering up your to-do list too much.

Finally, there's the matter of completed tasks. Simply add a lower-case "x" at the beginning of a task's, and every todo.txt client will understand that this is a completed task. It looks something like this:

        x Feed iguana +Personal @Home
x (A) Ask doctor about ticks +Personal @DoctorsOffice
Write elephant touchscreen post +HowToGeek @Home @Laptop
(B) Research laptop prices +Personal @Home @Laptop
(C) Clean the damn kitchen +Personal +Cleaning @Home

And that's it! You can now create and edit a todo.txt file using only Notepad or any other text editor. Things really get awesome, however, when you use a client app. And on that note...

There Are Lots of Clients Available

There's the command prompt version, which is extremely useful for anyone who is constantly in the command prompt. But don't panic if you're not a command line fan, because it's not the only tool available to you---there are great todo.txt clients for every platform.

Here are some highlights:

  • Todotxt.net, seen above, is a great Windows client with support for many keyboard shortcuts.
  • DayTasks is a simple client specifically built for Ubuntu.
  • TodoTxtMac is a beautiful macOS client with great keyboard shortcuts and support for quick filtering. It's my tool of choice.
  • SimpleTask does a great job on Android, and offers a nice widget.
  • SwiftDo is a popular option for iPhone and iPad.

I could go on, but so far as I can tell, these are the best option for every major platform. You'll find more listed on the todo.txt website.

Customize Things to Make This Work For You

There are thousands of to-do list apps out there, in part because no system works perfectly for everyone. I'm not going to say todo.txt is the exception, and that it will work for everyone, because that would be crazy. But todo.txt is the most flexible tool I've come across. In part, this is because of the sheer number of clients available, but also because the simplicity lends itself to improvisation.

For example: I wanted a way to add recurring tasks to my list, so I wrote a simple bash script called goodmorning.sh. It uses the command prompt client to quickly add a bunch of tasks to my todo list of choice. I run this script first thing in the morning every workday, and I like it better than any built-in system I've found for recurring tasks, because it's fully under my control. That means I don't come home from a vacation to find my daily tasks have all been added 10 times.

Another example: I didn't find the Contexts useful, but I did want a way to sort my tasks by how long they take to complete, so I add items like "@5m" to tasks to mark how long I think they'll take. When I have a few spare minutes I filter my list to show only quick tasks, and then get one of them done. It's a simple thing, but it's surprising how many little tasks I find myself doing during time I'd otherwise be watching YouTube videos.

I also use this widget to show my priority tasks o my Mac's desktop. I love it.

I slowly found and implemented all these features over time. This is geeky stuff, and not everyone is going to want to do it. But if you put the time in, you'll eventually have a system that's perfect for you, and you'll wonder why you ever used anything else.

A Few More Resources

If you really want to dive in and learn this system, there are a few sites I recommend checking out:

  • The official todo.txt documentation. It outlines setting up and using the command line tool better than I could hope to.
  • Todo.txt format rules. Great if you want to learn more about the philosophy behind the format.
  • Plaintext Productivity. One of the best tutorials on the web for Windows users to learn about setting up todo.txt, but there are also a lot of great productivity tips here for users on any platform.

I've really just skimmed the surface here, and hope to dig into the system more if readers show interest. Please get in touch with any questions, because I've had a lot of fun learning about all this.