Markdown Checkboxes — How to Create Task Lists
Checkboxes turn a plain Markdown list into a to-do list. They are perfect for project plans, release checklists, meeting action items and pull request descriptions. Task lists are part of GitHub Flavored Markdown (GFM), so they work on GitHub and in most modern Markdown editors. Here is everything you need to know.
Basic syntax
A task list item is a list item that starts with square brackets:
- [ ] Write the draft
- [x] Review the outline
- [ ] Publish the post
Renders as:
- Write the draft
- Review the outline
- Publish the post
The two markers:
[ ]— unchecked (a space between the brackets)[x]— checked (a lowercase or uppercase x)
The format is: list marker (-, * or +), a space, the brackets, a space, then the text.
Nested task lists
Indent sub-tasks under a parent item (two to four spaces, consistent within the list):
- [ ] Launch website
- [x] Buy domain
- [x] Set up hosting
- [ ] Write homepage copy
- [ ] Submit sitemap to Google
- [ ] Announce launch
Numbered task lists
Task lists also work with ordered list markers on GitHub and many other renderers:
1. [x] Install dependencies
2. [ ] Run migrations
3. [ ] Deploy
Formatting inside tasks
You can use bold, italics, inline code, links and mentions inside a task item:
- [ ] **Urgent:** fix login bug ([#142](https://github.com/org/repo/issues/142))
- [ ] Update `config.yml` for production
- [x] ~~Migrate old docs~~ — done in v2.1
Where Markdown checkboxes work
| Platform | Supported | Clickable |
|---|---|---|
| GitHub issues, pull requests, comments | Yes | Yes — clicking updates the Markdown |
| GitHub README files | Yes | No (display only) |
| GitLab | Yes | Yes in issues and merge requests |
| Obsidian | Yes | Yes |
| Notion (pasting Markdown) | Yes — becomes to-do blocks | Yes |
| VS Code Markdown preview | Yes | No |
| Typora | Yes | Yes |
| Reddit, Slack, Discord | No | — |
Progress tracking on GitHub
When an issue or pull request description contains task list items, GitHub shows progress (for example “2 of 5 tasks”) in issue lists, and anyone with write access can tick items directly in the rendered view.
A ready-to-use pull request checklist
## Checklist
- [ ] Tests added or updated
- [ ] Documentation updated
- [ ] No new warnings in the console
- [ ] Screenshots attached for UI changes
- [ ] Linked the related issue
Save it as .github/pull_request_template.md in your repository and GitHub will add it to every new pull request.
Common mistakes
| Mistake | Problem | Fix |
|---|---|---|
-[ ] Task |
No space after the dash — not a list item | - [ ] Task |
- [] Task |
Missing space inside the brackets | - [ ] Task |
- [ ]Task |
No space after the brackets | - [ ] Task |
[ ] Task |
No list marker | - [ ] Task |
- [v] Task |
Only x or X marks a task as done |
- [x] Task |
Also remember to leave a blank line between a paragraph and the first task, or some renderers will merge them.
Checkboxes in tables
GFM does not render [ ] inside table cells as checkboxes. Use emoji instead — ✅ and ⬜ (or ☐ / ☑) — which work everywhere:
| Feature | Free | Pro |
|------------|:----:|:---:|
| Editor | ✅ | ✅ |
| Team space | ⬜ | ✅ |
Exporting a checklist to PDF or Word
Need to print a checklist or send it to someone who does not use Markdown? The Markdown to PDF converter renders task lists as real checkboxes, and the Markdown to DOCX converter gives you an editable Word file. In the Markdown editor, type / and pick Checklist to insert a task item without typing the syntax.
Ready-made checklist templates
Meeting notes with action items
## Weekly sync — 2026-11-03
**Attendees:** Anna, Ben, Chris
### Decisions
- Launch moves to November 20
### Action items
- [ ] Anna — update the launch plan
- [ ] Ben — prepare release notes
- [ ] Chris — book the demo room
Release checklist
## Release v2.4.0
- [ ] All tests pass on main
- [ ] Version number bumped
- [ ] CHANGELOG.md updated
- [ ] Release notes drafted
- [ ] Tagged and published
- [ ] Announcement posted
Personal weekly plan
## This week
### Must do
- [ ] Submit the quarterly report
- [ ] Renew passport
### Nice to have
- [ ] Clean up downloads folder
- [ ] Read two chapters
Tips for Obsidian and other note apps
- In Obsidian, press Ctrl+Enter (Cmd+Enter on Mac) to toggle a checkbox on the current line, and use the search query
task-todo:to find open tasks across your vault. Community plugins such as Tasks add due dates and recurring tasks. - In VS Code, extensions can add a shortcut to toggle
[ ]and[x]; the built-in preview shows the checkboxes but does not let you click them. - In Notion, pasting a Markdown task list creates to-do blocks automatically.
Because task lists are plain text, they also work well with search: searching your notes for - [ ] lists every unfinished task.
Frequently asked questions
How do I check a box in Markdown?
Replace the space between the brackets with an x: - [ ] becomes - [x]. On GitHub and in Obsidian you can also click the checkbox in the rendered view.
Can I make a checkbox without a bullet point?
Not in standard Markdown — the list marker is required. If you need a standalone checkbox, use an emoji (☐) or HTML: <input type="checkbox" disabled>.
Why do my checkboxes show as [ ] text?
The renderer does not support GitHub Flavored Markdown task lists, or the syntax is slightly off. Check the table of common mistakes above.
Write a checklist with live preview
Type “/” in the editor and choose Checklist — or write - [ ] and see it render instantly.
Open Markdown Editor