diff --git a/core/lib/Drupal/Core/Plugin/Plugin/Validation/Constraint/PluginExistsConstraintValidator.php b/core/lib/Drupal/Core/Plugin/Plugin/Validation/Constraint/PluginExistsConstraintValidator.php
index 2e9a8c33ae0ba41c8d15b953ac364fdc146518fc..b862bc339dfee8323b1609382907ae20f7a87be0 100644
--- a/core/lib/Drupal/Core/Plugin/Plugin/Validation/Constraint/PluginExistsConstraintValidator.php
+++ b/core/lib/Drupal/Core/Plugin/Plugin/Validation/Constraint/PluginExistsConstraintValidator.php
@@ -20,6 +20,10 @@ class PluginExistsConstraintValidator extends ConstraintValidator {
   public function validate(mixed $plugin_id, Constraint $constraint) {
     assert($constraint instanceof PluginExistsConstraint);
 
+    if ($plugin_id === NULL) {
+      return;
+    }
+
     $definition = $constraint->pluginManager->getDefinition($plugin_id, FALSE);
     // Some plugin managers provide fallbacks.
     if ($constraint->pluginManager instanceof FallbackPluginManagerInterface) {
diff --git a/core/tests/Drupal/KernelTests/Core/Plugin/PluginExistsConstraintValidatorTest.php b/core/tests/Drupal/KernelTests/Core/Plugin/PluginExistsConstraintValidatorTest.php
index 6c34c8f033806140b8b1451e1bcadea998a225b5..3106db3269687a7de687447d4a223e0a3010f7f4 100644
--- a/core/tests/Drupal/KernelTests/Core/Plugin/PluginExistsConstraintValidatorTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Plugin/PluginExistsConstraintValidatorTest.php
@@ -61,6 +61,11 @@ public function testValidation(): void {
     $violations = $data->validate();
     $this->assertCount(1, $violations);
     $this->assertSame("The 'action_test_save_entity' plugin must implement or extend " . MenuInterface::class . '.', (string) $violations->get(0)->getMessage());
+
+    // No validation is attempted on a NULL value.
+    $data->setValue(NULL);
+    $violations = $data->validate();
+    $this->assertCount(0, $violations);
   }
 
 }