diff --git a/rhodecode/apps/my_account/__init__.py b/rhodecode/apps/my_account/__init__.py
--- a/rhodecode/apps/my_account/__init__.py
+++ b/rhodecode/apps/my_account/__init__.py
@@ -70,6 +70,11 @@ def includeme(config):
         name='my_account_ssh_keys_delete',
         pattern=ADMIN_PREFIX + '/my_account/ssh_keys/delete')
 
+    # my account user group membership
+    config.add_route(
+        name='my_account_user_group_membership',
+        pattern=ADMIN_PREFIX + '/my_account/user_group_membership')
+
     # my account emails
     config.add_route(
         name='my_account_emails',
diff --git a/rhodecode/apps/my_account/views/my_account.py b/rhodecode/apps/my_account/views/my_account.py
--- a/rhodecode/apps/my_account/views/my_account.py
+++ b/rhodecode/apps/my_account/views/my_account.py
@@ -48,6 +48,7 @@ from rhodecode.model.pull_request import
 from rhodecode.model.scm import RepoList
 from rhodecode.model.user import UserModel
 from rhodecode.model.repo import RepoModel
+from rhodecode.model.user_group import UserGroupModel
 from rhodecode.model.validation_schema.schemas import user_schema
 
 log = logging.getLogger(__name__)
@@ -583,3 +584,16 @@ class MyAccountView(BaseAppView, DataGri
         data = self._get_pull_requests_list(statuses=statuses)
         return data
 
+    @LoginRequired()
+    @NotAnonymous()
+    @view_config(
+        route_name='my_account_user_group_membership',
+        request_method='GET',
+        renderer='rhodecode:templates/admin/my_account/my_account.mako')
+    def my_account_user_group_membership(self):
+        c = self.load_default_context()
+        c.active = 'user_group_membership'
+        groups = [UserGroupModel.get_user_groups_as_dict(group.users_group)
+                  for group in self._rhodecode_db_user.group_member]
+        c.user_groups = json.dumps(groups)
+        return self._get_template_context(c)
diff --git a/rhodecode/templates/admin/my_account/my_account.mako b/rhodecode/templates/admin/my_account/my_account.mako
--- a/rhodecode/templates/admin/my_account/my_account.mako
+++ b/rhodecode/templates/admin/my_account/my_account.mako
@@ -30,6 +30,8 @@
           <li class="${'active' if c.active=='password' else ''}"><a href="${h.route_path('my_account_password')}">${_('Password')}</a></li>
           <li class="${'active' if c.active=='auth_tokens' else ''}"><a href="${h.route_path('my_account_auth_tokens')}">${_('Auth Tokens')}</a></li>
           <li class="${'active' if c.active in ['ssh_keys', 'ssh_keys_generate'] else ''}"><a href="${h.route_path('my_account_ssh_keys')}">${_('SSH Keys')}</a></li>
+          <li class="${'active' if c.active=='user_group_membership' else ''}"><a href="${h.route_path('my_account_user_group_membership')}">${_('User Group Membership')}</a></li>
+
           ## TODO: Find a better integration of oauth views into navigation.
           <% my_account_oauth_url = h.route_path_or_none('my_account_oauth') %>
           % if my_account_oauth_url:
diff --git a/rhodecode/templates/admin/my_account/my_account_user_group_membership.mako b/rhodecode/templates/admin/my_account/my_account_user_group_membership.mako
new file mode 100644
--- /dev/null
+++ b/rhodecode/templates/admin/my_account/my_account_user_group_membership.mako
@@ -0,0 +1,75 @@
+## -*- coding: utf-8 -*-
+
+<div class="panel panel-default">
+  <div class="panel-heading">
+    <h3 class="panel-title">${_('User Group Membership')}</h3>
+  </div>
+
+    <div class="panel-body">
+        <div class="groups_management">
+            <div id="repos_list_wrap">
+                <table id="user_group_list_table" class="display"></table>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+<script>
+var api;
+$(document).ready(function() {
+
+    var get_datatable_count = function(){
+        $('#user_group_count').text(api.page.info().recordsDisplay);
+    };
+
+    $('#user_group_list_table').on('click', 'a.editor_remove', function (e) {
+        e.preventDefault();
+        var row = api.row($(this).closest('tr'));
+        row.remove().draw();
+    } );
+
+    $('#user_group_list_table').DataTable({
+      data: ${c.user_groups|n},
+      dom: 'rtp',
+      pageLength: ${c.visual.admin_grid_items},
+      order: [[ 0, "asc" ]],
+      columns: [
+         { data: {"_": "group_name",
+                  "sort": "group_name"}, title: "${_('Name')}", className: "td-componentname," ,
+            render: function (data,type,full,meta)
+                    {return '<div><i class="icon-group" title="User group">'+data+'</i></div>'}},
+
+         { data: {"_": "group_description",
+                  "sort": "group_description"}, title: "${_('Description')}", className: "td-description" },
+         { data: {"_": "users_group_id"}, className: "td-user",
+                 render: function (data,type,full,meta)
+                    {return '<input type="hidden" name="users_group_id" value="'+data+'">'}},
+         { data: {"_": "active",
+                  "sort": "active"}, title: "${_('Active')}", className: "td-active"},
+         { data: {"_": "owner_data"}, title: "${_('Owner')}", className: "td-user",
+             render: function (data,type,full,meta)
+                    {return '<div class="rc-user tooltip">'+
+                            '<img class="gravatar" src="'+ data.owner_icon +'" height="16" width="16">'+
+                             data.owner +'</div>'
+                    }
+         }
+      ],
+      language: {
+          paginate: DEFAULT_GRID_PAGINATION,
+          emptyTable: _gettext("No user groups available yet.")
+      },
+      "initComplete": function( settings, json ) {
+          var data_grid = $('#user_group_list_table').dataTable();
+          api = data_grid.api();
+          get_datatable_count();
+      }
+    });
+
+    // update the counter when doing search
+    $('#user_group_list_table').on( 'search.dt', function (e,settings) {
+        get_datatable_count();
+    });
+
+  });
+</script>
\ No newline at end of file