diff --git a/core/modules/block/src/BlockForm.php b/core/modules/block/src/BlockForm.php
index 1b1f427..2c444da 100644
--- a/core/modules/block/src/BlockForm.php
+++ b/core/modules/block/src/BlockForm.php
@@ -180,6 +180,13 @@ public function form(array $form, FormStateInterface $form_state) {
       );
     }
 
+    // Hidden weight setting.
+    $weight = $entity->isNew() ? $this->getRequest()->query->get('weight', 0) : $entity->getWeight();
+    $form['weight'] = array(
+      '#type' => 'hidden',
+      '#default_value' => $weight,
+    );
+
     // Region settings.
     $entity_region = $entity->getRegion();
     $region = $entity->isNew() ? $this->getRequest()->query->get('region', $entity_region) : $entity_region;
@@ -294,6 +301,7 @@ protected function actions(array $form, FormStateInterface $form_state) {
   public function validateForm(array &$form, FormStateInterface $form_state) {
     parent::validateForm($form, $form_state);
 
+    $form_state->setValue('weight', (int) $form_state->getValue('weight'));
     // The Block Entity form puts all block plugin form elements in the
     // settings form element, so just pass that to the block for validation.
     $this->getPluginForm($this->entity->getPlugin())->validateConfigurationForm($form['settings'], SubformState::createForSubform($form['settings'], $form, $form_state));
diff --git a/core/modules/block/src/Controller/BlockLibraryController.php b/core/modules/block/src/Controller/BlockLibraryController.php
index 69d18f1..739884a 100644
--- a/core/modules/block/src/Controller/BlockLibraryController.php
+++ b/core/modules/block/src/Controller/BlockLibraryController.php
@@ -119,6 +119,8 @@ public function listBlocks(Request $request, $theme) {
     $definitions = $this->blockManager->getSortedDefinitions($definitions);
 
     $region = $request->query->get('region');
+    $weight = $request->query->get('weight');
+    $destination = $this->redirectDestination->get();
     $rows = [];
     foreach ($definitions as $plugin_id => $plugin_definition) {
       $row = [];
@@ -144,7 +146,9 @@ public function listBlocks(Request $request, $theme) {
       if ($region) {
         $links['add']['query']['region'] = $region;
       }
-      $destination = $this->redirectDestination->get();
+      if ($weight) {
+        $links['add']['query']['weight'] = $weight;
+      }
       if ($destination) {
         $links['add']['query']['destination'] = $destination;
       }
