SwiftoDo Desktop

SwiftoDo is a modern, powerful todo.txt app for macOS 10.11 and above.

A task list that you control

Your task list is a plain text file, not some proprietary format owned by a company or locked to a specific application.

A simple and timeless format

Plain text is the simplest file format there is. It will always be accessible, by some kind of application, forever.

Few rules to learn

Learn only a few simple formatting rules (which SwiftoDo Desktop will take care of for you) to indicate task priority, task completion, and so on.

A GTD-ready system

The todo.txt format was built with Getting Things Done in mind. It supports projects (which begin with “+”) and contexts (which begin with a “@“).

Use alongside any app on any platform

You can sync your task list with any app on any platform, including SwiftoDo on iOS if you use Dropbox.

Available on the Mac App Store
SwiftoDo Desktop


SwiftoDo offers the following features:

  • Full compliance with the todo.txt format spec.
  • Support for due date (due:), threshold date (t:), recurring tasks (rec:), and hidden (h:1) tags.
  • Fully keyboard-driven, with one-key bindings for commonly-used commands.
  • Multiple selection in the task list.
  • Archive completed tasks (to done.txt), either on command or automatically.
  • Preserves Windows or Unix line endings in the todo.txt file for cross-platform compatability.
  • Displays general metadata (task counts, etc.) about the task list.


Version 2.5.0

March 15, 2016
  • New app icon to correspond with SwiftoDo 2.0.0 on iOS.

Version 2.4.2

November 11, 2016
  • Fixed a bug causing the file to reload while a task was being edited.



What is the todo.txt format?

The todo.txt format is defined in the todo.txt project wiki.

How is the todo.txt format useful?

Storing your tasks in a text file that you control gives you tremendous power. You are not locked into a particular system, application, or platform. You can sync the file across devices simply. You can open your task list in any text editor for quick edits, such as pasting in several dozen tasks at once. You can use existing command line tools, such as grep and sort, for searching and sorting.

Due dates and threshold dates aren't part of the todo.txt format spec!

Due date and threshold date are implemented as key:value tags, which are fully compliant with the todo.txt format spec. They both are popular extensions to the todo.txt command line scripts.

How are due dates formatted?

Due dates are formatted as due:yyyy-mm-dd. For example: due:2016-12-31.

What are threshold dates?

A threshold date indicates that a task should not be started until the threshold date. Adding threshold dates is a way to indicate "future tasks". A threshold date is formatted as: t:yyyy-mm-dd.

How are threshold dates formatted?

Threshold dates are formatted as t:yyyy-mm-dd. For example: t:2016-12-31.

Do I have to use the yyyy-mm-dd date format?

Yes. That date format is defined by ISO 8601. It is an internationally accepted way to represent dates. If you don't like typing the date that way, use the due date and threshold date pickers in the task text editor.

File sync (Dropbox, Box, OneDrive, etc.)

Does SwiftoDo Desktop work with file sync programs?

SwiftoDo Desktop works nicely with cloud services, such as Dropbox, that sync your local files to the cloud. It saves immediately after changes are made, and automatically reloads the file when changes from external sources (such as a cloud service updating the local file) are detected.

To be clear, SwiftoDo Desktop does not tie directly into any cloud services. It loads and saves local files only. Those local files may be synced to cloud services via those services' desktop clients.

Note that, since version 2.4.2, SwiftoDo Desktop will not reload your file while a task is in edit mode. This limitation is there because task edits were being canceled by file reloads. It is strongly recommended to not leave tasks in edit modes for extended periods of time (which you would not normally do anyway).


How do the sort options work?

Except for "order in file" (which is self-explanatory), the various sort options perform a multi-level sort. The first sort level is the element you choose: priority, project, or context. Then, beneath that first sort level, tasks are sorted based on order of descending priority, as evaluated by priority, due date, threshold date, and completion status, in that order. If a task has no signifier of priority, it is sorted based on the order of the file.

Hardware keyboard shortcuts

What hardware keyboard shortcuts are available?

Working with tasks


Working with files

Sorting the task list

Filtering the task list

Recurring tasks

How do I create a recurring task?

A task with a well-formed Support for recurring tasks with the "rec:" tag. The “rec:” tag value's format is as follows: a number suffixed by d, b, w, m, or y (days, “business days” or weekdays, weeks, months, and years, respectively). To enable strict recurrence, prefix the pattern with a +.


When are recurring tasks created?

When tasks with a well-formed "rec:" tag are completed, new tasks will be created with adjusted due dates (and, if they exist, adjusted threshold dates). The adjusted due date will be based on the task’s completion date (normal recurrence) or on the task’s due date (strict recurrence).

Hidden tasks

How do I create a hidden task?

There is a setting for showing or hiding tasks with the "h:1" tag. When that setting is checked, any tasks with a "h:1" tag will be hidden.

Why would I want to create a hidden task?

Hidden tasks can be useful to keep your favorite projects and contexts available in the filter even after you have archived all your read tasks associated with them.

Privacy Policy

SwiftoDo Desktop does not collect any of your information, period. No data within the app or accessed by the app is transmitted to the developer.