General 15 min read

A Kanban Board That's Just Text Files: Track Work in Plain Markdown You Own, Not a SaaS Tenant

MMNMNOTE
kanbanplain-textmarkdowntodo-mdpersonal-kanbandata-ownershipfile-over-appproductivity

A kanban board is a view over status, not a place where work lives. The reflex is to rent Trello, Notion, or ClickUp and let your tasks live in their walls. But the board is a rendering: keep the status as plain text — a heading per column, a section per stage — and any tool can draw the columns back. The board is the picture; the file is the work.

This is the same ownership argument that runs through the pieces beside it: keep due dates in a plain-text task file, keep a daily note as an append-only log, and remember that one big text file outlived every to-do app. A board is just one more view over notes you own — the way a query is a view over a database or a table is a view over rows. Steph Ango, who put the case most cleanly, frames the whole stake in one line: "Apps are ephemeral, but your files have a chance to last." 1 The board is the app. The columns are the file.

A concession first, before the argument earns your trust. A plain-text board has no live drag-and-drop and no real-time multi-user editing. The tooling is enthusiast-scale, not enterprise. And the board itself is a rendering, not the data: you still need something to draw the columns. None of that breaks the claim. It defines the trade.

What "the board is a view" actually means

A kanban board is a way of seeing status, not a way of storing it. The TODO.md format makes this literal: tasks live in a plain Markdown file, and "Tasks in TODO.md can be visualized using Kanban Board where sections become columns on the board." 2 The columns are not the data. The headings are the data; the columns are what a renderer draws from them.

Once you see a board as a rendering, the lock-in question changes. The pull of Trello or Notion or ClickUp is real, since they draw a beautiful board with no setup. But what you save inside one is not a file; it is a row in their database, reachable only through their app. The work items are real. Getting them out as something you can read in twenty years is the open question, and it is the same question that drives people to export before they are forced out.

The villain here is not a vendor. It is a shape: a board you cannot own, whose columns you can only see while you keep paying rent on the app that draws them. Name the shape, not the brand. A rented board is fine until the day you want to leave with your work, and discover the work was never a file.

Status is small enough to keep as text

Status is a tiny amount of information, and plain text holds it comfortably. A task is a line; a stage is a heading. todotxt-kanban is "a set of wrappers and configurations so that todo.txt can be used in a Kanban-type process," where each board file "will have three sections: Backlog, In Progress, and Done." 3 That is the whole board: three headings and the lines under them.

Kanban itself asks for almost nothing. Jim Benson and Tonianne DeMaria Barry, who named Personal Kanban, reduce the method to "Two rules. Endless possibilities" — "Visualize Your Work" and "Limit Your Work-in-Progress." 4 Visualizing your work is a list of stages with items under each. Limiting work-in-progress is counting the lines in one section. Both fit in a Markdown file. The board UI is sugar on top; the method underneath is text.

So the durable artifact is not the board and not the app that draws it. It is the status itself — a few words per item under a heading per stage, written somewhere you can open without permission.

The worked shape: a column is a heading

The simplest plain-text board is a Markdown file with one heading per column. TODO.md is "based on GFM — GitHub Flavored Markdown — Task Lists," 5 so the whole thing is checkboxes under headings any editor renders. Here is a TODO.md you can paste into any note and read with no tool at all:

# TODO.md

## Backlog
- [ ] Draft the launch announcement
- [ ] Sketch the landing page copy
- [ ] Email three beta testers for quotes

