Back to Blog

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