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'];
     }
   }
 
