diff --git a/core/modules/comment/src/CommentTypeForm.php b/core/modules/comment/src/CommentTypeForm.php
index 3c7ef6a..e101b2b 100644
--- a/core/modules/comment/src/CommentTypeForm.php
+++ b/core/modules/comment/src/CommentTypeForm.php
@@ -11,6 +11,7 @@
 use Drupal\Core\Entity\EntityForm;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Entity\FieldableEntityInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\language\Entity\ContentLanguageSettings;
 use Psr\Log\LoggerInterface;
@@ -103,11 +104,17 @@ public function form(array $form, FormStateInterface $form_state) {
 
     if ($comment_type->isNew()) {
       $options = array();
+      $unavailable = [];
       foreach ($this->entityManager->getDefinitions() as $entity_type) {
         // Only expose entities that have field UI enabled, only those can
         // get comment fields added in the UI.
-        if ($entity_type->get('field_ui_base_route')) {
-          $options[$entity_type->id()] = $entity_type->getLabel();
+        if ($this->entityTypeSupportsComments($entity_type)) {
+          if ($entity_type->get('field_ui_base_route')) {
+            $options[$entity_type->id()] = $entity_type->getLabel();
+          }
+        }
+        else {
+          $unavailable[] = $entity_type->getLabel();
         }
       }
       $form['target_entity_type_id'] = array(
@@ -117,6 +124,16 @@ public function form(array $form, FormStateInterface $form_state) {
         '#options' => $options,
         '#description' => t('The target entity type can not be changed after the comment type has been created.')
       );
+      if ($unavailable) {
+        $form['unavailable_text'] = [
+          '#plain_text' => t('The following entity-types can not be commented on:'),
+        ];
+        $form['unavailable'] = [
+          '#theme' => 'item_list',
+          '#items' => $unavailable,
+          '#context' => ['list_style' => 'comma-list'],
+        ];
+      }
     }
     else {
       $form['target_entity_type_id_display'] = array(
@@ -176,4 +193,17 @@ public function save(array $form, FormStateInterface $form_state) {
     $form_state->setRedirectUrl($comment_type->urlInfo('collection'));
   }
 
+  /**
+   * Wraps _comment_entity_uses_integer_id().
+   *
+   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
+   *   Entity type being tested.
+   *
+   * @return bool
+   *   TRUE if entity-type uses integer IDs.
+   */
+  protected function entityTypeSupportsComments(EntityTypeInterface $entity_type) {
+    return $entity_type->isSubclassOf(FieldableEntityInterface::class) && _comment_entity_uses_integer_id($entity_type->id());
+  }
+
 }
diff --git a/core/modules/comment/src/Tests/CommentNonNodeTest.php b/core/modules/comment/src/Tests/CommentNonNodeTest.php
index 8d8e38b..379bcde 100644
--- a/core/modules/comment/src/Tests/CommentNonNodeTest.php
+++ b/core/modules/comment/src/Tests/CommentNonNodeTest.php
@@ -471,6 +471,7 @@ public function testsNonIntegerIdEntities() {
     entity_test_create_bundle('entity_test', 'Entity Test', 'entity_test_string_id');
     $limited_user = $this->drupalCreateUser(array(
       'administer entity_test_string_id fields',
+      'administer comment types',
     ));
     $this->drupalLogin($limited_user);
     // Visit the Field UI field add page.
@@ -479,6 +480,11 @@ public function testsNonIntegerIdEntities() {
     $this->assertNoOption('edit-new-storage-type', 'comment');
     // Ensure a core field type shown.
     $this->assertOption('edit-new-storage-type', 'boolean');
+    // Attempt to add a comment-type referencing this entity-type.
+    $this->drupalGet('admin/structure/comment/types/add');
+    $this->assertNoOption('edit-target-entity-type-id', 'entity_test_string_id');
+    $this->assertRaw(t('The following entity-types can not be commented on:'));
+    $this->assertRaw(t('Test entity with string_id'));
 
     // Create a bundle for entity_test_no_id.
     entity_test_create_bundle('entity_test', 'Entity Test', 'entity_test_no_id');
