diff --git a/core/modules/comment/src/Tests/CommentTitleTest.php b/core/modules/comment/src/Tests/CommentTitleTest.php
new file mode 100644
index 0000000..594a560
--- /dev/null
+++ b/core/modules/comment/src/Tests/CommentTitleTest.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * @file
+ * Definition of Drupal\comment\Tests\CommentEmptyTitlesTest.
+ */
+
+namespace Drupal\comment\Tests;
+
+use Drupal\Core\Language\Language;
+
+/**
+ * Tests comment with empty titles.
+ */
+class CommentTitleTest extends CommentTestBase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Comment titles',
+      'description' => 'Test to ensure that appropriate and accessible markup is created to titles.',
+      'group' => 'Comment',
+    );
+  }
+
+  /**
+   * Tests markup for comments with empty titles.
+   */
+  public function testCommentEmptyTitles() {
+    // Enables module that sets comment title to = ''.
+    \Drupal::moduleHandler()->install(array('comment_test_empty_titles'));
+
+    // Set comments to have a subject with preview disabled.
+    $this->drupalLogin($this->admin_user);
+    $this->setCommentPreview(DRUPAL_DISABLED);
+    $this->setCommentForm(TRUE);
+    $this->setCommentSubject(TRUE);
+    $this->drupalLogout();
+
+    // Create a node.
+    $this->drupalLogin($this->web_user);
+    $this->node = $this->drupalCreateNode(array('type' => 'article', 'promote' => 1, 'uid' => $this->web_user->id()));
+
+    // Post comment #1 and verify that title is rendered in h3.
+    $this->drupalLogin($this->web_user);
+    $subject_text = $this->randomName();
+    $comment_text = $this->randomName();
+    $comment = $this->postComment($this->node, $comment_text, $subject_text, TRUE);
+    // Confirm that the comment was created.
+    $regex = '/<a id="comment-' . $comment->id() . '"(.*?)';
+    $regex .= $comment->comment_body->value . '(.*?)';
+    $regex .= '/s';
+    $this->assertPattern($regex, 'Comment is created succesfully');
+    // Tests that markup is not generated for the comment without header.
+    $this->assertNoPattern('|<h3[^>]*></h3>|', 'H3 for comment title element not found when no title present.');
+  }
+
+  /**
+   * Tests markup for comments with populated titles.
+   */
+  public function testCommentPopulatedTitles() {
+    // Set comments to have a subject with preview disabled.
+    $this->drupalLogin($this->admin_user);
+    $this->setCommentPreview(DRUPAL_DISABLED);
+    $this->setCommentForm(TRUE);
+    $this->setCommentSubject(TRUE);
+    $this->drupalLogout();
+
+    // Create a node.
+    $this->drupalLogin($this->web_user);
+    $this->node = $this->drupalCreateNode(array('type' => 'article', 'promote' => 1, 'uid' => $this->web_user->id()));
+
+    // Post comment #1 and verify that title is rendered in h3.
+    $this->drupalLogin($this->web_user);
+    $subject_text = $this->randomName();
+    $comment_text = $this->randomName();
+    $comment1 = $this->postComment($this->node, $comment_text, $subject_text, TRUE);
+    // Confirm that the comment was created.
+    $this->assertTrue($this->commentExists($comment1), 'Comment #1. Comment found.');
+    // Tests that markup is created for comment with heading.
+    $this->assertPattern('|<h3[^>]*><a[^>]*>' . $subject_text . '</a></h3>|', 'H3 element found when title present.');
+  }
+}
diff --git a/core/modules/comment/templates/comment.html.twig b/core/modules/comment/templates/comment.html.twig
index 5fca73b..7ffb7c0 100644
--- a/core/modules/comment/templates/comment.html.twig
+++ b/core/modules/comment/templates/comment.html.twig
@@ -65,7 +65,9 @@
  */
 #}
 <article{{ attributes }}>
-  {{ title_prefix }}
+  {% if title %}
+    {{ title_prefix }}
+  {% endif %}
 
   {#
   Hide the "new" indicator by default, let a piece of JavaScript ask
@@ -74,9 +76,11 @@
   #}
   <mark class="hidden new" data-comment-timestamp="{{ new_indicator_timestamp }}"></mark>
 
-  <h3{{ title_attributes }}>{{ title }}</h3>
+  {% if title %}
+    <h3{{ title_attributes }}>{{ title }}</h3>
+    {{ title_suffix }}
+  {% endif %}
 
-  {{ title_suffix }}
 
   <footer>
     {{ user_picture }}
diff --git a/core/modules/comment/tests/modules/comment_test_empty_titles/comment_test_empty_titles.info.yml b/core/modules/comment/tests/modules/comment_test_empty_titles/comment_test_empty_titles.info.yml
new file mode 100644
index 0000000..4ff7f61
--- /dev/null
+++ b/core/modules/comment/tests/modules/comment_test_empty_titles/comment_test_empty_titles.info.yml
@@ -0,0 +1,8 @@
+name: 'Comment test empty titles'
+type: module
+description: 'Support module for testing empty title accessibility with Comment module.'
+package: Testing
+version: VERSION
+core: 8.x
+dependencies:
+  - comment
diff --git a/core/modules/comment/tests/modules/comment_test_empty_titles/comment_test_empty_titles.module b/core/modules/comment/tests/modules/comment_test_empty_titles/comment_test_empty_titles.module
new file mode 100644
index 0000000..9a94d2f
--- /dev/null
+++ b/core/modules/comment/tests/modules/comment_test_empty_titles/comment_test_empty_titles.module
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * @file
+ * Dummy module emptying comment titles to test for approriate and accessible
+ * markup in edge case scenarios where comments have empty titles.
+ */
+
+use Drupal\comment\CommentInterface;
+
+/**
+ * Implements hook_preprocess_comment().
+ */
+function comment_test_empty_titles_preprocess_comment(&$v) {
+    $v['title'] = '';
+}
diff --git a/core/themes/bartik/templates/comment.html.twig b/core/themes/bartik/templates/comment.html.twig
index d2c4584..c00a9c5 100644
--- a/core/themes/bartik/templates/comment.html.twig
+++ b/core/themes/bartik/templates/comment.html.twig
@@ -102,9 +102,11 @@
     #}
     <span class="hidden new" data-comment-timestamp="{{ new_indicator_timestamp }}"></span>
 
-    {{ title_prefix }}
-    <h3{{ title_attributes }}>{{ title }}</h3>
-    {{ title_suffix }}
+    {% if title %}
+      {{ title_prefix }}
+      <h3{{ title_attributes }}>{{ title }}</h3>
+      {{ title_suffix }}
+    {% endif %}
 
     <div{{ content_attributes }}>
       {{ content|without('links') }}
