diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/ContentEntity.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/ContentEntity.php
index a2f38d180c..f43c9e272a 100644
--- a/core/modules/migrate_drupal/src/Plugin/migrate/source/ContentEntity.php
+++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/ContentEntity.php
@@ -217,6 +217,10 @@ public function query() {
     if (!empty($this->configuration['bundle'])) {
       $query->condition($this->entityType->getKey('bundle'), $this->configuration['bundle']);
     }
+    // Exclude anonymous user account.
+    if ($this->entityType->id() === 'user') {
+      $query->condition($this->entityType->getKey('id'), '0', '<>');
+    }
     return $query;
   }
 
diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php
index 4a0645528e..8046dccbc0 100644
--- a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php
+++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/ContentEntityTest.php
@@ -155,6 +155,12 @@ protected function setUp(): void {
     ]);
     $this->user->save();
 
+    $this->anonymousUser = User::create([
+      'name' => 'anonymous',
+      'uid' => 0,
+    ]);
+    $this->anonymousUser->save();
+
     $term = Term::create([
       'vid' => $this->vocabulary,
       'name' => 'Apples',
@@ -249,6 +255,7 @@ public function testUserSource() {
     $migration = $this->migrationPluginManager->createStubMigration($this->migrationDefinition('content_entity:user'));
     $user_source = $this->sourcePluginManager->createInstance('content_entity:user', $configuration, $migration);
     $this->assertSame('users', $user_source->__toString());
+    // Confirm that the query does not return a row for the anonymous user.
     $this->assertEquals(1, $user_source->count());
     $ids = $user_source->getIds();
     $this->assertArrayHasKey('langcode', $ids);
