diff --git src/bp-activity/bp-activity-cache.php src/bp-activity/bp-activity-cache.php
index 36d8805..bf4040e 100644
--- src/bp-activity/bp-activity-cache.php
+++ src/bp-activity/bp-activity-cache.php
@@ -43,6 +43,7 @@ function bp_activity_update_meta_cache( $activity_ids = false ) {
  */
 function bp_activity_clear_cache_for_activity( $activity ) {
 	wp_cache_delete( $activity->id, 'bp_activity' );
+	wp_cache_delete( $activity->user_id, 'bp_activity_user_stats' );
 }
 add_action( 'bp_activity_after_save', 'bp_activity_clear_cache_for_activity' );
 
diff --git src/bp-activity/bp-activity-classes.php src/bp-activity/bp-activity-classes.php
index 90aa677..2fcdc5a 100644
--- src/bp-activity/bp-activity-classes.php
+++ src/bp-activity/bp-activity-classes.php
@@ -1498,6 +1498,44 @@ class BP_Activity_Activity {
 
 		return $wpdb->get_var( $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET hide_sitewide = 1 WHERE user_id = %d", $user_id ) );
 	}
+
+	/**
+	 * Get activities count detailled by types
+	 *
+	 * @param int $user_id The ID of the user.
+	 * @return array the stats
+	 */
+	public static function get_count_by_type( $user_id = '' ) {
+		global $wpdb;
+
+		$activity_stats = array();
+		$total_activity = 0;
+
+		if ( empty( $user_id ) ) {
+			return $activity_stats;
+		}
+
+		$stats = wp_cache_get( $user_id, 'bp_activity_user_stats' );
+
+		if ( ! empty( $stats ) ) {
+			return $stats;
+		}
+
+		$activity_table = buddypress()->activity->table_name;
+
+		$activity_stats = $wpdb->get_results( $wpdb->prepare( "SELECT type, COUNT(*) as sub_total FROM {$activity_table} WHERE user_id = %d AND type != 'last_activity' GROUP BY type ORDER BY type ASC", $user_id ), OBJECT_K );
+
+		foreach ( $activity_stats as $activity_type ) {
+			$total_activity += absint( $activity_type->sub_total );
+		}
+
+		$stats = array( 'types' => $activity_stats, 'total' => $total_activity );
+
+		// Set user stats cache
+		wp_cache_set( $user_id, $stats, 'bp_activity_user_stats' );
+
+		return $stats;
+	}
 }
 
 /**
diff --git src/bp-activity/bp-activity-functions.php src/bp-activity/bp-activity-functions.php
index 5689c34..efe80af 100644
--- src/bp-activity/bp-activity-functions.php
+++ src/bp-activity/bp-activity-functions.php
@@ -2234,6 +2234,9 @@ function bp_activity_delete( $args = '' ) {
 		}
 	}
 
+	// Clear user stats cache
+	wp_cache_delete( $user_id, 'bp_activity_user_stats' );
+
 	/**
 	 * Fires after the activity item has been deleted.
 	 *
@@ -2874,3 +2877,57 @@ function bp_activity_do_heartbeat() {
 
 	return $retval;
 }
+
+/**
+ * Builds Activity stats by types
+ *
+ * If no types are set, defaults to total activities
+ *
+ * @since BuddyPress (?)
+ *
+ * @param  integer $user_id
+ * @param  boolean $hide_empty should we display empty types ?
+ * @param  array $types list of available types
+ * @return array activity stats
+ */
+function bp_activity_get_count_by_type( $user_id = 0, $hide_empty = false, $types = array() ) {
+	$activity_stats = BP_Activity_Activity::get_count_by_type( $user_id );
+
+	// no activity returns 0
+	if ( empty( $activity_stats ) ) {
+		return array( 'total' => 0 );
+	}
+
+	// no types retuns total of activities
+	if ( empty( $types ) ) {
+		unset( $activity_stats['types'] );
+		return $activity_stats;
+	}
+
+	$types_stats_ordered = array();
+
+	// fill the array with 0 value for each type
+	if( empty( $hide_empty ) ) {
+		$types_stats_ordered = array_fill_keys( array_keys( $types ), 0 );
+	}
+
+	// fill the type the user added activities in
+	foreach( $types as $key => $type ) {
+		if( ! empty( $activity_stats['types'][ $key ] ) ) {
+			$types_stats_ordered[ $key ] = $activity_stats['types'][ $key ]->sub_total;
+		}
+	}
+
+	// Most used type first
+	arsort( $types_stats_ordered );
+
+	// keep only types the user added activities in
+	if( ! empty( $hide_empty ) ) {
+		$types = array_intersect_key( $types, $types_stats_ordered );
+	}
+
+	// We need to merge "human" description for types
+	$activity_stats['types'] = array_merge_recursive( $types_stats_ordered, $types );
+
+	return $activity_stats;
+}
diff --git src/bp-activity/bp-activity-template.php src/bp-activity/bp-activity-template.php
index d33d1f3..720df1d 100644
--- src/bp-activity/bp-activity-template.php
+++ src/bp-activity/bp-activity-template.php
@@ -4423,3 +4423,69 @@ function bp_activity_show_filters( $context = '' ) {
 		 */
 		return apply_filters( 'bp_get_activity_show_filters', $output, $filters, $context );
 	}
+
+/** Stats **********************************************************************/
+
+/**
+ * Display the number of activities by type in user's profile.
+ *
+ * @since BuddyPress (?)
+ *
+ * @param array $args before|after|user_id
+ * @uses bp_activity_get_profile_stats() to get the stats
+ */
+function bp_activity_profile_stats( $args = '' ) {
+	echo bp_activity_get_profile_stats( $args );
+}
+add_action( 'bp_members_admin_user_stats', 'bp_activity_profile_stats', 10, 1 );
+
+/**
+ * Return the number of activities by type in user's profile.
+ *
+ * @since BuddyPress (?)
+ *
+ * @param array $args before|after|user_id|types|hide_empty
+ * @return string HTML for stats output.
+ */
+function bp_activity_get_profile_stats( $args = '' ) {
+
+	// Parse the args
+	$r = bp_parse_args( $args, array(
+		'before'     => '<li class="bp-activity-profile-stats">',
+		'after'      => '</li>',
+		'user_id'    => bp_displayed_user_id(),
+		'types'      => bp_activity_get_types(),
+		'hide_empty' => true,
+		'output'     => ''
+	), 'activity_get_profile_stats' );
+
+	// Allow completely overloaded output
+	if ( empty( $r['output'] ) ) {
+
+		// Only proceed if a user ID was passed
+		if ( ! empty( $r['user_id'] ) ) {
+
+			// Get the user activities count by type
+			$activity_stats = bp_activity_get_count_by_type( $r['user_id'], $r['hide_empty'], $r['types'] );
+			$total_activities = absint( $activity_stats['total'] );
+
+			$r['output'] = $r['before'] . sprintf( _n( '%s activity', '%s activities', $total_activities, 'buddypress' ), '<strong>'. $total_activities .'</strong>' );
+
+			// If types exist, show some detailed output
+			if ( ! empty( $activity_stats['types'] ) ) {
+				$r['output'] .= '<ol>';
+
+				foreach ( $activity_stats['types'] as $type ) {
+					$r['output'] .= '<li>' . esc_html( $type[1] ) . ': ' . absint( $type[0] ) .'</li>';
+				}
+
+				$r['output'] .= '</ol>';
+			}
+
+			$r['output'] .= $r['after'];
+		}
+	}
+
+	// Filter and return
+	return apply_filters( 'bp_activity_get_profile_stats', $r['output'], $r );
+}
diff --git src/bp-members/admin/css/admin.css src/bp-members/admin/css/admin.css
index e4599f7..a6ba29c 100644
--- src/bp-members/admin/css/admin.css
+++ src/bp-members/admin/css/admin.css
@@ -25,6 +25,7 @@ div#community-profile-page li.bp-members-profile-stats:before,
 div#community-profile-page li.bp-friends-profile-stats:before,
 div#community-profile-page li.bp-groups-profile-stats:before,
 div#community-profile-page li.bp-blogs-profile-stats:before,
+div#community-profile-page li.bp-activity-profile-stats:before,
 div#community-profile-page a.bp-xprofile-avatar-user-admin:before {
 	font: normal 20px/1 'dashicons';
 	speak: none;
@@ -60,6 +61,15 @@ div#community-profile-page a.bp-xprofile-avatar-user-admin:before {
 	content:"\f182";
 }
 
+div#community-profile-page li.bp-activity-profile-stats:before {
+	content:"\f452";
+}
+
+div#community-profile-page li.bp-activity-profile-stats ol li {
+	font-size:80%;
+	margin-bottom:0;
+} 
+
 div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar {
 	width:150px;
 	margin:0 auto;
