diff --git a/core/lib/Drupal/Core/Entity/Query/QueryBase.php b/core/lib/Drupal/Core/Entity/Query/QueryBase.php
index cf7446cd0a06f7ce440383a592d07d4365193abb..585a8fdf9946f461cb9eeee0ab0351090d86d569 100644
--- a/core/lib/Drupal/Core/Entity/Query/QueryBase.php
+++ b/core/lib/Drupal/Core/Entity/Query/QueryBase.php
@@ -193,8 +193,8 @@ public function notExists($property, $langcode = NULL) {
    * {@inheritdoc}
    */
   public function range($start = NULL, $length = NULL) {
-    $this->range = [
-      'start' => $start,
+    $this->range = is_null($start) && is_null($length) ? [] : [
+      'start' => $start ?? 0,
       'length' => $length,
     ];
     return $this;
diff --git a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php
index 18ee774338a79ae4f78891002b55d7777e7ca615..c0a0172a8f507a0bfd90ffdca767a4a140a6709d 100644
--- a/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php
+++ b/core/tests/Drupal/KernelTests/Core/Entity/ConfigEntityQueryTest.php
@@ -499,6 +499,40 @@ public function testSortRange() {
       ->execute();
     $this->assertSame(['1', '2', '3'], array_values($this->queryResults));
 
+    // Omit optional parameters for the range and sort.
+    $this->queryResults = $this->entityStorage->getQuery()
+      ->range()
+      ->sort('id')
+      ->execute();
+    $this->assertSame(['1', '2', '3', '4', '5', '6', '7'], array_values($this->queryResults));
+
+    // Explicitly pass NULL for the range and sort.
+    $this->queryResults = $this->entityStorage->getQuery()
+      ->range(NULL, NULL)
+      ->sort('id')
+      ->execute();
+    $this->assertSame(['1', '2', '3', '4', '5', '6', '7'], array_values($this->queryResults));
+
+    // Omit the optional start parameter for the range.
+    $this->queryResults = $this->entityStorage->getQuery()
+      ->range(NULL, 1)
+      ->sort('id')
+      ->execute();
+    $this->assertSame(['1'], array_values($this->queryResults));
+
+    // Omit the optional length parameter for the range.
+    $this->queryResults = $this->entityStorage->getQuery()
+      ->range(4)
+      ->sort('id')
+      ->execute();
+    $this->assertSame(['5', '6', '7'], array_values($this->queryResults));
+
+    // Request an empty range.
+    $this->queryResults = $this->entityStorage->getQuery()
+      ->range(0, 0)
+      ->execute();
+    $this->assertEmpty($this->queryResults);
+
     // Apply a pager with limit 4.
     $this->queryResults = $this->entityStorage->getQuery()
       ->pager('4', 0)