Index: src/js/_enqueues/admin/privacy-tools.js
===================================================================
--- src/js/_enqueues/admin/privacy-tools.js	(revision 47105)
+++ src/js/_enqueues/admin/privacy-tools.js	(working copy)
@@ -59,6 +59,7 @@
 		var $this          = $( this ),
 			$action        = $this.parents( '.export-personal-data' ),
 			$requestRow    = $this.parents( 'tr' ),
+			$progress      = $requestRow.find( '.export-progress' );
 			requestID      = $action.data( 'request-id' ),
 			nonce          = $action.data( 'nonce' ),
 			exportersCount = $action.data( 'exporters-count' ),
@@ -69,6 +70,7 @@
 
 		$action.blur();
 		clearResultsAfterRow( $requestRow );
+		setExportProgress( 0 );
 
 		function onExportDoneSuccess( zipUrl ) {
 			var summaryMessage = strings.emailSent;
@@ -77,7 +79,7 @@
 
 			appendResultsAfterRow( $requestRow, 'notice-success', summaryMessage, [] );
 			$this.hide();
-			
+
 			if ( 'undefined' !== typeof zipUrl ) {
 				window.location = zipUrl;
 			} else if ( ! sendAsEmail ) {
@@ -92,6 +94,12 @@
 			}
 		}
 
+		function setExportProgress( exporterIndex ) {
+			var progress       = exporterIndex / exportersCount;
+			var progressString = Math.round( progress * 100 ).toString() + '%';
+			$progress.html( progressString );
+		}
+
 		function doNextExport( exporterIndex, pageIndex ) {
 			$.ajax(
 				{
@@ -120,6 +128,7 @@
 					setTimeout( doNextExport( exporterIndex, pageIndex + 1 ) );
 				} else {
 					if ( exporterIndex < exportersCount ) {
+						setExportProgress( exporterIndex );
 						setTimeout( doNextExport( exporterIndex + 1, 1 ) );
 					} else {
 						onExportDoneSuccess( responseData.url );
@@ -141,6 +150,7 @@
 		var $this         = $( this ),
 			$action       = $this.parents( '.remove-personal-data' ),
 			$requestRow   = $this.parents( 'tr' ),
+			$progress     = $requestRow.find( '.erasure-progress' );
 			requestID     = $action.data( 'request-id' ),
 			nonce         = $action.data( 'nonce' ),
 			erasersCount  = $action.data( 'erasers-count' ),
@@ -152,6 +162,7 @@
 
 		$action.blur();
 		clearResultsAfterRow( $requestRow );
+		setErasureProgress( 0 );
 
 		function onErasureDoneSuccess() {
 			var summaryMessage = strings.noDataFound;
@@ -183,6 +194,12 @@
 			appendResultsAfterRow( $requestRow, 'notice-error', strings.removalError, [] );
 		}
 
+		function setErasureProgress( eraserIndex ) {
+			var progress       = eraserIndex / erasersCount;
+			var progressString = Math.round( progress * 100 ).toString() + '%';
+			$progress.html( progressString );
+		}
+
 		function doNextErasure( eraserIndex, pageIndex ) {
 			$.ajax({
 				url: window.ajaxurl,
@@ -214,6 +231,7 @@
 					setTimeout( doNextErasure( eraserIndex, pageIndex + 1 ) );
 				} else {
 					if ( eraserIndex < erasersCount ) {
+						setErasureProgress( eraserIndex );
 						setTimeout( doNextErasure( eraserIndex + 1, 1 ) );
 					} else {
 						onErasureDoneSuccess();
Index: src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php	(revision 47105)
+++ src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php	(working copy)
@@ -57,7 +57,7 @@
 			'">';
 
 		$download_data_markup .= '<span class="export-personal-data-idle"><button type="button" class="button-link export-personal-data-handle">' . __( 'Download Personal Data' ) . '</button></span>' .
-			'<span class="export-personal-data-processing hidden">' . __( 'Downloading Data...' ) . '</span>' .
+			'<span class="export-personal-data-processing hidden">' . __( 'Downloading Data...' ) . ' <span class="export-progress"></span></span>' .
 			'<span class="export-personal-data-success hidden"><button type="button" class="button-link export-personal-data-handle">' . __( 'Download Personal Data Again' ) . '</button></span>' .
 			'<span class="export-personal-data-failed hidden">' . __( 'Download failed.' ) . ' <button type="button" class="button-link">' . __( 'Retry' ) . '</button></span>';
 
@@ -100,7 +100,7 @@
 
 				?>
 				<span class="export-personal-data-idle"><button type="button" class="button export-personal-data-handle"><?php _e( 'Send Export Link' ); ?></button></span>
-				<span class="export-personal-data-processing button updating-message hidden"><?php _e( 'Sending Email...' ); ?></span>
+				<span class="export-personal-data-processing button updating-message hidden"><?php _e( 'Sending Email...' ); ?> <span class="export-progress"></span></span>
 				<span class="export-personal-data-success success-message hidden"><?php _e( 'Email sent.' ); ?></span>
 				<span class="export-personal-data-failed hidden"><?php _e( 'Email could not be sent.' ); ?> <button type="button" class="button export-personal-data-handle"><?php _e( 'Retry' ); ?></button></span>
 				<?php
Index: src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php	(revision 47105)
+++ src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php	(working copy)
@@ -62,7 +62,7 @@
 				'">';
 
 			$remove_data_markup .= '<span class="remove-personal-data-idle"><button type="button" class="button-link remove-personal-data-handle">' . __( 'Force Erase Personal Data' ) . '</button></span>' .
-				'<span class="remove-personal-data-processing hidden">' . __( 'Erasing Data...' ) . '</span>' .
+				'<span class="remove-personal-data-processing hidden">' . __( 'Erasing Data...' ) . ' <span class="erasure-progress"></span></span>' .
 				'<span class="remove-personal-data-success hidden">' . __( 'Erasure completed.' ) . '</span>' .
 				'<span class="remove-personal-data-failed hidden">' . __( 'Force Erasure has failed.' ) . ' <button type="button" class="button-link remove-personal-data-handle">' . __( 'Retry' ) . '</button></span>';
 
@@ -106,7 +106,7 @@
 
 				?>
 				<span class="remove-personal-data-idle"><button type="button" class="button remove-personal-data-handle"><?php _e( 'Erase Personal Data' ); ?></button></span>
-				<span class="remove-personal-data-processing button updating-message hidden"><?php _e( 'Erasing Data...' ); ?></span>
+				<span class="remove-personal-data-processing button updating-message hidden"><?php _e( 'Erasing Data...' ); ?> <span class="erasure-progress"></span></span>
 				<span class="remove-personal-data-success success-message hidden" ><?php _e( 'Erasure completed.' ); ?></span>
 				<span class="remove-personal-data-failed hidden"><?php _e( 'Data Erasure has failed.' ); ?> <button type="button" class="button remove-personal-data-handle"><?php _e( 'Retry' ); ?></button></span>
 				<?php
