Stuff

Stuff Markdown

other

The Stuff Markdown specification: how Stuff writes Tasks as plain Markdown task lists with status, Plan, Deadline, Tags, and Notes.

Stuff Markdown is the plain-text format Stuff uses when you export or copy Tasks, and the format it reads back when you paste or drop them in. It's regular Markdown, so an export looks right in Obsidian, GitHub, Bear, or anywhere else Markdown shows up, and it carries a Task's Plan, Deadline, Tags, Notes, and more in a way any app can read.

This page is the full specification, version 1. If you're just exporting a List, Exporting Tasks is all you need. This page is for the curious, and for anyone who wants their app to read or write Stuff Markdown too. Developers can find the spec, a shared test suite, and ready-made Swift and JavaScript parsers on GitHub.

Try it

Type or paste some Stuff Markdown below to see how it reads, as Stuff items and as JSON. You can also try pasting the Stuff Markdown directly into your own Stuff app to see how it works.

Examples:

Stuff Markdown, version 1

๐Ÿ›’ Groceries
Oct 24Oct 31Home

Weekly shop. Costco on Saturdays

Buy milk

Oct 24 ยท 9:00 AMOct 25ErrandsDeepWork

2% if they have it Check the date

Compare cereal prices

Someday

Water the plants

Oct 25HomeEvery week on Saturday

Pick up the cake

After โ€œOrder the cakeโ€

Order the cake

Buy flowers

Party supplies
Oct 30Party

For Saturday's party

Balloons

Oct 31

Candles

The basics

  • Plain Markdown first. Every Stuff Markdown file is valid CommonMark with GitHub-style task lists, so it reads well even in apps that know nothing about Stuff.
  • English labels, always. Labels like Plan: and dependent on are never translated, whatever language Stuff is in, so any app can read any export. Names, Notes, and section titles stay exactly as you wrote them.
  • ISO dates. Dates are always YYYY-MM-DD, and times are 24-hour HH:MM, so 2026-03-04 means March 4th everywhere in the world.

Structure

A Stuff Markdown document is made of these pieces, in this order:

  1. Version marker (optional): <!-- stuff-markdown: 1 --> on the first line. Markdown apps hide it. Full exports include it; a single copied Task leaves it out.
  2. Title (optional): # followed by the name of what was exported, such as a List (with its emoji), a Space, or a view like Today. It can carry the same details as a Task line, with its Notes on the lines below it as > quotes and a blank line after them.
  3. Items: one line per Task, List, Heading, or Space, in the order Stuff shows them.
  4. Sections (optional): ## followed by a section's title, such as a Heading, a day in Upcoming, a Tag, or Completed. A Heading's section title carries its details and Notes just like the document title. A section with no items can still appear, the same way an empty Heading does in Stuff.

Item lines

Each item is one line: a marker, the name, then its details in a fixed order.

- [ ] Name (dependent on "Other Task") *Plan: โ€ฆ* **Deadline: โ€ฆ** #Tag (repeats โ€ฆ)

Every detail is optional, but when present they always come in this order.

Status

MarkerStatus
- [ ]Available
- [x]Complete (- [X] is read too)
- [/]Cancelled
- [~]In progress
- (no box)A Space, which can't be completed

Lists and Headings use the same checkboxes as Tasks.

Details

DetailWritten asNotes
Dependency(dependent on "Order the cake")The name of the Task this one waits on.
Plan*Plan: 2026-10-24*Add a time when the Task has a reminder: *Plan: 2026-10-24 09:00*. Times are local, with no time zone.
Someday*Someday*Written instead of a Plan.
Deadline**Deadline: 2026-10-31**
Tags#Errands #DeepWorkSpaces are removed from Tag names, so "Deep Work" becomes #DeepWork.
Repeats(repeats every week on Saturday)A readable description. Repeats on specific dates list every date: (repeats on 2026-11-12, 2026-11-19 and 2026-11-26).
Extensions<!-- id: 7Kc2 -->Room for details a later version adds. Apps that don't know one skip it.

Notes

Notes go on the lines right below their item, each line quoted with > and indented two spaces so Markdown apps keep them inside that item:

- [ ] Buy milk
  > 2% if they have it
  > Check the date

A blank line inside Notes is written as > on its own.

Escaping

If a name contains something that looks like a detail, such as #1 at the end, *Plan:, or <!--, Stuff puts a backslash in front of it (\#1), so it stays part of the name. Markdown apps hide the backslash. When reading, a backslash before #, *, (, <, or another backslash is removed.

Reading Stuff Markdown

Stuff reads every detail above when you paste or drop text into a List, with a few rules that keep other kinds of Markdown working just as they did:

  • Only exact matches count. A detail is read only when it matches this page exactly and sits after the name. Anything else stays in the name, so a Task like "Call mom (urgent)" keeps its parentheses.
  • Tags must already exist. #Errands is added only when you have a Tag with that name, ignoring spaces and capitalization, so #deepwork matches "Deep Work". Stuff never creates new Tags from a paste: a #Tag you don't have moves to the end of the Task's name, and the rest of its details are still read. The playground above can't see your Tags, so it shows every #Tag as one.
  • Dependencies are found by name, first among the Tasks you're pasting, then in the List you're pasting into. If none match, the dependency is skipped.
  • A Task's own Plan and Deadline win over the view you paste into. Tags are added to the view's Tags.
  • Repeats stay in the name for now. Stuff doesn't import repeats yet, so the Task is created without repeating and keeps its (repeats โ€ฆ) text at the end of its name. The same goes for anything else Stuff can't import, like a Tag you don't have.
  • Extensions are skipped. A trailing <!-- โ€ฆ --> comment never ends up in a name, so an export from a newer version of Stuff still imports cleanly.
  • Titles, sections, and Space lines are skipped. Stuff creates the Tasks; it doesn't recreate Headings or Spaces from an import yet.
  • Older exports still work. Stuff also reads its earlier format, with dates like 10/24/26 and Notes written as > .

Versions

VersionReleasedChanges
1October 31, 2026 (Stuff 2.4.6)The first version: English labels, ISO dates, repeats, quoted Notes, extensions, and the version marker.