diff --git a/tablefield.install b/tablefield.install
index 4eb3186..53249e3 100644
--- a/tablefield.install
+++ b/tablefield.install
@@ -401,3 +401,68 @@ function tablefield_update_7006() {
   field_cache_clear();
   drupal_set_message(t('All Table Field fields have their field settings converted to widget settings.'), 'warning');
 }
+
+/**
+ * Re-save the default existing table fields for update caption value.
+ */
+function tablefield_update_7007() {
+   // Change the default field for each content type.
+  $field_names = array();
+
+  // Change all existing fields to store the data with the new format.
+  foreach ($field_names as $field_name) {
+    $tables = array('field_data_' . $field_name, 'field_revision_' . $field_name);
+    foreach ($tables as $table) {
+      $field = $field_name . '_value';
+      $query = db_select($table, 'n')
+        ->fields('n')
+        ->execute()
+        ->fetchAll();
+      foreach ($query as $record) {
+        $instance = unserialize($record->$field);
+
+        // Rationalize the table data.
+        if (!empty($instance)) {
+          // Remove extraneous data.
+          $count_cols = $instance['rebuild']['count_cols'];
+          $count_rows = $instance['rebuild']['count_rows'];
+          $caption = $instance['caption'];
+          $rebuild = $instance['rebuild'];
+          $import = $instance['import'];
+          $paste = $instance['paste'];
+          unset($instance['caption']);
+          unset($instance['rebuild']);
+          unset($instance['import']);
+          unset($instance['paste']);
+        }
+
+        // Changing Caption format values for old data.
+        if (!is_array($caption)) {
+          $captionArray['value'] = $caption;
+          $captionArray['format'] = 'plain_text';
+          $caption = $captionArray;
+        }
+        // Recreate previous removed data.
+        $instance['caption'] = $caption;
+        $instance['rebuild'] = $rebuild;
+        $instance['import'] = $import;
+        $instance['paste'] = $paste;
+
+        // Change the stored data by a per record unique column key combination.
+        db_update($table)
+          ->fields(array(
+            $field => serialize($instance),
+          ))
+          ->condition('entity_id', $record->entity_id)
+          ->condition('revision_id', $record->revision_id)
+          ->condition('delta', $record->delta)
+          ->condition('entity_type', $record->entity_type)
+          ->condition('bundle', $record->bundle)
+          ->execute();
+      }
+    }
+  }
+
+  field_cache_clear();
+  drupal_set_message(t('All Table Field captions are now stored with a new data format.'), 'warning');
+}
\ No newline at end of file
diff --git a/tablefield.module b/tablefield.module
index ef59415..2333d7a 100644
--- a/tablefield.module
+++ b/tablefield.module
@@ -1050,7 +1050,7 @@ function tablefield_field_formatter_view($entity_type, $entity, $field, $instanc
         foreach ($items as $delta => $table) {
           // Check for table caption.
           $raw = unserialize($table['value']);
-          $caption = isset($raw['caption']) ? check_plain($raw['caption']) : '';
+          $caption = isset($raw['caption']['value']) ? check_markup($raw['caption']['value'], $raw['caption']['format']) : '';
 
           // Rationalize the stored data.
           if (!empty($table['tablefield'])) {
@@ -1435,7 +1435,7 @@ function tablefield_field_widget_form(&$form, &$form_state, $field, $instance, $
 
   // Provide caption field to describe the data contained in the table.
   $element['tablefield']['caption'] = array(
-    '#type' => 'textfield',
+    '#type' => 'text_format',
     '#title' => t('Table description'),
     '#default_value' => '',
     '#description' => t('This brief caption will be associated with the table and will help Assitive Technology, like screen readers, better describe the content within.'),
@@ -1443,7 +1443,8 @@ function tablefield_field_widget_form(&$form, &$form_state, $field, $instance, $
   if (isset($items[$delta]['value'])) {
     $raw = unserialize($items[$delta]['value']);
     if (isset($raw['caption'])) {
-      $element['tablefield']['caption']['#default_value'] = check_plain($raw['caption']);
+      $element['tablefield']['caption']['#default_value'] = $raw['caption']['value'];
+      $element['tablefield']['caption']['#format'] = $raw['caption']['format'];
     }
   }
 
