diff --git a/ds.module b/ds.module
index 3d3c434..a9da08c 100644
--- a/ds.module
+++ b/ds.module
@@ -714,6 +714,8 @@ function ds_entity_variables(&$vars) {
       if (empty($layout['flexible'])) {
         $vars[$region_name . '_wrapper'] = isset($layout['settings']['wrappers'][$region_name]) ? $layout['settings']['wrappers'][$region_name] : 'div';
       }
+      // Custom title on regions
+      $vars[$region_name . '_title'] = !empty($layout['settings']['titles'][$region_name]) ? $layout['settings']['titles'][$region_name] : $layout['regions'][$region_name];
     }
 
     // Let other modules know we have rendered.
diff --git a/includes/ds.field_ui.inc b/includes/ds.field_ui.inc
index 153fb14..865a541 100644
--- a/includes/ds.field_ui.inc
+++ b/includes/ds.field_ui.inc
@@ -319,7 +319,7 @@ function ds_field_ui_regions($form, $form_state) {
     foreach ($layout->regions as $region_key => $region_title) {
       $region_options[$region_key] = $region_title;
       $table['#regions'][$region_key] = array(
-        'title' => $region_title,
+        'title' => $layout->settings['titles'][$region_key] ? $layout->settings['titles'][$region_key] : $region_title,
         'message' => t('No fields are displayed in this region'),
       );
     }
@@ -759,6 +759,11 @@ function ds_field_ui_layouts_save($form, &$form_state) {
       if (isset($form_state['values']['additional_settings']['region_wrapper'][$region])) {
         $record->settings['wrappers'][$region] = $form_state['values']['additional_settings']['region_wrapper'][$region];
       }
+
+      // Custom title on regions
+      if (isset($form_state['values']['additional_settings']['region_titles'][$region])) {
+        $record->settings['titles'][$region] = $form_state['values']['additional_settings']['region_titles'][$region];
+      }
     }
 
     // Layout wrapper
@@ -1727,6 +1732,22 @@ function _ds_field_ui_table_layouts($entity_type, $bundle, $view_mode, &$form, $
     }
 
 
+    // Add title fields
+    $form['additional_settings']['region_titles'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Custom titles'),
+      '#description' => t('Enter a custom title for your section.')
+    );
+
+    foreach (array_keys($layout->regions) as $region) {
+      $form['additional_settings']['region_titles'][$region] = array(
+        '#type' => 'textfield',
+        '#title' => t('Title for region "@region"', array('@region' => $layout->regions[$region])),
+        '#default_value' => isset($layout->settings['titles'], $layout->settings['titles'][$region]) ? $layout->settings['titles'][$region] : $layout->regions[$region],
+      );
+    }
+
+
 
     // Add extra classes for the regions to have more control while theming.
     $form['additional_settings']['ds_classes'] = array(
diff --git a/modules/ds_forms/ds_forms.module b/modules/ds_forms/ds_forms.module
index ba8003b..38909ca 100644
--- a/modules/ds_forms/ds_forms.module
+++ b/modules/ds_forms/ds_forms.module
@@ -171,6 +171,9 @@ function ds_forms_preprocess_ds_forms_custom_form(&$vars) {
       if (empty($layout['flexible'])) {
         $vars[$region_name . '_wrapper'] = isset($layout['settings']['wrappers'][$region_name]) ? $layout['settings']['wrappers'][$region_name] : 'div';
       }
+
+      // Add the title for the region
+      $vars[$region_name . '_title'] = !empty($layout['settings']['titles'][$region_name]) ? $layout['settings']['titles'][$region_name] : $layout['regions'][$region_name];
     }
 
     // Add layout attributes if any
