diff --git src/bp-groups/bp-groups-admin.php src/bp-groups/bp-groups-admin.php
index 7fb81d3..46fac3d 100644
--- src/bp-groups/bp-groups-admin.php
+++ src/bp-groups/bp-groups-admin.php
@@ -1224,3 +1224,99 @@ function bp_groups_admin_autocomplete_handler() {
 	wp_die( json_encode( $matches ) );
 }
 add_action( 'wp_ajax_bp_group_admin_member_autocomplete', 'bp_groups_admin_autocomplete_handler' );
+
+/**
+ * Process input from the Group Type bulk change select.
+ *
+ * @since 2.7.0
+ *
+ * @param string $doaction Current $_GET action being performed in admin screen.
+ */
+function bp_groups_admin_process_group_type_bulk_changes( $doaction ) {
+	// Bail if no groups are specified or if this isn't a relevant action.
+	if ( empty( $_REQUEST['gid'] )
+		|| ( empty( $_REQUEST['bp_change_type'] ) && empty( $_REQUEST['bp_change_type2'] ) )
+		|| empty( $_REQUEST['bp_change_group_type'] )
+	) {
+		return;
+	}
+
+	// Bail if nonce check fails.
+	check_admin_referer( 'bp-bulk-groups-change-type-' . bp_loggedin_user_id(), 'bp-bulk-groups-change-type-nonce' );
+
+	if ( ! current_user_can( 'bp_moderate' )  ) {
+		return;
+	}
+
+	$new_type = '';
+	if ( ! empty( $_REQUEST['bp_change_type2'] ) ) {
+		$new_type = sanitize_text_field( $_REQUEST['bp_change_type2'] );
+	} elseif ( ! empty( $_REQUEST['bp_change_type'] ) ) {
+		$new_type = sanitize_text_field( $_REQUEST['bp_change_type'] );
+	}
+
+	// Check that the selected type actually exists.
+	if ( 'remove_group_type' != $new_type && null == bp_groups_get_group_type_object( $new_type ) ) {
+		return;
+	}
+
+	// Run through group ids.
+	$error = false;
+	foreach ( (array) $_REQUEST['gid'] as $group_id ) {
+		$group_id = (int) $group_id;
+
+		// Get the old group type to check against.
+		$group_type = bp_groups_get_group_type( $group_id );
+
+		if ( 'remove_group_type' == $new_type ) {
+			// Remove the current group type, if there's one to remove.
+			if ( $group_type ) {
+				$removed = bp_groups_remove_group_type( $group_id, $group_type );
+				if ( false == $removed || is_wp_error( $removed ) ) {
+					$error = true;
+				}
+			}
+		} else {
+			// Set the new group type.
+			if ( $new_type !== $group_type ) {
+				$set = bp_groups_set_group_type( $group_id, $new_type );
+				if ( false == $set || is_wp_error( $set ) ) {
+					$error = true;
+				}
+			}
+		}
+	}
+
+	// If there were any errors, show the error message.
+	if ( $error ) {
+		$redirect = add_query_arg( array( 'updated' => 'group-type-change-error' ), wp_get_referer() );
+	} else {
+		$redirect = add_query_arg( array( 'updated' => 'group-type-change-success' ), wp_get_referer() );
+	}
+
+	wp_redirect( $redirect );
+	exit();
+}
+add_action( 'bp_groups_admin_load', 'bp_groups_admin_process_group_type_bulk_changes' );
+
+/**
+ * Display an admin notice upon group type bulk update.
+ *
+ * @since 2.7.0
+ */
+function bp_groups_admin_groups_type_change_notice() {
+	$updated = isset( $_REQUEST['updated'] ) ? $_REQUEST['updated'] : false;
+
+	// Display feedback.
+	if ( $updated && in_array( $updated, array( 'group-type-change-error', 'group-type-change-success' ) ) ) {
+
+		if ( 'group-type-change-error' === $updated ) {
+			$notice = __( 'There was an error while changing group type. Please try again.', 'buddypress' );
+		} else {
+			$notice = __( 'Group type was changed successfully.', 'buddypress' );
+		}
+
+		bp_core_add_admin_notice( $notice );
+	}
+}
+add_action( bp_core_admin_hook(), 'bp_groups_admin_groups_type_change_notice' );
diff --git src/bp-groups/classes/class-bp-groups-list-table.php src/bp-groups/classes/class-bp-groups-list-table.php
index 7e05c85..41d6144 100644
--- src/bp-groups/classes/class-bp-groups-list-table.php
+++ src/bp-groups/classes/class-bp-groups-list-table.php
@@ -39,7 +39,7 @@ class BP_Groups_List_Table extends WP_List_Table {
 	public $group_counts = 0;
 
 	/**
-	 * Multidimensional array of group visibility types and their groups.
+	 * Multidimensional array of group visibility (status) types and their groups.
 	 *
 	 * @link https://buddypress.trac.wordpress.org/ticket/6277
 	 * @var array
@@ -59,6 +59,15 @@ class BP_Groups_List_Table extends WP_List_Table {
 			'plural'   => 'groups',
 			'singular' => 'group',
 		) );
+
+		// Add Group Type column and bulk change controls.
+		if ( bp_groups_get_group_types() ) {
+			// Add Group Type column.
+			add_filter( 'bp_groups_list_table_get_columns',        array( $this, 'add_type_column' )                  );
+			add_filter( 'bp_groups_admin_get_group_custom_column', array( $this, 'column_content_group_type' ), 10, 3 );
+			// Add the bulk change select.
+			add_action( 'bp_groups_list_table_after_bulk_actions', array( $this, 'add_group_type_bulk_change_select' ) );
+		}
 	}
 
 	/**
@@ -122,7 +131,7 @@ class BP_Groups_List_Table extends WP_List_Table {
 			$this->view = $_GET['group_status'];
 		}
 
-		// We'll use the ids of group types for the 'include' param.
+		// We'll use the ids of group status types for the 'include' param.
 		$this->group_type_ids = BP_Groups_Group::get_group_type_ids();
 
 		// Pass a dummy array if there are no groups of this type.
@@ -137,6 +146,12 @@ class BP_Groups_List_Table extends WP_List_Table {
 			$this->group_counts[ $group_type ] = count( $group_ids );
 		}
 
+		// Group types
+		$group_type = false;
+		if ( isset( $_GET['bp-group-type'] ) && null != bp_groups_get_group_type_object( $_GET['bp-group-type'] ) ) {
+			$group_type = $_GET['bp-group-type'];
+		}
+
 		// If we're viewing a specific group, flatten all activities into a single array.
 		if ( $include_id ) {
 			$groups = array( (array) groups_get_group( $include_id ) );
@@ -149,6 +164,10 @@ class BP_Groups_List_Table extends WP_List_Table {
 				'order'    => $order
 			);
 
+			if ( $group_type ) {
+				$groups_args['group_type'] = $group_type;
+			}
+
 			$groups = array();
 			if ( bp_has_groups( $groups_args ) ) {
 				while ( bp_groups() ) {
@@ -244,6 +263,25 @@ class BP_Groups_List_Table extends WP_List_Table {
 	}
 
 	/**
+	 * Extra controls to be displayed between bulk actions and pagination
+	 *
+	 * @since 2.7.0
+	 * @access protected
+	 *
+	 * @param string $which
+	 */
+	protected function extra_tablenav( $which ) {
+		/**
+		 * Fires just after the bulk action controls in the WP Admin groups list table.
+		 *
+		 * @since 2.7.0
+		 *
+		 * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
+		 */
+		do_action( 'bp_groups_list_table_after_bulk_actions', $which );
+	}
+
+	/**
 	 * Generate content for a single row of the table.
 	 *
 	 * @since 1.7.0
@@ -645,4 +683,95 @@ class BP_Groups_List_Table extends WP_List_Table {
 		 */
 		return apply_filters( 'bp_groups_admin_get_group_custom_column', '', $column_name, $item );
 	}
