diff --git src/bp-core/admin/bp-core-admin-optouts.php src/bp-core/admin/bp-core-admin-optouts.php
index 469c8bf73..98e40b113 100644
--- src/bp-core/admin/bp-core-admin-optouts.php
+++ src/bp-core/admin/bp-core-admin-optouts.php
@@ -10,6 +10,11 @@
 // Exit if accessed directly.
 defined( 'ABSPATH' ) || exit;
 
+// Per_page screen option.
+if ( is_admin() && ! empty( $_REQUEST['page'] ) && 'bp-optouts' == $_REQUEST['page'] ) {
+	add_filter( 'set-screen-option', 'bp_core_optouts_screen_options', 10, 3 );
+}
+
 /**
  * Set up the Opt-outs admin page.
  *
@@ -484,3 +489,27 @@ function bp_core_optouts_admin_manage( $action = '' ) {
 
 	<?php
 }
+
+/**
+ * Handle save/update of screen options for the BP Tools Optouts screen.
+ *
+ * @since 14.0.0
+ *
+ * @param  string     $value     Will always be false unless another plugin filters it first.
+ * @param  string     $option    Screen option name.
+ * @param  string     $new_value Screen option form value.
+ * @return string|int            Option value. False to abandon update.
+ */
+function bp_core_optouts_screen_options( $value, $option, $new_value ) {
+	if ( 'tools_page_bp_optouts_per_page' !== $option && 'tools_page_bp_optouts_network_per_page' !== $option ) {
+			return $value;
+		}
+
+		// Per page.
+		$new_value = (int) $new_value;
+		if ( $new_value < 1 || $new_value > 999 ) {
+			return $value;
+		}
+
+		return $new_value;
+}
