I am not a very organized person. I forget things all the time – just ask my wife. But I’m trying to get better at it. So I decided I was going to start keeping track of tasks. Now, I’m not one to carry around a pad of paper and a pen to write everything down so I don’t forget it. For God’s sake, it’s 2020, who carries around a pad of paper anymore? No, we all have smart phones these days and smart phones are great for taking notes and things like that. In the past I have used apps like Wunderlist, Any.do, and TickTick. These services are really good at what they do, with the exception of Wunderlist that was bought and killed my Micro$oft. They are awesome for syncing todo/grocery lists with other people, but they all have one thing that I’m not a huge fan of. They all require you to create an account to use. This used to not bother me in the past. But I’m become more and more aware of how much data companies like Microsoft, or Google, or whoever, are collecting on me. It’s honestly frightening but that’s not what this entry is about. Basically, I wanted to be in control of my data. I know that I might be “overreacting” when it comes to some random company knowing what I need to do around the house, or what I need to buy at the store, but it’s important to me. It’s my “private” life and I want to keep it as private as I can and that brings us to Todo.txt.

What is Todo.txt

Well, at it’s heart, Todo.txt is just that. A text file named todo that contains tasks. That’s it, thank you for coming to my Ted Talk. But seriously, that’s all it is. It’s a simple .txt file that lives somewhere on your device that contains your tasks.

According to the official todo.txt GitHub repo, the first and most important rule of todo.txt is:

A single line in your todo.txt text file represents a single task.

Honestly, that’s most of todo.txt right there. Each single line is a single task. Simple. Being just a normal Plain Text file it’s readable on any system, regardless of operating system. It’s not stored in some crazy huge database, or cloud. It works if you don’t have an internet connection. It doesn’t rely on any specific, proprietary software. It just works. It’s text.

Todo.txt’s formatting rules are pretty simple. The below photo is taken from the todo.txt GitHub page.

todo.txt formatting rules

So, as you can see above, todo.txt has a pretty simple format. Easy to read and easy to organize. That – to me – is all you really need. The todo.txt GitHub pages goes more in-depth with the formatting rules but for now the above image is all we really need.

So basically my todo.txt file looks like this:

(A) 2020-02-09 Finish +todo.txt post @blog due:2020-02-16
2020-02-09 Write some sort of +Markdown @blog post
2020-02-09 Write a @blog post about my +phone
x 2019-12-11 Start +GoLang classes @programming

Well, actually I have a separate done.txt file for completed tasks but that doesn’t matter. This is basically what my todo.txt file looks like

How I use Todo.txt

Everyone’s use-case is different, but here is mine:


When I’m using Linux, I use Neovim as my text editor. Neovim (and regular Vim) have a todo.txt-vim plugin and it’s great. It does everything I need it to do. I can sort, add, complete, set created and due dates. It’s awesome. I love doing things in Vim.

I’m just going to copy and paste the mappings from the todo.txt-vim GitHub page:

Sorting tasks:
<localleader>s Sort the file
<localleader>s+ Sort the file on +Projects
<localleader>s@ Sort the file on @Contexts
<localleader>sd Sort the file on dates
<localleader>sdd Sort the file on due dates

Edit priority:
<localleader>j Decrease the priority of the current line
<localleader>k Increase the priority of the current line
<localleader>a Add the priority (A) to the current line
<localleader>b Add the priority (B) to the current line
<localleader>c Add the priority (C) to the current line

<localleader>d Set current task’s creation date to the current date
date<tab> (Insert mode) Insert the current date

Mark as done:
<localleader>x Mark current task as done
<localleader>X Mark all tasks as done
<localleader>D Move completed tasks to done.txt

Since writing this I have also started using the zsh theme powerlevel10k which displays the number of tasks in my terminal. It’s pretty cool.


The Android app I use is Todo.txt Android. I love this app! It works really well and has a great UI. There aren’t many other things that I really need from an Android app. My only gripe is that it’s not Open-Source. Maybe one day. But regardless, it’s an awesome app that also has an awesome widget for the home launcher. I used to use Markor but I really didn’t like the UI. It’s possible that I’ll go back to it if I play around with it a bit more, but for now Todo.txt Android is my go to.


Now, you may be wondering, “How do you keep your todo.txt file the same across all devices?”, well Reader, let me tell you! Syncthing! Syncthing is great for syncing files between all my devices. According to Syncthing’s website:

Syncthing is a continuous file synchronization program. It synchronizes files between two or more computers in real time, safely protected from prying eyes. Your data is your data alone and you deserve to choose where it is stored, whether it is shared with some third party, and how it’s transmitted over the internet.

Syncthing is great. I use it to sync any files that I need on multiple devices. Mostly I use it to sync my todo.txt file and my Wallpaper folder between my desktop and laptop, as well as my OnePlus 5T. The thing that I like the most is the privacy aspect of Syncthing. The files only live on my devices, not on a random cloud somewhere. I have total control. It’s also super easy to use, but you can read more about that on their website.

So I guess that really sums up todo text for my use-case.