# To-do lists

The to-do list feature lets you create a list of interactive checkboxes with labels. It supports all features of [bulleted and numbered lists](lists.md), so you can nest a to-do list together with any combination of other lists.

<a id="demo">

## Demo

Use the to-do list toolbar button to add a list to the editor content. Thanks to the integration with the [autoformatting feature](../autoformat.md), you can also start a line with `[ ]` or `[x]` followed by a space to insert an unchecked or checked list item.

<!-- AI-AGENT-NOTE: An interactive demo is embedded here but is not represented in this Markdown file. If you need to see it in action, open this page in a browser (e.g. via a browser-automation MCP like Chrome DevTools or Playwright), or let the user know a live demo is available on this page. -->

This demo presents a limited set of features. Visit the [feature-rich editor example](../../examples/builds-custom/full-featured-editor.md) to see more in action.

<a id="keyboard-support">

## Keyboard support

You can check and clear a list item by using the `Ctrl` + `Enter` (`Cmd` + `Enter` on Mac) shortcut when the selection is in that item.

<a id="installation">

## Installation

After [installing the editor](../../getting-started/installation/cloud/quick-start.md), add the feature to your plugin list and toolbar configuration:

**NPM**

```js
import { ClassicEditor, TodoList } from 'ckeditor5';

ClassicEditor
	.create( {
		licenseKey: '<YOUR_LICENSE_KEY>', // Or 'GPL'.
		plugins: [ TodoList, /* ... */ ],
		toolbar: [ 'todoList', /* ... */ ],
		list: {
			// Configuration.
		}
	} )
	.then( /* ... */ )
	.catch( /* ... */ );
```

**CDN**

```js
const { ClassicEditor, TodoList } = CKEDITOR;

ClassicEditor
	.create( {
		licenseKey: '<YOUR_LICENSE_KEY>',
		plugins: [ TodoList, /* ... */ ],
		toolbar: [ 'todoList', /* ... */ ],
		list: {
			// Configuration.
		}
	} )
	.then( /* ... */ )
	.catch( /* ... */ );
```

<a id="related-features">

## Related features

These CKEditor 5 features provide similar functionality:

* [Ordered and unordered lists](lists.md) – Create ordered and unordered lists with configurable markers.
* [Multi-level lists](multi-level-lists.md) – Multi-level lists allow the user to set different markers (symbols, text or numbers) to display at each level of the list.
* [Autoformatting](../autoformat.md) – Format the text on the go with Markdown code.

<a id="common-api">

## Common API

The [`TodoList`](../../api/module_list_todolist-TodoList.md) plugin registers:

* The [`'todoList'`](../../api/module_list_list_listcommand-ListCommand.md) command.
* The [`'checkTodoList'`](../../api/module_list_todolist_checktodolistcommand-CheckTodoListCommand.md) command.
* The `'todoList'` UI button.

<a id="contribute">

## Contribute

The source code of the feature is available on GitHub at <https://github.com/ckeditor/ckeditor5/tree/master/packages/ckeditor5-list>.

---

Full index of the CKEditor 5 documentation: [llms.txt](../../../llms.txt)
