diff --git a/core/includes/form.inc b/core/includes/form.inc
index 05f2a9e..e89de36 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -250,7 +250,7 @@ function template_preprocess_details(&$variables) {
     $variables['summary_attributes']['aria-expanded'] = !empty($element['#attributes']['open']) ? 'true' : 'false';
     $variables['summary_attributes']['aria-pressed'] = $variables['summary_attributes']['aria-expanded'];
   }
-  $variables['title'] = (!empty($element['#title'])) ? $element['#title'] : '';
+  $variables['title'] = (!empty($element['#title'])) ? ['#markup' => $element['#title']] : '';
   $variables['description'] = (!empty($element['#description'])) ? $element['#description'] : '';
   $variables['children'] = (isset($element['#children'])) ? $element['#children'] : '';
   $variables['value'] = (isset($element['#value'])) ? $element['#value'] : '';
diff --git a/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php b/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php
index 906e74b..8608500 100644
--- a/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Render/Element/RenderElementTypesTest.php
@@ -240,4 +240,19 @@ public function testSystemCompactLink() {
     $this->assertTrue($result, '"' . $element['name'] . '" is rendered correctly by drupal_render().');
   }
 
+  /**
+   * Tests system #type 'details'.
+   */
+  public function testDetails() {
+    // Basic Details element,
+    // with "less than (<) or greater than (>)" in title, not being sanitized.
+    $this->assertElements([
+      '#type' => 'details',
+      '#title' => '<span>Drupal test</span>',
+    ],
+    "<details class=\"js-form-wrapper form-wrapper\">\n  <summary role=\"button\" aria-expanded=\"false\" aria-pressed=\"false\"><span>Drupal test</span></summary>\n  \n  \n  \n</details>\n",
+    "#type 'details' with title not sanitized"
+    );
+  }
+
 }
