Mindwtr CSV Import
Mindwtr can import a plain CSV file that follows a documented column layout. This is the generic path for apps that have no dedicated importer but can export a spreadsheet.
Supported sources:
- a single
.csvfile - a
.ziparchive containing one or more CSV files
Import is available on desktop and mobile from Settings → Data → Import from Mindwtr CSV. Mindwtr shows a preview with counts and warnings before it writes anything.
When to Use This Importer
Prefer a native importer when your app is listed on Importing Data From Other Apps. Those importers read the app's own export and already understand its quirks.
Reach for Mindwtr CSV when your app is not listed. Export whatever CSV it produces, rename the header cells to the column names below in a spreadsheet editor, and import the result. That preserves far more than pasting a list of titles: projects, sections, areas, statuses, dates, tags, contexts, and checklists all survive the trip.
File Format
- Encoding: UTF-8. A byte-order mark is removed automatically. Other encodings are decoded leniently and may lose accented characters, so save as UTF-8 when your spreadsheet offers the choice.
- Delimiter: detected from the first non-empty line. Comma, semicolon, and tab all work.
- Quoting: standard CSV. Wrap a value in
"when it contains the delimiter, a line break, or a quote character, and write an embedded quote as"". - Header row: required.
Titlemust be present, or the import stops with an error instead of guessing. - Column names: matched without regard to case or order. They are always the English names below, whatever language the Mindwtr interface is set to.
- Unknown columns: ignored, with a warning that tells you how many were skipped.
- Empty rows: skipped silently. A row that has other content but no title is skipped with a warning.
- NULL cells: a cell containing only
NULLis treated as empty. CSV files exported from SQL databases write missing values that way.
Column Reference
Every column except Title is optional, and you only need the ones you actually use.
| Column | Accepted values | What Mindwtr does |
|---|---|---|
Title | any text | Required. The task title. |
Description | any text | The task description. Line breaks are kept inside a quoted value. |
Status | inbox, next, waiting, someday, reference, done, archived | Case-insensitive. Left empty, the status becomes done when Completed At is set, otherwise next when the row names a project, otherwise inbox. A value Mindwtr does not recognize becomes inbox with a warning. |
Project | a project name | Creates the project once and puts the task in it. Names are matched without regard to case. |
Section | a section name inside that row's project | Needs a Project on the same row. Without one the value is ignored with a warning. |
Area | an area name | With a Project on the row, the area holds the project. Without one, the task itself is filed in the area. |
Contexts | names separated by commas or semicolons | Adds a leading @ when it is missing and drops repeats. |
Tags | names separated by commas or semicolons | Adds a leading # when it is missing, lowercases the tag, and drops repeats. |
Assigned To | a person's name | Sets the assignee, which is what feeds the Waiting For list. |
Priority | high, medium, low, or 1, 2, 3 | Anything else leaves the priority unset. |
Energy | high, medium, low | Anything else leaves the energy level unset. |
Start Date | a date or date and time | The defer date. The task stays out of Focus until it arrives. |
Due Date | a date or date and time | The deadline. |
Review Date | a date or date and time | The tickler date for a later reconsideration. |
Completed At | a date and time | The completion timestamp. It also turns an empty Status into done, and it is kept only when the resulting status is done or archived. |
Created At | a date and time | The creation timestamp. Left empty, the task is created as of the import. |
Checklist | items separated by line breaks or | | Becomes the task's checklist. An item written as [x] Buy stamps starts completed; [ ] Buy stamps and a bare Buy stamps start open. A task with checklist items becomes a list task. |
Location | any text | The task's location field. |
Order | a number | Sorts the task among its siblings in the same project, area, or inbox. Rows with no number, or with the same number, keep the order they had in the file. |
ID | any stable identifier | Gives the row a lasting identity for re-imports. A value that repeats an earlier row in the same import is dropped with a warning. |
Recurrence | any text | Recognized so it is not reported as an unknown column, but the value is ignored with a warning. |
Dates and Times
- A date on its own, such as
2026-09-01, stays a plain date. Mindwtr does not invent a midnight time for it. - A date and time with no zone, such as
2026-09-05 14:30, keeps exactly those wall-clock digits. - A value ending in
Zor an offset such as+02:00is stored as the precise instant it names. Created AtandCompleted Atare always stored as a precise instant, because they record when something really happened.- A value Mindwtr cannot read is left empty, and the preview reports how many were skipped.
- SQL-style timestamps such as
2026-02-21 22:44:00.6390000 +00:00are accepted: the extra fractional digits and the space before the offset are normalized away.
ISO 8601 (YYYY-MM-DD) is the safest thing to write. Other formats are attempted, but a spreadsheet column still holding locale-specific dates is the most common reason values get skipped.
Worked Example
Title,Description,Status,Project,Section,Area,Contexts,Tags,Priority,Start Date,Due Date,Checklist,ID
Book the venue,Needs 60 seats,next,Team Offsite,Logistics,Work,@phone,#offsite,high,2026-09-01,2026-09-12,[x] Shortlist venues|[ ] Call first choice,offsite-1
Draft the agenda,,next,Team Offsite,Programme,Work,@computer,"#offsite, #writing",medium,,2026-09-20,,offsite-2
Buy a whiteboard,,inbox,,,,@errands,,,,,,offsite-3That file creates one area, one project inside it with two sections, two tasks in that project, a two-item checklist on the first of them, and one loose inbox task.
Import Flow
- Open Settings → Data → Import from Mindwtr CSV.
- Choose your
.csvor.zipfile. - Read the preview. It lists how many tasks, areas, projects, sections, and checklist items will be created, how many tasks stay outside projects, the first few projects with their task counts, and every warning.
- Confirm the import, or cancel if the counts look wrong.
Mindwtr saves a recovery snapshot before it writes. If the result is not what you wanted, restore it from Settings → Sync → Recovery Snapshots.
Re-Importing the Same File
Mindwtr gives every row a stable identity, so importing the same file twice does not duplicate anything.
- With an
IDcolumn, the identity follows that value, so a corrected re-export lands on the same tasks. - Without an
IDcolumn, the identity falls back to the row's position in the file (and, inside a ZIP, the file it came from). Re-importing the very same file is safe, but an export with rows inserted or removed no longer lines up and will create duplicates. - Rows that already exist are skipped rather than updated. An import never overwrites a task you have edited in the app since.
- Deletions are respected. If you delete an imported project and then import the file again, the project is not recreated and its rows arrive without it.
- If the name of an imported area or project already belongs to something else, the new one gets
(Mindwtr CSV)appended to its name and a warning says so.
What This Importer Does Not Do
- Recurrence. Repeats are not created from a CSV. Set them up in the app after importing.
- Subtask hierarchy. There is no parent column. Use
Checklistfor the steps inside one task andSectionfor grouping inside a project. - Attachments. File paths or URLs in a CSV are text; nothing is fetched or copied.
- Export. Mindwtr does not currently write this format. To move data between Mindwtr installations, use the JSON backup.
Warnings You May See
Warnings are counted for the whole import and shown once with their count, never once per row:
- unknown columns were ignored
- statuses could not be mapped and were imported to Inbox
Sectionvalues were ignored because their rows had noProjectRecurrencevalues were ignored- date values could not be parsed and were skipped
- rows were dropped because their
IDrepeated an earlier row - rows with empty titles were skipped
- an imported area or project was renamed to avoid a name conflict
- non-CSV files inside a ZIP were skipped
- nested ZIP files inside the archive were skipped
- a CSV ended with an unclosed quoted field and was imported best-effort
- a CSV file could not be parsed and was skipped
Tips
- Import a five-row test file first and check the mapping before you bring over hundreds of rows.
- Add an
IDcolumn if there is any chance you will refine the export and import it again. - Leave
Statusblank when your source has nothing equivalent. The default puts project work in Next and everything else in the Inbox, ready for you to clarify. - Keep the original export and the recovery snapshot until you have verified the result.
- Imported
doneandarchivedtasks appear in the Done and Archive views, not in their project's task list — project pages show open work only.
See also Importing Data From Other Apps and Backup and Restore.