diff --git a/core/modules/entity/entity.module b/core/modules/entity/entity.module
index 2f4714f..b9181fa 100644
--- a/core/modules/entity/entity.module
+++ b/core/modules/entity/entity.module
@@ -401,6 +401,56 @@ function entity_uri($entity_type, $entity) {
 }
 
 /**
+ * Returns the URL of an entity.
+ *
+ * @param Drupal\entity\EntityInterface $entity
+ *   The entity for which to generate a path.
+ * @param array $options
+ *   An associative array of additional options to pass to the url() function.
+ *
+ * @return string|NULL
+ *   The URL of the entity, or NULL if this value is unavailable.
+ *
+ * @see Drupal\entity\EntityInterface::uri()
+ */
+function entity_url(EntityInterface $entity, array $options = array()) {
+  $uri = $entity->uri();
+
+  if (isset($uri)) {
+    $options += $uri['options'];
+    return url($uri['path'], $options);
+  }
+}
+
+/**
+ * Format the URL of an entity as a HTML anchor tag.
+ *
+ * @param Drupal\entity\EntityInterface $entity
+ *   The entity for which to generate a path.
+ * @param $text
+ *   The link text for the anchor tag. Default to entity label.
+ * @param array $options
+ *   An associative array of additional options to pass to the l() function.
+ *
+ * @return string|NULL
+ *   The HTML markup for a link to the entity, or NULL if the value is
+ *   unavailable.
+ *
+ * @see Drupal\entity\EntityInterface::uri()
+ */
+function entity_l(EntityInterface $entity, $text = NULL, array $options = array()) {
+  $uri = $entity->uri();
+
+  if (isset($uri)) {
+    $options += $uri['options'];
+    if (!isset($text)) {
+      $text = $entity->label();
+    }
+    return l($text, $uri['path'], $options);
+  }
+}
+
+/**
  * Returns the label of an entity.
  *
  * This is a wrapper for Drupal\entity\EntityInterface::label(). This function
diff --git a/core/modules/entity/lib/Drupal/entity/EntityInterface.php b/core/modules/entity/lib/Drupal/entity/EntityInterface.php
index 7aedb48..9c09539 100644
--- a/core/modules/entity/lib/Drupal/entity/EntityInterface.php
+++ b/core/modules/entity/lib/Drupal/entity/EntityInterface.php
@@ -96,6 +96,9 @@ interface EntityInterface {
    *   An array containing the 'path' and 'options' keys used to build the URI
    *   of the entity, and matching the signature of url(). NULL if the entity
    *   has no URI of its own.
+   *
+   * @see entity_url()
+   * @see entity_l()
    */
   public function uri();
 
diff --git a/core/modules/entity/lib/Drupal/entity/Tests/EntityApiTest.php b/core/modules/entity/lib/Drupal/entity/Tests/EntityApiTest.php
index 6a335c5..c0e1652 100644
--- a/core/modules/entity/lib/Drupal/entity/Tests/EntityApiTest.php
+++ b/core/modules/entity/lib/Drupal/entity/Tests/EntityApiTest.php
@@ -94,4 +94,18 @@ class EntityApiTest extends WebTestBase {
     $value = $entity->get('uid', 'en');
     $this->assertNull($value, 'Language neutral property has been retrieved.');
   }
+
+  /**
+   * Tests Entity uri functions.
+   */
+  function testEntityLabelUrlHelpers() {
+    $user1 = $this->drupalCreateUser();
+
+    // Make sure that the entity_url() returns the expected path.
+    $uri = $user1->uri();
+    $this->assertEqual(url($uri['path'], $uri['options']), entity_url($user1), 'Expected entity URL returned.');
+
+    $label = $user1->label();
+    $this->assertEqual(l($label, $uri['path'], $uri['options']), entity_l($user1), 'Expected entity link returned.');
+  }
 }
