diff --git src/wp-admin/includes/user.php src/wp-admin/includes/user.php
index 7694889..ecfe9ba 100644
--- src/wp-admin/includes/user.php
+++ src/wp-admin/includes/user.php
@@ -991,8 +991,40 @@ function wp_privacy_process_personal_data_erasure_page( $response, $eraser_index
  * @access private
  */
 function _wp_privacy_hook_requests_page() {
-	add_submenu_page( 'tools.php', __( 'Export Personal Data' ), __( 'Export Personal Data' ), 'export_others_personal_data', 'export_personal_data', '_wp_personal_data_export_page' );
-	add_submenu_page( 'tools.php', __( 'Erase Personal Data' ), __( 'Erase Personal Data' ), 'erase_others_personal_data', 'remove_personal_data', '_wp_personal_data_removal_page' );
+
+	$export_count = 0;
+	if ( current_user_can( 'export_others_personal_data' ) ) {
+		$export_counts = (array) wp_count_user_requests( 'export_personal_data' );
+		if ( isset( $export_counts['request-confirmed'] ) ) {
+			$export_count = (int) $export_counts['request-confirmed'];
+		}
+	}
+
+	$erase_count = 0;
+	if ( current_user_can( 'erase_others_personal_data' ) ) {
+		$erase_counts = (array) wp_count_user_requests( 'remove_personal_data' );
+		if ( isset( $erase_counts['request-confirmed'] ) ) {
+			$erase_count = (int) $erase_counts['request-confirmed'];
+		}
+	}
+
+	$export_notice = sprintf(
+		'<span class="update-plugins count-%d"><span class="plugin-count">%d</span></span>',
+		$export_count,
+		number_format_i18n( $export_count )
+	);
+
+	$erase_notice = sprintf(
+		'<span class="update-plugins count-%d"><span class="plugin-count">%d</span></span>',
+		$erase_count,
+		number_format_i18n( $erase_count )
+	);
+
+	/* translators: %s Export bubble count notice */
+	add_submenu_page( 'tools.php', __( 'Export Personal Data' ), sprintf( __( 'Export Personal Data %s' ), $export_notice ), 'export_others_personal_data', 'export_personal_data', '_wp_personal_data_export_page' );
+
+	/* translators: %s Erase bubble count notice */
+	add_submenu_page( 'tools.php', __( 'Erase Personal Data' ), sprintf( __( 'Erase Personal Data %s' ), $erase_notice ), 'erase_others_personal_data', 'remove_personal_data', '_wp_personal_data_removal_page' );
 }
 
 // TODO: move the following classes in new files.
diff --git src/wp-admin/menu.php src/wp-admin/menu.php
index 0ad302e..4d0afb7 100644
--- src/wp-admin/menu.php
+++ src/wp-admin/menu.php
@@ -252,7 +252,31 @@ if ( current_user_can( 'list_users' ) ) {
 	}
 }
 
-$menu[75]                     = array( __( 'Tools' ), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'dashicons-admin-tools' );
+$confirmed_export_request_count = 0;
+if ( current_user_can( 'export_others_personal_data' ) ) {
+	$export_request_counts = (array) wp_count_user_requests( 'export_personal_data' );
+	if ( isset( $export_request_counts['request-confirmed'] ) ) {
+		$confirmed_export_request_count = (int) $export_request_counts['request-confirmed'];
+	}
+}
+
+$confirmed_erase_request_count = 0;
+if ( current_user_can( 'erase_others_personal_data' ) ) {
+	$erase_request_counts = (array) wp_count_user_requests( 'remove_personal_data' );
+	if ( isset( $erase_request_counts['request-confirmed'] ) ) {
+		$confirmed_erase_request_count = (int) $erase_request_counts['request-confirmed'];
+	}
+}
+
+$confirmed_request_count = $confirmed_export_request_count + $confirmed_erase_request_count;
+
+$request_notice = sprintf(
+	'<span class="update-plugins count-%d"><span class="plugin-count">%d</span></span>',
+	$confirmed_request_count,
+	number_format_i18n( $confirmed_request_count )
+);
+
+$menu[75]                     = array( sprintf( __( 'Tools %s' ), $request_notice ), 'edit_posts', 'tools.php', '', 'menu-top menu-icon-tools', 'menu-tools', 'dashicons-admin-tools' );
 	$submenu['tools.php'][5]  = array( __( 'Available Tools' ), 'edit_posts', 'tools.php' );
 	$submenu['tools.php'][10] = array( __( 'Import' ), 'import', 'import.php' );
 	$submenu['tools.php'][15] = array( __( 'Export' ), 'export', 'export.php' );
