diff --git a/modules/og_views/includes/og_views_handler_field_og_leave_group.inc b/modules/og_views/includes/og_views_handler_field_og_leave_group.inc
new file mode 100644
index 0000000..22b1a87
--- /dev/null
+++ b/modules/og_views/includes/og_views_handler_field_og_leave_group.inc
@@ -0,0 +1,43 @@
+<?php
+class og_views_handler_field_og_leave_group extends og_views_handler_field_og_uid {
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['text'] = array('default' => 'Leave group', 'translatable' => TRUE);
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $form['text'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Text to display'),
+      '#default_value' => $this->options['text'],
+    );
+  }
+
+  function construct() {
+    parent::construct();
+    $this->additional_fields['nid'] = array('table' => 'og_uid', 'field' => 'nid');
+    $this->additional_fields['uid'] = array('table' => 'node', 'field' => 'uid');
+  }
+
+  function render($values) {
+    if (isset($values->{$this->field_alias})) {
+      $nid = $values->{$this->aliases['nid']};
+      $uid = $values->{$this->aliases['uid']};
+      global $user;
+      // Make sure the user is a member
+      if (in_array($nid, array_keys($user->og_groups))) {
+        $text = !empty($this->options['text']) ? $this->options['text'] : t('Leave group');
+        // If the user is the group owner, they can't leave, so send them
+        // to the manage page so the message displays
+        if ($user->uid == $uid) {
+          return l($text, "og/manage/{$nid}", array('query' => drupal_get_destination()));
+        }
+        else {
+          return l($text, "og/unsubscribe/{$nid}/{$user->uid}", array('query' => drupal_get_destination()));
+        }
+      }
+    }
+  }
+}
diff --git a/modules/og_views/og_views.views.inc b/modules/og_views/og_views.views.inc
index 38ce477..1512c31 100644
--- a/modules/og_views/og_views.views.inc
+++ b/modules/og_views/og_views.views.inc
@@ -79,6 +79,9 @@ function og_views_views_handlers() {
       'og_views_handler_field_og_managelink' => array(
         'parent' => 'og_views_handler_field_og_uid',
       ),
+      'og_views_handler_field_og_leave_group' => array(
+        'parent' => 'og_views_handler_field_og_uid',
+      ),
       'og_views_handler_field_og_uid_groups' => array(
         'parent' => 'views_handler_field_prerender_list',
       ),
@@ -448,6 +451,15 @@ function og_views_data_og_uid() {
       'click sortable' => FALSE,
     ),
   );
+  $data['og_uid']['leave_group'] = array(
+    'title' => t('OG: Leave group link'),
+    'help' => t('A link to leave the group.'),
+    'real field' => 'uid',
+    'field' => array(
+      'handler' => 'og_views_handler_field_og_leave_group',
+      'click sortable' => FALSE,
+    ),
+  );
   $data['og_uid']['managelink'] = array(
     'title' => t('OG: Approve/Deny/Remove membership link'),
     'help' => t('A link to approve/deny/remove a group member.'),
