diff --git a/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.ckeditor5.yml b/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.ckeditor5.yml
index eb787eebf5e2defd54e9af104474fa2747570526..fabd48c7382927c4da37cb558c711f8b04ad3f3f 100644
--- a/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.ckeditor5.yml
+++ b/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.ckeditor5.yml
@@ -3,7 +3,8 @@ ckeditor5_plugin_pack_todo_document_list__todo_document_list:
     plugins:
       - list.TodoList
   drupal:
-    label: To-do list
+    label: To-do List
+    class: Drupal\ckeditor5_plugin_pack_todo_document_list\Plugin\CKEditor5Plugin\ToDoList
     elements:
       - <ul>
       - <ul class>
@@ -12,7 +13,7 @@ ckeditor5_plugin_pack_todo_document_list__todo_document_list:
       - <label>
       - <label class>
       - <input>
-      - <input type tabindex disabled>
+      - <input type tabindex disabled checked>
     library: core/ckeditor5.list
     admin_library: ckeditor5_plugin_pack_todo_document_list/admin.todo_document_list
     toolbar_items:
diff --git a/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.libraries.yml b/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.libraries.yml
index 1dc880cdbea08a59a0da66fc25f3c84213824ce3..aad26ae0d3ad524787f7c09c085bd65f48ce542b 100644
--- a/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.libraries.yml
+++ b/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.libraries.yml
@@ -3,3 +3,9 @@ admin.todo_document_list:
   css:
     theme:
       css/todo-document-list.admin.css: { }
+
+style.todo_document_list:
+  version: 20250210
+  css:
+    theme:
+      css/todo-list.css: { }
diff --git a/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.module b/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.module
index a990640fa6c08aae1a81dd1a9622cc8ebec6ab41..e3d0b00f0317b193fb9226363cb211f73cd8d2b3 100644
--- a/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.module
+++ b/modules/ckeditor5_plugin_pack_todo_document_list/ckeditor5_plugin_pack_todo_document_list.module
@@ -30,3 +30,22 @@ function ckeditor5_plugin_pack_todo_document_list_ckeditor5_plugin_info_alter(ar
 function ckeditor5_plugin_pack_todo_document_list_install($is_syncing): void {
   ckeditor5_plugin_pack_display_trial_info_message();
 }
+
+/**
+ * Implements hook_preprocess_HOOK().
+ */
+function ckeditor5_plugin_pack_todo_document_list_preprocess_page(&$variables): void {
+  $editors = \Drupal::entityTypeManager()->getStorage('editor')->loadMultiple();
+  foreach ($editors as $editor) {
+    if ($editor->getEditor() !== 'ckeditor5') {
+      continue;
+    }
+
+    $settings = $editor->getSettings();
+    $isAttachOption = isset($settings["plugins"]["ckeditor5_plugin_pack_todo_document_list__todo_document_list"]["attach_default_styles"]);
+    if ($isAttachOption && $settings["plugins"]["ckeditor5_plugin_pack_todo_document_list__todo_document_list"]["attach_default_styles"]) {
+      $variables['#attached']['library'][] = 'ckeditor5_plugin_pack_todo_document_list/style.todo_document_list';
+      return;
+    }
+  }
+}
diff --git a/modules/ckeditor5_plugin_pack_todo_document_list/config/schema/ckeditor5_plugin_pack_todo_document_list.schema.yml b/modules/ckeditor5_plugin_pack_todo_document_list/config/schema/ckeditor5_plugin_pack_todo_document_list.schema.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4a9913fa132002cd708c859e2c723dee33a15582
--- /dev/null
+++ b/modules/ckeditor5_plugin_pack_todo_document_list/config/schema/ckeditor5_plugin_pack_todo_document_list.schema.yml
@@ -0,0 +1,8 @@
+ckeditor5.plugin.ckeditor5_plugin_pack_todo_document_list__todo_document_list:
+  type: mapping
+  label: 'To-Do List'
+  mapping:
+    attach_default_styles:
+      type: boolean
+      label: 'Attach default styles'
+
diff --git a/modules/ckeditor5_plugin_pack_todo_document_list/css/todo-list.css b/modules/ckeditor5_plugin_pack_todo_document_list/css/todo-list.css
new file mode 100644
index 0000000000000000000000000000000000000000..014e58a8112e290ed6b87447e74e9d6751d50551
--- /dev/null
+++ b/modules/ckeditor5_plugin_pack_todo_document_list/css/todo-list.css
@@ -0,0 +1,8 @@
+.todo-list {
+  list-style: none;
+}
+
+.todo-list .todo-list__label .todo-list__label__description {
+  vertical-align: middle;
+  margin: 0 0.5rem
+}
diff --git a/modules/ckeditor5_plugin_pack_todo_document_list/src/Plugin/CKEditor5Plugin/ToDoList.php b/modules/ckeditor5_plugin_pack_todo_document_list/src/Plugin/CKEditor5Plugin/ToDoList.php
new file mode 100644
index 0000000000000000000000000000000000000000..9fde8334dea12c97c56e3f4f430d6241e94fda57
--- /dev/null
+++ b/modules/ckeditor5_plugin_pack_todo_document_list/src/Plugin/CKEditor5Plugin/ToDoList.php
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
+ * For licensing, see https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+declare(strict_types=1);
+
+namespace Drupal\ckeditor5_plugin_pack_todo_document_list\Plugin\CKEditor5Plugin;
+
+use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableInterface;
+use Drupal\ckeditor5\Plugin\CKEditor5PluginConfigurableTrait;
+use Drupal\ckeditor5\Plugin\CKEditor5PluginDefault;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\editor\EditorInterface;
+
+/**
+ * CKEditor 5 To-Do List.
+ *
+ * @internal
+ *   Plugin classes are internal.
+ */
+class ToDoList extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface {
+
+  use CKEditor5PluginConfigurableTrait;
+
+  /**
+   * {@inheritdoc}
+   */
+  public function defaultConfiguration(): array {
+    return [
+      'attach_default_styles' => FALSE,
+    ];
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function buildConfigurationForm(array $form, FormStateInterface $form_state): array {
+    $form['attach_default_styles'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Add styles for rendered content automatically'),
+      '#description' => $this->t('Use this option if you want to automatically add required CSS for To-Do List to display properly in a rendered content outside CKEditor.'),
+      '#default_value' => $this->configuration['attach_default_styles'] ?? FALSE,
+    ];
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validateConfigurationForm(array &$form, FormStateInterface $form_state): void {
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitConfigurationForm(array &$form, FormStateInterface $form_state): void {
+    $values = $form_state->cleanValues()->getValues();
+    $this->configuration['attach_default_styles'] = (bool) $values['attach_default_styles'] ?? FALSE;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array {
+    return $static_plugin_config;
+  }
+
+}