diff --git a/core/modules/toolbar/src/Element/Toolbar.php b/core/modules/toolbar/src/Element/Toolbar.php
index fac39e2adbca4044058e7acafcaab567cb1495dc..660ce323f04adc166302235fd0745c1b1417a0ca 100644
--- a/core/modules/toolbar/src/Element/Toolbar.php
+++ b/core/modules/toolbar/src/Element/Toolbar.php
@@ -7,7 +7,9 @@
 
 namespace Drupal\toolbar\Element;
 
+use Drupal\Component\Utility\Html;
 use Drupal\Core\Render\Element\RenderElement;
+use Drupal\Core\Render\Element;
 
 /**
  * Provides a render element for the default Drupal toolbar.
@@ -97,6 +99,11 @@ public static function preRenderToolbar($element) {
     // Merge in the original toolbar values.
     $element = array_merge($element, $items);
 
+    // Assign each item a unique ID, based on its key.
+    foreach (Element::children($element) as $key) {
+      $element[$key]['#id'] = Html::getId('toolbar-item-' . $key);
+    }
+
     // Render the children.
     $element['#children'] = drupal_render_children($element);
 
diff --git a/core/modules/toolbar/src/Element/ToolbarItem.php b/core/modules/toolbar/src/Element/ToolbarItem.php
index e596687df114c4f15d10dc7d92d767163a83bb87..929dac410d6379ded39c5f2b2ccd40adfea1dd82 100644
--- a/core/modules/toolbar/src/Element/ToolbarItem.php
+++ b/core/modules/toolbar/src/Element/ToolbarItem.php
@@ -7,7 +7,6 @@
 
 namespace Drupal\toolbar\Element;
 
-use Drupal\Component\Utility\Html;
 use Drupal\Core\Render\Element\RenderElement;
 use Drupal\Core\Url;
 
@@ -50,8 +49,7 @@ public function getInfo() {
    *   A renderable array.
    */
   public static function preRenderToolbarItem($element) {
-    // Assign each item a unique ID.
-    $id = Html::getUniqueId('toolbar-item');
+    $id = $element['#id'];
 
     // Provide attributes for a toolbar item.
     $attributes = array(