Moving from Todoist
Export each project as CSV, tidy three columns in a spreadsheet, import with a preview. Tasks, projects, sections, subtasks, labels, priorities and dates come across; comments do not.
Todoist's export checked on ; the import path is that of OpenTodo v0.6.0
What comes across
- Tasks, with their descriptions
- Projects, one per exported file, and sections when you add a section column
- Subtasks, when you fill the parent column
- Priorities P1 to P4, the same scale
- Labels, as a labels column
- Due dates, once written as dates (2026-10-20)
- Completed tasks, as completed
What does not
- Comments (the preview counts them; they belong to their authors)
- Dates written in words in Todoist's export, until you rewrite them
- Recurring rules in Todoist's own phrasing that the import cannot read (the preview names each one)
- Deadlines separate from the scheduled day, durations and attachments
- Karma, filters, reminders set in Todoist, and project sharing (invite people again)
Before you start
At the time of checking, Todoist exports one project at a time as a CSV file (open the project, the three-dot menu at the top right, Export as CSV). The file has one row per task, section and comment, with columns named TYPE, CONTENT, DESCRIPTION, PRIORITY, INDENT, AUTHOR, RESPONSIBLE, DATE, DATE_LANG, TIMEZONE and a few more. Trust what you see in your own file over this page.
OpenTodo reads CSV files with a header row and a title column; content is accepted as the title column’s name, description and priority as they are, so a Todoist file is half-way there already. The columns it understands, with every accepted spelling, are in the import reference.
Export from Todoist
- Open a project in Todoist, open the three-dot menu at the top right and choose Export as CSV. Repeat for each project you want to bring over. Import formats
- Open each file in a spreadsheet. You will see a
TYPEcolumn withtask,sectionandnoterows. Import formats
Tidy the file
- Delete the
noterows. They are comments, and OpenTodo does not import comments: they belong to their authors. Own export, comments - Turn the
sectionrows into a column. Add a column namedsection, fill it for the task rows below each section row with that section’s name, then delete the section rows. OpenTodo creates the sections in the project. Sections - Add a
labelscolumn. Todoist writes labels inside the task text as@label; move them into alabelscolumn, comma-separated. Missing labels are created on import. CSV columns - Rewrite
DATEasdue_date. Rename the column, and write dates as2026-10-20(with an optionaldue_timecolumn for14:30). Todoist writes dates in words, often in your language, and those are not read. CSV columns - Recurring tasks: put the rule in a
recurrencecolumn, in words OpenTodo knows:every day,every monday,every 2 weeks,every! 3 daysfor “after completion”. Anything it cannot read is shown as a warning in the preview and the task is imported without a rule. Recurrence - Subtasks:
INDENT2 marks a subtask. Add aparentcolumn and write the parent task’s title in it (or give rows anidcolumn and use the parent’s id). Mapping rules - Priorities stay as they are: Todoist’s 1 to 4 with 1 the highest matches OpenTodo’s. Check them in the preview. CSV columns
Import into OpenTodo
- In OpenTodo, open Settings → Data → Import data… and choose the file. Import from another app
- In the preview, set the target project to a project with the Todoist project’s name (type a new name to create it), check the time zone, and read the row list: created, skipped (with the reason) or error (with the row number and the reason). Nothing is written yet. Import from another app
- Select Import. The tasks reach all your devices on their next sync. Repeat for each file. Import from another app
- Not happy? Undo under Past imports removes everything that import created, and you can import the file again with different options. Undo an import
Your first week
- Rebuild your Todoist filters as saved views:
@waiting & open,#Work & p1 & due <= tomorrow. The syntax is close to Todoist’s. Save a filter as a view Find tasks with a filter - Set your reminders again; they are not in the export. “1 day before” on bills, “at due time” on calls. Set a reminder Add a reminder
- Share the projects you shared before, with a role per person. Share a project Share a project
- Quick add works like Todoist’s:
Call Sam tomorrow 3pm #Work @call p2. One difference: repeat rules go in the task panel, not in the line. Quick add syntax - Keep the CSV files until you are sure. An import can be undone at any time, and the same file imported twice creates nothing new. Duplicates
Todoist words, OpenTodo words
| In Todoist | In OpenTodo | Note |
|---|---|---|
| Task | Task | |
| Project | Project | Projects nest the same way. |
| Section | Section | Shown as columns on the board. |
| Label | Label | Personal in OpenTodo, even on shared projects. |
| Priority P1 to P4 | Priority P1 to P4 | 1 is highest in both. |
| Due date with a recurring phrase | Due date plus a Repeat rule | The rule is set in the task panel, not typed in quick add. |
| Filter | Saved view | |
| Reminder | Reminder | |
| Sub-task | Subtask | |
| Karma | No equivalent |
Documentation this page relies on
Bring your tasks over at your own pace.
Import into the demo first if you like: the sandbox is private and deleted after two hours. Then do it for real on your server.