Import step by step

On this page
An import never writes anything until you've seen what it will do, and it can be undone afterwards. The overview is in Import and export.
Import from another app#
Open Settings → Data, select Import data… (or press g then Shift+I) and choose a file. OpenTodo accepts:
- an OpenTodo export, for moving to another server or restoring (the ZIP export brings its attached files too),
- a CSV file, from a spreadsheet or a script, with a
titlecolumn and optional columns for project, due date, priority, labels and more, - JSON exports from other task apps, in the common shapes those apps use.
Nothing is written straight away. OpenTodo first shows a preview:
- Check the format it detected. You can change it if it guessed wrong.
- Choose the options: which project gets tasks that have none, the time zone for dates, whether sections stay sections or become labels, and what to do with possible duplicates and with rows that have errors.
- Read the preview table. Each row says what will happen: created, updated, skipped (with the reason) or an error (with the reason). Problems are listed first.
- Import. The import runs on the server, and the tasks reach all your devices on their next sync.
Recurring rules, reminders, subtasks, sections and completed tasks come across where the file has them. Anything OpenTodo can't store is listed as a warning on its row, never dropped silently.
Duplicates#
Importing the same file twice won't double your tasks. OpenTodo recognises rows it imported before, and flags tasks that look like ones you already have (same title, project and due date). Those are skipped unless you choose Import them anyway.
For an OpenTodo export, items that already exist on the server are kept as they are, unless you choose to overwrite changed fields.
Undo an import#
Every import appears under Past imports, with a summary. Undo removes everything that import created and leaves the rest alone. Tasks you added later to an imported project move to your Inbox rather than disappearing. You can then import the same file again, for example with different options.
Good to know#
- Import needs a connection to your server.
- Files can be up to 20 MB and 50,000 rows, unless your server allows more.
- Comments aren't imported. The preview tells you how many there were.
- Attachments in a file from another app come across as links when they're web addresses. Anything else, like a file on someone's computer, is listed as a warning.
- Attached files count towards your attachments total, like files you add yourself. A file over the limit is skipped and listed under the import's errors.
- In a CSV file, write dates as
2026-10-15and put a time like09:30in adue_timecolumn. The import reference lists every column, with an example file. - If a JSON export from another app isn't recognised, convert it to CSV. Every field OpenTodo stores can be written as a CSV column.
- A template file is better started with From a template… than imported; see Project templates.
The import formats reference has the details: each format, how fields are mapped, recurring rules and reminders.