Markdown checklists vs. GitHub task lists

Markdown checklists are a straightforward way to visualize to-dos in plain text. The syntax simply extends a standard Markdown list: start a line with - and follow it with either [ ] for an unchecked item or [x] for a checked one.

A regular list:

- This is a list item
- This is another list item

A checklist:

- [ ] This is an unchecked item 
- [x] This is a checked item

When rendered, the checklist displays with clickable checkboxes.

A screenshot showing a checklist in GitHub. One item is checked and one item is unchecked.

This pattern works well in README files for tracking missing features, contributor tasks, or documentation coverage. It is also useful in project notes and docs.

Upgrading to task lists in issues and pull requests

GitHub converts Markdown checklists inside issues and pull requests into interactive task lists. The additional functionality goes beyond checking boxes:

  • Reordering: Hover over any task to drag and drop it into a new position.
  • Issue creation: Use the ... menu on the right side of a task to convert that single checklist item into its own issue or sub-issue. This is a clean way to break larger planned work into smaller, tracked pieces while keeping the connections between them visible.

For example, a feature request issue might contain a checklist like this:

- [ ] Update dependencies
- [ ] Add archiving feature 
- [ ] Research design system

It renders as follows in the issue view:

A GitHub Issue titled "Finalize website changes" with a checklist.

The drag-and-drop reordering works on issue task lists:

Rearranging a task list in a GitHub Issue.

Converting checklist items into issues gives you a structured breakdown without losing context:

A dropdown menu with the options "Move up," "Move down," "Convert to issue," and "Convert to sub-issue."

Task lists behave the same way in pull requests, including reordering support:

A Pull Request titled "Finalize website changes" with a checklist.

Progress visibility

The key advantage of building a task list into a pull request is the progress indicator. Directly below the pull request title, GitHub shows a summary of completed versus remaining tasks, giving you at-a-glance status without opening the PR.

A list of PRs, with the "Finalize website changes" PR having 1 of 3 tasks completed.

Further reading

For a deeper look at task-list behavior on GitHub, see the official documentation on task lists.