## In Progress
- [ ] Rewrite the onboarding flow
- [ ] Fix the export bug (#214)

## Done
- [x] Wire up the settings screen
- [x] Replace the favicon

Read it top to bottom and you have already done the two things kanban asks: you can see every item, and you can count the ones in In Progress to keep work-in-progress honest. To move a task, cut the line and paste it under the next heading. The file is the board, with no renderer running.

That last point matters because the file is portable in a way a rented board is not. The TODO.md project lists exactly why people keep status in text rather than online tools: "portable plain text format, same project directory, offline working, privacy, versioning (using git), minimalist tool." 6 You can commit the board to git and watch a task move from In Progress to Done as a one-line diff. No export, no API, no account.

The same file, re-rendered by any tool

The argument's proof is that one plain-text file re-renders in many tools. The coddx VS Code extension "manages tasks and save them as TODO.md — a simple plain text file," whose "syntax is compatible with Github Markdown" and whose file "is portable and can be committed with Pull Requests (PRs) to git repositories." 7 Same file you typed by hand; now it has drag-and-drop columns.

Point a different tool at the same kind of file and it draws a board too. Imdone's own pitch is "Point Imdone at a folder with markdown files (like an Obsidian vault), and it'll create a kanban board from your tasks and notes," with "No proprietary formats, no lock-in — just TODO comments." 8 Its engine describes itself as a "text based kanban processor with a simple syntax… Most kanban tools require the user to use a UI. Imdone lets you capture tasks in a simple text format." 9 The board is generated from your files; it does not own them.

The Obsidian plugin makes the same move from the other direction. It lets you "Create markdown-backed Kanban boards in Obsidian," 10 storing the board as a Markdown file in your vault. Hand-edited file, coddx board, Imdone board, Obsidian board: four views, one file you own. That is what "the board is a view over status" buys you. Lose any one tool and you lose a view, never the work.

The honest limits

Plain-text boards trade real-time polish for ownership, and the trade is worth naming out loud. The clearest concession comes from a tool's own documentation. The taskwarrior-kanban project sorts tasks into three categories and "generates a Kanban board as an HTML+CSS file." 11 The board is output, not the place you work.

Then its README states the limit plainly: "This does not give you an interactive Kanban board. All changes have to be made through taskwarrior and then tw-kanban.py has to be run again to regenerate the board." 12

That is the trade in one sentence. The board is regenerated, not edited in place; some tools even mark the rendered file read-only so you do not edit it by hand. There is no live cursor, no teammate dragging a card while you watch. For a fast-moving team, a real-time SaaS board still wins on exactly that. The plain-text approach buys you portability and ownership, not multiplayer.

The tooling is also small. The TODO.md format sits at 280 GitHub stars, Imdone's engine at 150, taskwarrior-kanban at 24, todotxt-kanban at 2 (the markdown-backed Obsidian plugin is the outlier at 4,361). 13 This is enthusiast-scale software, not a category of polished apps — and that is the point, not a flaw. The durable thing is the format: GFM-compatible plain text survives any single tool dying. None of this is project-management advice for a team at scale. It is a way to keep your own work in a shape you still control after the app is gone.

How to start without a tool

You do not need an app to keep a plain-text board. Start with the file, add a renderer only if you want one. The fastest path is three steps you can do in the next minute, in whatever editor you already have open.

First, make a TODO.md with three headings — Backlog, In Progress, Done — and put your real tasks under them as checkbox lines. Second, set a work-in-progress limit you can count: no more than two or three items under In Progress at once. Third, commit the file to git if you use it, so every move is a diff you can read. That is a working board, owned entirely by you.

If you later want columns you can drag, point coddx, Imdone, or the Obsidian plugin at the file. The renderer is optional and replaceable. The file is neither.

FAQ

How do I make a kanban board from plain text or markdown files I own?

Write one Markdown heading per column — Backlog, In Progress, Done — and list tasks as checkbox lines underneath. That file is already a board you can read with no tool. TODO.md formalizes this: "sections become columns on the board." 2 To get draggable columns, point coddx, Imdone, or the Obsidian plugin at the same file.

Does a plain-text kanban board work offline and without an account?

Yes. A plain-text board is just a file on your device, so it opens with no login and no network. The TODO.md project keeps status in text precisely for "offline working, privacy, versioning (using git), minimalist tool." 6 Plain files need no account, sync to nothing you do not control, and stay readable even when every related app is offline.

Can I keep my kanban board in git or version control?

Yes, and that is one of the strongest reasons to keep status as text. A board that is a Markdown file commits like any other file, so each move from one column to the next is a readable one-line diff. The coddx extension's TODO.md file "is portable and can be committed with Pull Requests (PRs) to git repositories." 7 History comes built in.

What's the difference between a kanban board and a to-do list?

A to-do list is a flat set of items; a kanban board adds status columns and a limit on how much you take on at once. Personal Kanban reduces the whole method to two rules: "Visualize Your Work" and "Limit Your Work-in-Progress." 4 A board is a list arranged by stage, with a cap on the in-progress stage.

Can I drag cards and collaborate live on a plain-text board?

Not natively, and this is the honest limit. Plain-text boards are usually regenerated, not edited live: taskwarrior-kanban's own README says "all changes have to be made through taskwarrior and then tw-kanban.py has to be run again to regenerate the board." 12 A renderer like coddx adds drag-and-drop, but real-time multi-user editing is where a team SaaS still wins.

Are these plain-text kanban tools mature enough to rely on?

Treat the format as the durable thing, not any single tool. The apps are enthusiast-scale, with TODO.md at 280 GitHub stars and todotxt-kanban at 2, 13 so do not bet on one app surviving. Bet on the file: GFM-compatible plain text opens in any editor, so your board outlives whichever renderer you happen to use today.


If files outlast apps, then the question is not how polished your board looks, but how easily your work leaves it. Ango names the principle underneath all of it: a digital artifact that lasts must be made of "files you can control, in formats that are easy to retrieve and read." 14 A kanban board is the most disposable thing in your workflow — it is just a picture of where things stand. Keep the status as text, and you can throw away every board you ever draw without losing a single task.


To keep your work in plain Markdown you already own, so any board renders over it, mnmnote.com lives in your browser.

Footnotes

  1. Steph Ango, "File over app," stephango.com, July 1, 2023, https://stephango.com/file-over-app, retrieved 2026-06-22.

  2. "TODO.md," todomd/todo.md README, GitHub, https://github.com/todomd/todo.md, retrieved 2026-06-22. 2

  3. "todotxt-kanban," brosell/todotxt-kanban README, GitHub, https://github.com/brosell/todotxt-kanban, retrieved 2026-06-22.

  4. Jim Benson and Tonianne DeMaria Barry, Personal Kanban, https://www.personalkanban.com/, retrieved 2026-06-22. 2

  5. "TODO.md," todomd/todo.md README, GitHub, https://github.com/todomd/todo.md, retrieved 2026-06-22.

  6. "TODO.md" ("Why not using online management tools?"), todomd/todo.md README, GitHub, https://github.com/todomd/todo.md, retrieved 2026-06-22. 2

  7. "TODO.md Kanban Board," coddx, Visual Studio Marketplace, https://marketplace.visualstudio.com/items?itemName=coddx.coddx-alpha, retrieved 2026-06-22. 2

  8. "Markdown Kanban Board," Imdone, https://imdone.io/markdown-kanban-board, retrieved 2026-06-22.

  9. "imdone-core," imdone/imdone-core README, GitHub, https://github.com/imdone/imdone-core, retrieved 2026-06-22.

  10. Matthew Meyers, "obsidian-kanban," mgmeyers/obsidian-kanban README, GitHub, https://github.com/mgmeyers/obsidian-kanban, retrieved 2026-06-22.

  11. "taskwarrior-kanban," j-jith/taskwarrior-kanban README, GitHub, https://github.com/j-jith/taskwarrior-kanban, retrieved 2026-06-22.

  12. "taskwarrior-kanban," j-jith/taskwarrior-kanban README, GitHub, https://github.com/j-jith/taskwarrior-kanban, retrieved 2026-06-22. 2

  13. GitHub repository star counts (todomd/todo.md 280, imdone/imdone-core 150, j-jith/taskwarrior-kanban 24, brosell/todotxt-kanban 2, mgmeyers/obsidian-kanban 4,361), GitHub API, as of 2026-06-22. 2

  14. Steph Ango, "File over app," stephango.com, July 1, 2023, https://stephango.com/file-over-app, retrieved 2026-06-22.