Importing Data From Other Apps
This guide covers moving tasks into Mindwtr from another task manager. It is for full migrations, not for quick one-off captures.
Before You Import
A migration is a good moment to leave old clutter behind. If your previous app has hundreds of stale tasks, consider moving only your current projects, active next actions, and trusted reference items.
Mindwtr can import full exports from supported apps, but a smaller, deliberate migration usually fits GTD better than copying every old task into a new system.
Available Importers
Mindwtr has first-class importers for a small set of apps where the export format is structured enough to map safely:
- TickTick Import - CSV or ZIP backups from TickTick
- Todoist Import - CSV exports or ZIP backups
- DGT GTD Import - JSON exports or ZIP backups
- OmniFocus Import - CSV, JSON, or ZIP exports
- Apple Reminders Import - iOS-only import for incomplete reminders from a selected Reminders list
Open Settings -> Data and choose the matching import action. Mindwtr shows a preview before it adds anything.
Native importers are the best path when your old app is listed. They preserve more structure than plain text, and they handle app-specific details such as folders, lists, tags, dates, checklists, and recurrence when the source export exposes them.
Import Fidelity at a Glance
This coverage was reviewed on July 21, 2026 against the importer code at Mindwtr commit 18b11a6. The importer fixtures cover Todoist CSV and ZIP, TickTick 7.1 CSV and ZIP, DGT schema version 3 JSON and ZIP, and OmniFocus CSV, UTF-16 CSV, JSON, and ZIP. Export formats can change, so use the preview and the app-specific guide before confirming.
| Source | Best input | Mindwtr preserves | Check after import |
|---|---|---|---|
| TickTick | CSV or ZIP backup | Folders as areas, lists as projects, tags, priorities, dates, checklists, completion state, and supported recurrence | Attachments, presentation details, warnings, and parent-child mapping |
| Todoist | CSV or ZIP backup | Projects, sections, active tasks, descriptions and comments, priorities, due dates, labels, and subtasks as checklist items | Recurrence, which imports once with its original text; skipped or malformed rows |
| DGT GTD | JSON or ZIP backup | Folders as areas, projects, contexts, tags, checklists, priorities, due dates, completion state, and supported recurrence | Unsupported recurrence and skipped archive entries |
| OmniFocus | Omni Automation JSON or ZIP for best fidelity; CSV is supported | Folders as areas, projects, tags, contexts, notes, dates, completion state, simple nesting, and supported recurrence | Deep nesting, planned dates and duration text, and CSV-specific loss |
| Apple Reminders | A selected list on iOS | Titles and notes from incomplete reminders | Dates and other fields, skipped items, and the optional source-deletion choice |
Verify or Roll Back
- Keep the original export and make a fresh Mindwtr backup before importing.
- Check the preview counts and warnings. Cancel if the project or task totals look wrong.
- After import, compare one project and a few representative tasks with the source. Check titles, project or status, dates, tags or contexts, notes, checklists, and recurrence.
- If the mapping is wrong, restore the recovery snapshot from Settings → Sync → Recovery Snapshots, adjust the source export, and try again. Importing the same export twice can duplicate tasks in some importers.
Alternative Migration Methods
If your app is not listed, use one of the fallback paths below. These are intentionally simpler than native importers and are useful for the long tail of apps that export plain text, CSV, or JSON.
Copy & Paste
The fastest fallback is to copy a list of tasks and paste it into Quick Add / Quick Capture.
Mindwtr uses blank lines to choose between one task and a batch:
- If the pasted text contains any blank line, Mindwtr keeps the whole paste as one task and joins its nonblank lines into one title.
- If the pasted text has no blank lines, each nonblank line becomes a separate task.
Desktop:
- Open Quick Add.
- Paste multiple lines into the task field.
- If Mindwtr detects a batch, confirm Create tasks.
Mobile:
- Open Quick Capture.
- Paste multiple lines into the task field.
- Tap Save and confirm the bulk create prompt if Mindwtr detects a batch.
For a batch, each line is parsed with Mindwtr quick-add syntax, so you can include metadata inline:
Email Bob about Q3 report +Work @computer #followup /due:friday
Book dentist appointment @phone
Outline conference talk +Speaking #ideas /note:Draft the rough structure firstThis does not reconstruct deep hierarchy or recurrence, but it is often the cleanest way to bring over the tasks that still matter.
Plain Text
If your old app can export a .txt file, use Mindwtr's text import from the capture UI.
Desktop:
- Open Quick Add.
- Click Import .txt.
- Choose a plain text file.
- Confirm the bulk create prompt.
Mobile:
- Open Quick Capture.
- Tap More.
- Tap Import .txt.
- Choose a plain text file.
- Confirm the bulk create prompt.
Use one task per line. Add quick-add tokens on the same line when you want Mindwtr to set metadata during import:
Pay water bill +Home /due:2026-07-01
Renew passport +Personal @errands #admin
Send slides to Ana +Work /note:Use the final deck from the shared folderMindwtr uses explicit quick-add commands such as /note: instead of a hidden tab-note format. This makes the text file readable before import and uses the same parser as normal capture.
CSV to Quick-Add Text Script
For apps that export CSV but do not have a native Mindwtr importer, convert the CSV into a plain text quick-add file, then import that .txt file.
Mindwtr includes a small dependency-free helper script:
node scripts/migration/csv-to-quickadd-text.mjs export.csv \
--output mindwtr-import.txt \
--title "Title" \
--project "Project" \
--tags "Tags" \
--contexts "Contexts" \
--due "Due" \
--note "Note"The script writes one quick-add line per CSV row. It can map:
- a title column into the task title
- a project/list column into
+Project - comma- or semicolon-separated tags into
#tag - comma- or semicolon-separated contexts into
@context - a due-date column into
/due:... - a note column into
/note:...
If your CSV uses different column names, pass those names with the options above. For example:
node scripts/migration/csv-to-quickadd-text.mjs tasks.csv \
--output mindwtr-import.txt \
--title "Task" \
--project "List" \
--tags "Categories" \
--due "Due Date" \
--note "Notes"This script is a starting point, not a supported app-specific importer. It will not preserve nested tasks, attachments, recurrence, or app-specific fields unless you adapt it.
CLI, Local API, and MCP
Technical users can write their own importer against Mindwtr's automation surfaces:
- Local API
- MCP Server
bun run mindwtr:cli -- --helpfrom the repository checkout
Use this path when your old app exports structured JSON or CSV and you want more control than plain text gives. These tools go through Mindwtr's normal data model, but custom migration scripts are self-serve.
If Your App Is Not Listed
Use this order:
- Check whether your app can export to a format Mindwtr already imports.
- Try copy/paste or plain text for the active tasks you still need.
- Use the CSV helper script if your app exports a simple spreadsheet.
- Use the Local API, CLI, or MCP if you need a custom structured migration.
If you want a native importer for a specific app, open a GitHub Discussion or issue with:
- the app name
- the export format it provides
- a small redacted sample export
- which fields matter most to preserve
Native importers are prioritized by demand and by how clearly the source format maps to Mindwtr's GTD model.