diff --git a/token.tokens.inc b/token.tokens.inc
index 0bf2fd5..f64fe41 100644
--- a/token.tokens.inc
+++ b/token.tokens.inc
@@ -1142,6 +1142,12 @@ function menu_ui_token_info() {
     'description' => t("The menu link for this node."),
     'type' => 'menu-link',
   );
+  $info['tokens']['node']['menu-link-from-menu'] = array(
+    'name' => t('Menu link from a specific menu'),
+    'description' => t('The menu link for this node in the provided menu.'),
+    'type' => 'menu-link',
+    'dynamic' => TRUE,
+  );
 
   return $info;
 }
@@ -1188,22 +1194,50 @@ function menu_ui_tokens($type, $tokens, array $data = array(), array $options =
           }
           break;
       }
+    }
 
-      // Chained token relationships.
-      if ($menu_tokens = \Drupal::token()->findWithPrefix($tokens, 'menu-link')) {
-        if ($node->getFieldDefinition('menu_link') && $menu_link = $node->menu_link->entity) {
-          /** @var \Drupal\menu_link_content\MenuLinkContentInterface $menu_link */
-          $replacements += \Drupal::token()->generate('menu-link', $menu_tokens, array('menu-link' => $menu_link), $options, $bubbleable_metadata);
+    // Chained token relationships.
+    if ($menu_tokens = \Drupal::token()->findWithPrefix($tokens, 'menu-link')) {
+      if ($node->getFieldDefinition('menu_link') && $menu_link = $node->menu_link->entity) {
+        /** @var \Drupal\menu_link_content\MenuLinkContentInterface $menu_link */
+        $replacements += \Drupal::token()->generate('menu-link', $menu_tokens, array('menu-link' => $menu_link), $options, $bubbleable_metadata);
+      }
+      else {
+        $url = $node->urlInfo();
+        if ($links = $menu_link_manager->loadLinksByRoute($url->getRouteName(), $url->getRouteParameters())) {
+          $link = reset($links);
+          $replacements += \Drupal::token()->generate('menu-link', $menu_tokens, array('menu-link' => $link), $options, $bubbleable_metadata);
         }
-        else {
-          $url = $node->urlInfo();
-          if ($links = $menu_link_manager->loadLinksByRoute($url->getRouteName(), $url->getRouteParameters())) {
-            $link = reset($links);
-            $replacements += \Drupal::token()->generate('menu-link', $menu_tokens, array('menu-link' => $link), $options, $bubbleable_metadata);
+      }
+    }
+
+    // Process chained tokens for menu links with concrete menu specified.
+    $tokens_from_specific_menus = [];
+    foreach (\Drupal::token()->findWithPrefix($tokens, 'menu-link-from-menu') as $name => $original) {
+      $parts = explode(':', $name, 2);
+      $menu_name = $parts[0];
+
+      if (!empty($menu_name)) {
+        $url = $node->toUrl();
+        foreach ($menu_link_manager->loadLinksByRoute($url->getRouteName(), $url->getRouteParameters()) as $link) {
+          if ($link->getMenuName() == $menu_name) {
+            // Add current token along with link plugin to process after the loop.
+            if (!isset($tokens_from_specific_menus[$link->getPluginId()])) {
+              $tokens_from_specific_menus[$link->getPluginId()] = [
+                'link_plugin' => $link,
+                'tokens' => [],
+              ];
+            }
+            $tokens_from_specific_menus[$link->getPluginId()]['tokens'][$parts[1]] = $original;
+            break;
           }
         }
       }
     }
+    foreach ($tokens_from_specific_menus as $values) {
+      $link = $values['link_plugin'];
+      $replacements += \Drupal::token()->generate('menu-link', $values['tokens'], array('menu-link' => $link), $options, $bubbleable_metadata);
+    }
   }
 
   // Menu link tokens.
