The syntax
- `- [ ] Buy milk` — unchecked
- `- [x] Ship the release` — checked
- `- [X]` — a capital X also counts
- Nested: indent the same as any list item under a parent task
Where checkboxes actually render
GitHub, GitLab, Gitea and many markdown editors render task lists as real checkboxes, and some even let you tick them in place (which edits the file). Plain renderers and most content management systems show the brackets as literal text, which is why a to-do list can look broken in one app and perfect in another.
Turning a checkbox list into a plain list
If a target renderer does not support task lists, replace `- [ ]` with `-` to keep the items readable. The content survives; you just lose the visual checkbox.
Checkboxes outside to-do lists
The same `[ ]` / `[x]` notation appears in issue templates and pull-request checklists, where it signals completion of a process. It is the same syntax; only the context differs.