diff --git a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
index 37df049..d33282d 100644
--- a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
+++ b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php
@@ -147,6 +147,13 @@ public function viewElements(FieldItemListInterface $items) {
         $element[$delta] = array(
           '#markup' => String::checkPlain($link_title),
         );
+
+        if (!empty($item->_attributes)) {
+          // Piggyback on the metadata attributes,
+          // which will be placed in the field template wrapper,
+          // and set the URL value in a content attribute.
+          $item->_attributes += array('content' => $item->url);
+        }
       }
       else {
         $element[$delta] = array(
@@ -161,6 +168,14 @@ public function viewElements(FieldItemListInterface $items) {
           $element[$delta]['#route_name'] = $url->getRouteName();
           $element[$delta]['#route_parameters'] = $url->getRouteParameters();
         }
+
+        if (!empty($item->_attributes)) {
+          $element[$delta]['#options'] += array ('attributes' => array());
+          $element[$delta]['#options']['attributes'] += $item->_attributes;
+          // Unset field item attributes since they have been included in the
+          // formatter output and should not be rendered in the field template.
+          unset($item->_attributes);
+        }
       }
     }
 
diff --git a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
index 7a427e5..40daa44 100644
--- a/core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
+++ b/core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php
@@ -77,6 +77,15 @@ public function viewElements(FieldItemListInterface $items) {
         '#url_title' => $url_title,
         '#url' => $url,
       );
+
+      if (!empty($item->_attributes)) {
+        // Set our RDFa attributes on the <a> element that is being built.
+        $url->setOption('attributes', $item->_attributes);
+
+        // Unset field item attributes since they have been included in the
+        // formatter output and should not be rendered in the field template.
+        unset($item->_attributes);
+      }
     }
     return $element;
   }
