# Task Format Converter

Convert task lists between todo.txt, Markdown checklists, JSON, and CSV while preserving priorities, tags, and dates.

## Run it

- **CLI:** `gizza tool task-format-converter "(A) 2026-08-01 Draft release notes +work @desk due:2026-08-05
x 2026-08-02 2026-08-01 Send invoice +finance"`
- **Web:** https://gizza.ai/tools/task-format-converter/
- **Agents:** machine-readable descriptor (parameters JSON Schema) at https://gizza.ai/tools/task-format-converter/tool.json

## Inputs

- `input` — Task list _(field)_
- `from` — Input format _(field)_
- `to` — Output format _(field)_
- `pretty` — Pretty-print JSON _(field)_

## Output

- Converted tasks (text)

## Query parameters

Open the tool pre-filled and auto-run via URL:

- `input` — Task list
- `from` — Input format
- `to` — Output format
- `pretty` — Pretty-print JSON

Example: `https://gizza.ai/tools/task-format-converter/?input=%28A%29%202026-08-01%20Draft%20release%20notes%20%2Bwork%20%40desk%20due%3A2026-08-05%0Ax%202026-08-02%202026-08-01%20Send%20invoice%20%2Bfinance&from=auto&to=markdown&pretty=true`

---

## About this tool

The **Task Format Converter** turns one task list into another common task-list format: todo.txt, Markdown checklists, JSON, or CSV. It parses each task into a shared model before writing the target format, so completion state, priority, `+projects`, `@contexts`, creation dates, due dates, completion dates, and extra `key:value` metadata survive the conversion.

Use it when you are moving tasks between a plain-text todo.txt workflow, a README or issue checklist, a spreadsheet, and a scriptable JSON pipeline. Set the input format explicitly for strict conversions, or choose **Auto-detect** to sniff JSON arrays/objects, Markdown checklist items, CSV header rows, and otherwise fall back to todo.txt.

## Worked example

Input todo.txt:

`(A) 2026-08-01 Draft release notes +work @desk due:2026-08-05`

Converted to Markdown checklist:

`- [ ] (A) Draft release notes +work @desk due:2026-08-05 created:2026-08-01`

The task text stays readable, and todo.txt's native creation date is preserved as a `created:` metadata tag because Markdown checklists do not have a built-in creation-date field.

## Limits and edge cases

- Markdown output uses `created:` and `completed:` metadata tags for dates that Markdown checkboxes cannot represent natively.
- CSV uses a fixed header: `text,done,priority,projects,contexts,created,due,completed,tags`.
- todo.txt priorities are uppercase single letters such as `(A)`.
- Auto-detect is intentionally simple; choose the source format explicitly if a list could be interpreted more than one way.

## FAQ

<details>
<summary>Which task formats are supported?</summary>

The converter supports todo.txt, Markdown checklists, JSON task objects, and CSV with task-oriented columns. JSON may be a single object or an array of objects.

</details>

<details>
<summary>What task fields are preserved?</summary>

It preserves task text, done state, uppercase priority, projects, contexts, created date, due date, completed date, and extra `key:value` metadata tags where the target format can represent them.

</details>

<details>
<summary>Why do dates become tags in Markdown?</summary>

Markdown checkboxes only encode checked or unchecked state. To avoid losing todo.txt creation/completion dates, the converter writes them as `created:` and `completed:` metadata tags in the checklist item text.

</details>

<details>
<summary>Can it synchronize with a task app?</summary>

No. This is an offline format converter for pasted text. It does not connect to Todoist, Things, OmniFocus, Google Tasks, or other external services.

</details>

## Related tools

- [Query Result Formatter](https://gizza.ai/tools/query-result-formatter/): Turn raw query result rows — a JSON array, CSV, or TSV — into a clean, aligned Markdown or ASCII table for docs and chat.
- [Beancount to CSV Converter](https://gizza.ai/tools/beancount-to-csv/): Flatten Beancount or Ledger journal postings into spreadsheet-ready CSV, then rebuild a simple journal from that flat CSV schema.
- [CSV Cell Diff](https://gizza.ai/tools/csv-cell-diff/): Compare two CSVs column-by-column and highlight every individual cell that changed, plus added and removed rows and columns.
- [DynamoDB JSON Converter](https://gizza.ai/tools/dynamodb-json-converter/): Convert between DynamoDB typed AttributeValue JSON and plain JSON in both directions, with auto-detect and pretty or compact output.
- [Elasticsearch Bulk Formatter](https://gizza.ai/tools/elasticsearch-bulk-formatter/): Build a compact Elasticsearch _bulk API body from a JSON array. Choose index/create/update/delete, _index, _id field, and doc_as_upsert locally.
