diff --git src/bp-members/bp-members-activity.php src/bp-members/bp-members-activity.php
index 3f0d28945..97efc0a16 100644
--- src/bp-members/bp-members-activity.php
+++ src/bp-members/bp-members-activity.php
@@ -192,6 +192,35 @@ function bp_members_new_avatar_activity( $user_id = 0 ) {
 	 */
 	$user_id = apply_filters( 'bp_members_new_avatar_user_id', $user_id );
 
+	// Check to make sure that a user has just one `new_avatar` activity per throttle time.
+	$last_new_avatar_activity = bp_activity_get( array(
+		'user_id'   => $user_id,
+		'component' => buddypress()->members->id,
+		'type'      => 'new_avatar',
+		'per_page'  => 1,
+	) );
+
+	if ( ! empty( $last_new_avatar_activity['activities'] ) ) {
+
+		/**
+		 * Filters the throttle time, in seconds, used to prevent generating multiple `new_avatar` activity.
+		 *
+		 * @since 10.0.0
+		 *
+		 * @param int $value Throttle time, in seconds.
+		 */
+		$throttle_period = apply_filters( 'bp_members_new_avatar_throttle_time', HOUR_IN_SECONDS );
+		$then            = strtotime( $last_new_avatar_activity['activities'][0]->date_recorded );
+		$now             = bp_core_current_time( true, 'timestamp' );
+
+		// Delete the old activity.
+		if ( ( $now - $then ) < $throttle_period ) {
+			bp_activity_delete( array(
+				'id' => $last_new_avatar_activity['activities'][0]->id
+			) );
+		}
+	}
+
 	// Add the activity.
 	bp_activity_add( array(
 		'user_id'   => $user_id,
diff --git tests/phpunit/testcases/members/activity.php tests/phpunit/testcases/members/activity.php
index 07ec30406..307d861ff 100644
--- tests/phpunit/testcases/members/activity.php
+++ tests/phpunit/testcases/members/activity.php
@@ -93,4 +93,56 @@ class BP_Tests_Members_Activity extends BP_UnitTestCase {
 
 		$this->assertSame( $expected, $found );
 	}
+
+	/**
+	 * @group bp_members_new_avatar_activity
+	 */
+	public function test_bp_members_new_avatar_activity_throttled() {
+		$u = self::factory()->user->create();
+		$a = self::factory()->activity->create( array(
+			'component' => 'members',
+			'type'      => 'new_avatar',
+			'user_id'   => $u,
+		) );
+
+		bp_members_new_avatar_activity( $u );
+
+		$new_avatar_activities = bp_activity_get( array(
+			'user_id'     => $u,
+			'component'   => buddypress()->members->id,
+			'type'        => 'new_avatar',
+			'count_total' => 'count_query',
+		) );
+
+		$this->assertEquals( 1, $new_avatar_activities['total'] );
+		$this->assertNotSame( $a, $new_avatar_activities['activities'][0]->id );
+	}
+
+	/**
+	 * @group bp_members_new_avatar_activity
+	 */
+	public function test_bp_members_new_avatar_activity_outside_of_throttle_time() {
+		$u = self::factory()->user->create();
+
+		$time      = strtotime( bp_core_current_time() );
+		$prev_time = date( 'Y-m-d H:i:s', $time - ( 121 * HOUR_IN_SECONDS ) );
+
+		$a = self::factory()->activity->create( array(
+			'component'     => 'members',
+			'type'          => 'new_avatar',
+			'user_id'       => $u,
+			'recorded_time' => $prev_time,
+		) );
+
+		bp_members_new_avatar_activity( $u );
+
+		$new_avatar_activities = bp_activity_get( array(
+			'user_id'     => $u,
+			'component'   => buddypress()->members->id,
+			'type'        => 'new_avatar',
+			'count_total' => 'count_query',
+		) );
+
+		$this->assertEquals( 2, $new_avatar_activities['total'] );
+	}
 }
