--- title: To-do list category: features --- The {@link module:list/todo-list~TodoList} feature let you create lists of interactive unordered lists of checkbooks with labels. They support all features of regular lists so you can nest to-do list together with bullet and numbered list. ## Demo {@snippet features/todo-list} ## Keyboard support You can check/uncheck item using `ctrl` + `space` shortcut whenever the selection is in that item, ## Installation The list package is installed as a dependency of all builds, so as long as you do not building your own, custom rich text editor, you do not need to install npm packages. However, to-do list feature is not included and you need to rebuild the editor with the custom configuration. To add this feature to your editor, install the [`@ckeditor/ckeditor5-list`](https://www.npmjs.com/package/@ckeditor/ckeditor5-list) package: ```bash npm install --save @ckeditor/ckeditor5-list ``` Then add `TodoList` plugin to your plugin list and the toolbar configuration: ```js import TodoList from '@ckeditor/ckeditor5-list/src/todo-list'; ClassicEditor .create( document.querySelector( '#editor' ), { plugins: [ TodoList, ... ], toolbar: [ 'todoList', ... ], } ) .then( ... ) .catch( ... ); ``` Read more about {@link builds/guides/integration/installing-plugins installing plugins}. ## Representation: ### In data: ```html ``` For nested lists: ```html ``` ### In the model: Todo lists will be define in model as a separate list type: ```html foo bar ``` Note that, it does not prevent us from implementing "orderedTodo" type in the future if we will implement such lists. We will be also able to provide any UI on top of it if needed. ## Contribute The source code of the feature is available on GitHub in https://github.com/ckeditor/ckeditor5-list.