diff --git a/link.module b/link.module
index 16a5fad..a7c87c6 100644
--- a/link.module
+++ b/link.module
@@ -102,9 +102,9 @@ function link_field_instance_settings_form($field, $instance) {
 
   $form['title_value'] = array(
     '#type' => 'textfield',
-    '#title' => t('Static title'),
+    '#title' => t('Static or default title'),
     '#default_value' => isset($instance['settings']['title_value']) ? $instance['settings']['title_value'] : '',
-    '#description' => t('This title will always be used if &ldquo;Static Title&rdquo; is selected above.'),
+    '#description' => t('This title will always be used if "Static Title" is selected above or like a default title if "Optional title" is selected above.'),
   );
 
   $form['title_maxlength'] = array( // patch #1307788 from nmc
@@ -451,15 +451,17 @@ function _link_sanitize(&$item, $delta, &$field, $instance, &$node) {
     $display_url = substr($display_url, 0, $instance['settings']['display']['url_cutoff']) ."...";
   }
   $item['display_url'] = $display_url;
-
   // Use the title defined at the instance level.
   if ($instance['settings']['title'] == 'value' && strlen(trim($instance['settings']['title_value']))) {
     $title = $instance['settings']['title_value'];
   }
   // Use the title defined by the user at the widget level.
-  else if (isset($item['title'])) {
+  elseif (drupal_strlen(trim($item['title']))) {
     $title = $item['title'];
   }
+  elseif ($instance['settings']['title'] == 'optional' && drupal_strlen(trim($instance['settings']['title_value']))) {
+    $title = $instance['settings']['title_value'];
+  }
   else {
     $title = '';
   }
