diff --git a/core/modules/entity/entity.module b/core/modules/entity/entity.module
index c167bd4..0097602 100644
--- a/core/modules/entity/entity.module
+++ b/core/modules/entity/entity.module
@@ -5,6 +5,7 @@
  * Entity API for handling entities like nodes or users.
  */
 
+use Drupal\entity\EntityFieldQuery;
 use Drupal\entity\EntityMalformedException;
 
 /**
@@ -21,6 +22,50 @@ function entity_help($path, $arg) {
 }
 
 /**
+ * Implements hook_menu().
+ */
+function entity_menu() {
+  $items['entity/autocomplete'] = array(
+    'title' => 'Autocomplete entities',
+    'page callback' => 'entity_autocomplete',
+    'access arguments' => array('access content'),
+    'type' => MENU_CALLBACK,
+  );
+  return $items;
+}
+
+/**
+ * Page callback: Outputs JSON for entity autocomplete suggestions.
+ */
+function entity_autocomplete($entity_type, $title_typed) {
+  $matches = array();
+
+  if ($title_typed != '') {
+    // Get information about the given entity type.
+    $entity_info = entity_get_info($entity_type);
+    if (isset($entity_info['entity keys']['label'])) {
+      // Query the label of this entity.
+      $query = new EntityFieldQuery();
+      $result = $query
+        ->entityCondition('entity_type', $entity_type)
+        ->entityCondition($entity_info['entity keys']['label'], '%' . db_like($title_typed) . '%', 'LIKE')
+        ->range(0, 10)
+        ->execute();
+      if (isset($result[$entity_type])) {
+        // The query found some entities matching the given title.
+        $entities = entity_load_multiple($entity_type, array_keys($result[$entity_type]));
+        foreach ($entities as $entity) {
+          $entity_uri = entity_uri($entity_type, $entity);
+          $matches[$entity_uri['path']] = check_plain($entity->{$entity_info['entity keys']['label']});
+        }
+      }
+    }
+  }
+
+  drupal_json_output($matches);
+}
+
+/**
  * Implements hook_modules_preenable().
  */
 function entity_modules_preenable() {
diff --git a/core/modules/entity/tests/entity.test b/core/modules/entity/tests/entity.test
index 1047279..2b2bd86 100644
--- a/core/modules/entity/tests/entity.test
+++ b/core/modules/entity/tests/entity.test
@@ -246,3 +246,46 @@ class EntityAPIInfoTestCase extends WebTestBase  {
     $this->assertEqual($info['controller class'], 'Drupal\entity\EntityController', 'Entity controller class info is correct.');
   }
 }
+
+/**
+ * Tests Entity autocompletion.
+ */
+class EntityAutocompleteTestCase extends WebTestBase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Entity autocomplete',
+      'description' => 'Tests basic autocomplete functionality.',
+      'group' => 'Entity API',
+    );
+  }
+
+  function setUp() {
+    $modules = func_get_args();
+    if (isset($modules[0]) && is_array($modules[0])) {
+      $modules = $modules[0];
+    }
+    $modules[] = 'node';
+    // Ensure node module is loaded and configured.
+    parent::setUp($modules);
+
+    // Create Article node type.
+    if ($this->profile != 'standard') {
+      $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article'));
+    }
+  }
+
+  /**
+   * Tests autocompletion for entity type "node".
+   */
+  function testEntityAutocompleteNode() {
+    $user1 = $this->drupalCreateUser(array('edit own article content', 'create article content'));
+    $this->drupalLogin($user1);
+
+    $this->drupalCreateNode(array('title' => 'invisibleink and Ron Williams'));
+    $expected = '{"node\/1":"invisibleink and Ron Williams"}';
+    $result = $this->drupalGet('entity/autocomplete/node/invis');
+    $this->assertIdentical($result, $expected, t('The autocomplete path returned the proper JSON object when acessing autocomplete URL'));
+  }
+
+}
diff --git a/core/modules/menu/menu.admin.inc b/core/modules/menu/menu.admin.inc
index 2e1725d..6bee9ce 100644
--- a/core/modules/menu/menu.admin.inc
+++ b/core/modules/menu/menu.admin.inc
@@ -298,7 +298,8 @@ function menu_edit_item($form, &$form_state, $type, $item, $menu) {
       '#title' => t('Path'),
       '#maxlength' => 255,
       '#default_value' => $path,
-      '#description' => t('The path for this menu link. This can be an internal Drupal path such as %add-node or an external URL such as %drupal. Enter %front to link to the front page.', array('%front' => '<front>', '%add-node' => 'node/add', '%drupal' => 'http://drupal.org')),
+      '#description' => t('The path for this menu link. This can be an internal Drupal path such as %add-node or an external URL such as %drupal. Enter %front to link to the front page. You may enter the title of the node you would like to link to to get a list of possible matches.', array('%front' => '<front>', '%add-node' => 'node/add', '%drupal' => 'http://drupal.org')),
+      '#autocomplete_path' => 'entity/autocomplete/node',
       '#required' => TRUE,
     );
     $form['actions']['delete'] = array(
