Python script to convert toodledo XML export to todoist project backup ("template") format
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Python script to convert toodledo XML export to todoist project backup ("template") format


  • tags
  • notes, including multi-line notes
  • tags
  • nested tasks (see notes below)
  • repeat dates (see notes below)
  • due dates
  • breaks projects up based on 120 task limit
  • tasks without folders (will be in the 'NOFOLDER' output project)


  1. Export from toodledo as XML
  2. Install python and BeautifulSoup python module
  3. Run <xml_filename>
  4. Create a project in Todoist
  5. From the project screen, click the gear in the top right corner
  6. Import from template
  7. Select one of the files generated by the script to upload


python <xml_filename>


Toodledo has a bizarre concept where sub-tasks can be in different folders than their parent task, which Todoist does not have. In this export, sub-tasks will always be in the same folder as the parent, but will be tagged with @__import_folder_mismatch and a note will be attached telling the original folder they were in.


The single note from Todoist will be attached, if present. Multi-line notes are supported (separated by tabs in the Todoist format)

Recurring Tasks

I made no attempt to convert the repetitions. Instead I add a note and tag the task with @__import_repeat

Completed Tasks

The script does not import completed tasks. I found this incredibly cumbersome. If you re-enable the import of completed tasks (by setting INCLUDE_COMPLETED = TRUE at the top of the file), all completed tasks will be tagged as @__import_completed

Task Limits

Todoist has an import limit of around 120 tasks. This script will split projects so that there are a maximum of 120 tasks per project. This limit can be changed by modifying the TODOIST_TASK_LIMIT variable at the top of the file.