+
+	// Group Types
+
+	/**
+	 * Add group type column to the WordPress admin groups list table.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param array $columns Groups table columns.
+	 *
+	 * @return array $columns
+	 */
+	public function add_type_column( $columns = array() ) {
+		$columns[ 'bp_group_type' ] = _x( 'Group Type', 'Label for the WP groups table group type column', 'buddypress' );
+
+		return $columns;
+	}
+
+	/**
+	 * Markup for the Group Type column.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param string $value       Empty string.
+	 * @param string $column_name Name of the column being rendered.
+	 * @param array  $item        The current group item in the loop.
+	 */
+	public function column_content_group_type( $retval, $column_name, $item ) {
+		if ( 'bp_group_type' != $column_name ) {
+			return $retval;
+		}
+
+		// Get the group type.
+		$type = bp_groups_get_group_type( $item['id'] );
+
+		// Output the
+		if ( $type_obj = bp_groups_get_group_type_object( $type ) ) {
+			$url         = add_query_arg( array( 'bp-group-type' => urlencode( $type ) ) );
+			$type_string = '<a href="' . esc_url( $url ) . '">' . $type_obj->labels['singular_name'] . '</a>';
+		}
+
+		/**
+		 * Filters the markup for the Group Type column.
+		 *
+		 * @since 2.7.0
+		 *
+		 * @param string $type_string Markup for the Group Type column.
+		 * @parma array  $item        The current group item in the loop.
+		 */
+		echo apply_filters_ref_array( 'bp_groups_admin_get_group_type_column', array( $type_string, $item ) );
+	}
+
+	/**
+	 * Markup for the Group Type bulk change select.
+	 *
+	 * @since 2.7.0
+	 *
+	 * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
+	 */
+	public function add_group_type_bulk_change_select( $which ) {
+		// `$which` is only passed in WordPress 4.6+. Avoid duplicating controls in earlier versions.
+		static $displayed = false;
+		if ( version_compare( bp_get_major_wp_version(), '4.6', '<' ) && $displayed ) {
+			return;
+		}
+		$displayed = true;
+		$id_name = 'bottom' === $which ? 'bp_change_type2' : 'bp_change_type';
+
+		$types = bp_groups_get_group_types( array(), 'objects' );
+		?>
+		<div class="alignleft actions">
+			<label class="screen-reader-text" for="<?php echo $id_name; ?>"><?php _e( 'Change group type to&hellip;', 'buddypress' ) ?></label>
+			<select name="<?php echo $id_name; ?>" id="<?php echo $id_name; ?>" style="display:inline-block;float:none;">
+				<option value=""><?php _e( 'Change group type to&hellip;', 'buddypress' ) ?></option>
+
+				<?php foreach( $types as $type ) : ?>
+
+					<option value="<?php echo esc_attr( $type->name ); ?>"><?php echo $type->labels['name']; ?></option>
+
+				<?php endforeach; ?>
+
+				<option value="remove_group_type"><?php _e( 'No Group Type', 'buddypress' ) ?></option>
+
+			</select>
+			<?php
+			wp_nonce_field( 'bp-bulk-groups-change-type-' . bp_loggedin_user_id(), 'bp-bulk-groups-change-type-nonce' );
+			submit_button( __( 'Change', 'buddypress' ), 'button', 'bp_change_group_type', false );
+		?>
+		</div>
+		<?php
+	}
 }
