diff --git a/modules/ds_extras/ds_extras.admin.inc b/modules/ds_extras/ds_extras.admin.inc
index 2e6e739..b21c263 100644
--- a/modules/ds_extras/ds_extras.admin.inc
+++ b/modules/ds_extras/ds_extras.admin.inc
@@ -133,6 +133,13 @@ function ds_extras_settings($form) {
     '#default_value' => variable_get('ds_extras_hide_page_title', FALSE),
   );
 
+  $form['additional_settings']['fs4']['ds_extras_flag'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Flag'),
+    '#description' => t('Expose flags as fields on nodes.'),
+    '#default_value' => variable_get('ds_extras_flag', FALSE),
+  );
+
   if (module_exists('block')) {
     $form['additional_settings']['fs4']['ds_extras_region_to_block'] = array(
       '#type' => 'checkbox',
diff --git a/modules/ds_extras/ds_extras.ds_fields_info.inc b/modules/ds_extras/ds_extras.ds_fields_info.inc
index 1642c81..1f900bb 100644
--- a/modules/ds_extras/ds_extras.ds_fields_info.inc
+++ b/modules/ds_extras/ds_extras.ds_fields_info.inc
@@ -21,6 +21,27 @@ function ds_extras_ds_fields_info($entity_type) {
     );
   }
 
+  // Flag support.
+  if (variable_get('ds_extras_flag') && module_exists('flag')) {
+    if ($entity_type == 'node') {
+      foreach (node_type_get_types() as $type) {
+        $flags = flag_get_flags('node', $type->type);
+
+        foreach ($flags as $name => $flag) {
+          $fields['node']['ds_flag_' . $name] = array(
+            'title' => t('Flag: ' . $flag->get_label('title')),
+            'field_type' => DS_FIELD_TYPE_FUNCTION,
+            'function' => 'ds_extras_flags_add_flag_link',
+            'properties' => array(
+              'flag' => $name,
+            ),
+            'ui_limit' => array($type->type . '|*'),
+          );
+        }
+      }
+    }
+  }
+
   // DS Views.
   if ($entity_type == 'ds_views') {
     $fields[$entity_type] = array(
diff --git a/modules/ds_extras/ds_extras.install b/modules/ds_extras/ds_extras.install
index 74c8494..47188b7 100644
--- a/modules/ds_extras/ds_extras.install
+++ b/modules/ds_extras/ds_extras.install
@@ -121,6 +121,7 @@ function ds_extras_uninstall() {
   variable_del('ft-default');
   variable_del('ft-kill-colon');
   variable_del('ds_extras_contextual');
+  variable_del('ds_extras_flag');
   db_drop_field('node_revision', 'ds_switch');
 }
 
diff --git a/modules/ds_extras/ds_extras.module b/modules/ds_extras/ds_extras.module
index 8f2f00c..b5e5222 100644
--- a/modules/ds_extras/ds_extras.module
+++ b/modules/ds_extras/ds_extras.module
@@ -449,6 +449,13 @@ function ds_extras_field_extra_fields() {
 }
 
 /**
+ * Output flag.
+ */
+function ds_extras_flags_add_flag_link($field) {
+  return flag_create_link($field['properties']['flag'], $field['entity']->nid);
+}
+
+/**
  * Implements hook_preprocess_views_view().
  */
 function ds_extras_preprocess_view_layout(&$variables) {
