diff --git a/core/modules/block_content/src/Plugin/Derivative/BlockContent.php b/core/modules/block_content/src/Plugin/Derivative/BlockContent.php
index 5ba836f1a8d0ed09b97d9935c984918692999aeb..472f04183cb338ca7722b5f27f2201f49ced5b5b 100644
--- a/core/modules/block_content/src/Plugin/Derivative/BlockContent.php
+++ b/core/modules/block_content/src/Plugin/Derivative/BlockContent.php
@@ -49,7 +49,7 @@ public function getDerivativeDefinitions($base_plugin_definition) {
     /** @var \Drupal\block_content\Entity\BlockContent $block_content */
     foreach ($block_contents as $block_content) {
       $this->derivatives[$block_content->uuid()] = $base_plugin_definition;
-      $this->derivatives[$block_content->uuid()]['admin_label'] = $block_content->label();
+      $this->derivatives[$block_content->uuid()]['admin_label'] = $block_content->label() ?? ($block_content->type->entity->label() . ': ' . $block_content->id());
       $this->derivatives[$block_content->uuid()]['config_dependencies']['content'] = [
         $block_content->getConfigDependencyName(),
       ];
diff --git a/core/modules/block_content/tests/src/Kernel/BlockContentDeriverTest.php b/core/modules/block_content/tests/src/Kernel/BlockContentDeriverTest.php
index 3695c591b634aac519d4d4d914d21f6d1349542e..86aae63f7a2bfad2a391a73e2898d4836fd1e101 100644
--- a/core/modules/block_content/tests/src/Kernel/BlockContentDeriverTest.php
+++ b/core/modules/block_content/tests/src/Kernel/BlockContentDeriverTest.php
@@ -4,6 +4,7 @@
 
 use Drupal\block_content\Entity\BlockContent;
 use Drupal\block_content\Entity\BlockContentType;
+use Drupal\block_content\Plugin\Derivative\BlockContent as DerivativeBlockContent;
 use Drupal\Component\Plugin\PluginBase;
 use Drupal\KernelTests\KernelTestBase;
 
@@ -19,6 +20,32 @@ class BlockContentDeriverTest extends KernelTestBase {
    */
   protected static $modules = ['block', 'block_content', 'system', 'user'];
 
+  /**
+   * The definition array of the base plugin.
+   *
+   * @var array
+   */
+  protected $baseDefinition = [
+    'id' => 'block_content',
+    'provider' => 'block_content',
+    'class' => '\Drupal\block_content\Plugin\Block\BlockContentBlock',
+    'deriver' => '\Drupal\block_content\Plugin\Derivative\BlockContent',
+  ];
+
+  /**
+   * The block content storage.
+   *
+   * @var \Drupal\Core\Entity\EntityStorageInterface
+   */
+  protected $blockContentStorage;
+
+  /**
+   * The tested block content derivative class.
+   *
+   * @var \Drupal\block_content\Plugin\Derivative\BlockContent
+   */
+  protected $blockContentDerivative;
+
   /**
    * {@inheritdoc}
    */
@@ -26,6 +53,9 @@ protected function setUp(): void {
     parent::setUp();
     $this->installEntitySchema('user');
     $this->installEntitySchema('block_content');
+
+    $this->blockContentStorage = \Drupal::entityTypeManager()->getStorage('block_content');
+    $this->blockContentDerivative = new DerivativeBlockContent($this->blockContentStorage);
   }
 
   /**
@@ -62,4 +92,31 @@ public function testReusableBlocksOnlyAreDerived() {
     $this->assertFalse($block_manager->hasDefinition($plugin_id));
   }
 
+  /**
+   * Tests the admin labels of derivative definitions.
+   */
+  public function testGetDerivativeDefinitionsAdminLabels(): void {
+    $blockContentType = BlockContentType::create([
+      'id' => 'basic',
+      'label' => 'Basic Block',
+    ]);
+    $blockContentType->save();
+    $blockContentWithLabel = BlockContent::create([
+      'info' => 'Basic prototype',
+      'type' => 'basic',
+    ]);
+    $blockContentWithLabel->save();
+    $blockContentNoLabel = BlockContent::create([
+      'type' => 'basic',
+    ]);
+    $blockContentNoLabel->save();
+
+    $blockPluginManager = \Drupal::service('plugin.manager.block');
+    $plugin = $blockPluginManager->createInstance('block_content:' . $blockContentWithLabel->uuid());
+    $this->assertEquals('Basic prototype', $plugin->getPluginDefinition()['admin_label']);
+
+    $plugin = $blockPluginManager->createInstance('block_content:' . $blockContentNoLabel->uuid());
+    $this->assertEquals('Basic Block: ' . $blockContentNoLabel->id(), $plugin->getPluginDefinition()['admin_label']);
+  }
+
 }