diff --git includes/entity.property.inc includes/entity.property.inc
index 06e2693..4b63a7b 100644
--- includes/entity.property.inc
+++ includes/entity.property.inc
@@ -158,6 +158,12 @@ function entity_field_info_alter(&$field_info) {
     $field_info['image']['property_callbacks'][] = 'entity_metadata_field_file_callback';
     $field_info['image']['property_callbacks'][] = 'entity_metadata_field_image_callback';
   }
+  if (module_exists('link')) {
+    // The callback specifies a custom data structure matching the link field
+    // items. We introduce a custom type name for this data structure.
+    $field_info['link_field']['property_type'] = 'field_item_link';
+    $field_info['link_field']['property_callbacks'][] = 'entity_metadata_field_link_callback';
+  }
 }
 
 /**
@@ -467,6 +473,30 @@ function entity_property_field_item_image_info() {
   return $properties;
 }
 
+/**
+ * Defines info for the properties of the link-field item data structure.
+ */
+function entity_property_field_item_link_info() {
+  $properties['url'] = array(
+    'type' => 'text',
+    'label' => t('The <em>Url</em> of the link'),
+    'setter callback' => 'entity_property_verbatim_set',
+    'getter callback' => 'entity_property_verbatim_get',
+  );
+  $properties['alt'] = array(
+    'type' => 'text',
+    'label' => t('The <em>Alt</em> attribute text'),
+    'setter callback' => 'entity_property_verbatim_set',
+    'getter callback' => 'entity_property_verbatim_get',
+  );
+  $properties['title'] = array(
+    'type' => 'text',
+    'label' => t('The <em>Title</em> attribute text'),
+    'setter callback' => 'entity_property_verbatim_set',
+    'getter callback' => 'entity_property_verbatim_get',
+  );
+  return $properties;
+}
 
 /**
  * Previously, hook_entity_property_info() has been provided by the removed
diff --git modules/field.info.inc modules/field.info.inc
index 047c557..3516d03 100644
--- modules/field.info.inc
+++ modules/field.info.inc
@@ -163,3 +163,17 @@ function entity_metadata_field_image_callback(&$info, $entity_type, $field, $ins
     unset($property['property info']['title']);
   }
 }
+
+/**
+ * Additional callback to adapt the property info for link fields.
+ * @see entity_metadata_field_entity_property_info().
+ */
+function entity_metadata_field_link_callback(&$info, $entity_type, $field, $instance, $field_type) {
+  $property = &$info[$entity_type]['bundles'][$instance['bundle']]['properties'][$field['field_name']];
+
+  $property['getter callback'] = 'entity_metadata_field_verbatim_get';
+  $property['setter callback'] = 'entity_metadata_field_verbatim_set';
+
+  $property['property info'] = entity_property_field_item_link_info();
+
+}
