diff --git a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php
index 3c34ec9665..94e9341f20 100644
--- a/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php
+++ b/core/lib/Drupal/Core/Validation/Plugin/Validation/Constraint/UniqueFieldValueValidator.php
@@ -2,6 +2,7 @@
 
 namespace Drupal\Core\Validation\Plugin\Validation\Constraint;
 
+use Drupal\Core\Field\FieldItemListInterface;
 use Symfony\Component\Validator\Constraint;
 use Symfony\Component\Validator\ConstraintValidator;
 
@@ -17,6 +18,29 @@ public function validate($items, Constraint $constraint) {
     if (!$item = $items->first()) {
       return;
     }
+    $value_taken = (bool) $this->getEntityQuery($items)->execute();
+
+    if ($value_taken) {
+      /** @var \Drupal\Core\Entity\EntityInterface $entity */
+      $entity = $items->getEntity();
+      $this->context->addViolation($constraint->message, [
+        '%value' => $item->value,
+        '@entity_type' => $entity->getEntityType()->getLowercaseLabel(),
+        '@field_name' => mb_strtolower($items->getFieldDefinition()->getLabel()),
+      ]);
+    }
+  }
+
+  /**
+   * Gets the entity query to determine if the value is unique.
+   *
+   * @param \Drupal\Core\Field\FieldItemListInterface $items
+   *   The field item list.
+   *
+   * @return \Drupal\Core\Entity\Query\QueryInterface
+   *   The entity query.
+   */
+  protected function getEntityQuery(FieldItemListInterface $items) {
     $field_name = $items->getFieldDefinition()->getName();
     /** @var \Drupal\Core\Entity\EntityInterface $entity */
     $entity = $items->getEntity();
@@ -31,20 +55,11 @@ public function validate($items, Constraint $constraint) {
     if (isset($entity_id)) {
       $query->condition($id_key, $entity_id, '<>');
     }
-
-    $value_taken = (bool) $query
-      ->condition($field_name, $item->value)
+    $query
+      ->condition($field_name, $items->first()->value)
       ->range(0, 1)
-      ->count()
-      ->execute();
-
-    if ($value_taken) {
-      $this->context->addViolation($constraint->message, [
-        '%value' => $item->value,
-        '@entity_type' => $entity->getEntityType()->getLowercaseLabel(),
-        '@field_name' => mb_strtolower($items->getFieldDefinition()->getLabel()),
-      ]);
-    }
+      ->count();
+    return $query;
   }
 
 }
diff --git a/core/modules/block_content/src/Entity/BlockContent.php b/core/modules/block_content/src/Entity/BlockContent.php
index 1037beeef5..dcd0da5491 100644
--- a/core/modules/block_content/src/Entity/BlockContent.php
+++ b/core/modules/block_content/src/Entity/BlockContent.php
@@ -204,7 +204,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
         'weight' => -5,
       ])
       ->setDisplayConfigurable('form', TRUE)
-      ->addConstraint('UniqueField', []);
+      ->addConstraint('UniqueBlockContentLabel', []);
 
     $fields['changed'] = BaseFieldDefinition::create('changed')
       ->setLabel(t('Changed'))
diff --git a/core/modules/block_content/src/Plugin/Validation/Constraint/UniqueBlockContentLabel.php b/core/modules/block_content/src/Plugin/Validation/Constraint/UniqueBlockContentLabel.php
new file mode 100644
index 0000000000..48aa3ce58c
--- /dev/null
+++ b/core/modules/block_content/src/Plugin/Validation/Constraint/UniqueBlockContentLabel.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Drupal\block_content\Plugin\Validation\Constraint;
+
+use Drupal\Core\Validation\Plugin\Validation\Constraint\UniqueFieldConstraint;
+
+/**
+ * Checks if an block_content info field has a unique value.
+ *
+ * @Constraint(
+ *   id = "UniqueBlockContentLabel",
+ *   label = @Translation("Unique Block Content Label constraint", context = "Validation"),
+ * )
+ */
+class UniqueBlockContentLabel extends UniqueFieldConstraint {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validatedBy() {
+    return '\Drupal\block_content\Plugin\Validation\Constraint\UniqueBlockContentLabelValueValidator';
+  }
+
+}
diff --git a/core/modules/block_content/src/Plugin/Validation/Constraint/UniqueBlockContentLabelValueValidator.php b/core/modules/block_content/src/Plugin/Validation/Constraint/UniqueBlockContentLabelValueValidator.php
new file mode 100644
index 0000000000..aa67a26524
--- /dev/null
+++ b/core/modules/block_content/src/Plugin/Validation/Constraint/UniqueBlockContentLabelValueValidator.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Drupal\block_content\Plugin\Validation\Constraint;
+
+use Drupal\Core\Field\FieldItemListInterface;
+use Drupal\Core\Validation\Plugin\Validation\Constraint\UniqueFieldValueValidator;
+use Symfony\Component\Validator\Context\ExecutionContextInterface;
+
+/**
+ * Validates that a BlockContent label is unique for all reusable blocks.
+ */
+class UniqueBlockContentLabelValueValidator extends UniqueFieldValueValidator {
+
+  /**
+   * @inheritDoc
+   */
+  public function initialize(ExecutionContextInterface $context) {
+    $items = $context->getValue();
+    /** @var \Drupal\Core\Entity\EntityInterface $entity */
+    $entity = $items->getEntity();
+    if ($entity->getEntityTypeId() !== 'block_content') {
+      throw new \InvalidArgumentException("The UniqueBlockContentLabelValueValidator can only be used with entities of the type block_content. {$entity->getEntityTypeId()} provided");
+    }
+    parent::initialize($context);
+  }
+
+  /**
+   * @inheritDoc
+   */
+  protected function getEntityQuery(FieldItemListInterface $items) {
+    $query = parent::getEntityQuery($items);
+    $query->condition('reusable', 1);
+    return $query;
+  }
+
+
+}
