diff --git src/wp-includes/widgets.php src/wp-includes/widgets.php
index c3be679516..20350ee627 100644
--- src/wp-includes/widgets.php
+++ src/wp-includes/widgets.php
@@ -1542,21 +1542,23 @@ function wp_widget_rss_output( $rss, $args = array() ) {
  *
  * The options for what fields are displayed for the RSS form are all booleans
  * and are as follows: 'url', 'title', 'items', 'show_summary', 'show_author',
- * 'show_date'.
+ * 'show_date', 'hide_empty_rss'.
  *
  * @since 2.5.0
+ * @since 5.3.0 Added `hide_empty_rss` field.
  *
  * @param array|string $args Values for input fields.
  * @param array $inputs Override default display options.
  */
 function wp_widget_rss_form( $args, $inputs = null ) {
 	$default_inputs = array(
-		'url'          => true,
-		'title'        => true,
-		'items'        => true,
-		'show_summary' => true,
-		'show_author'  => true,
-		'show_date'    => true,
+		'url'          		=> true,
+		'title'        		=> true,
+		'items'        		=> true,
+		'show_summary' 		=> true,
+		'show_author'  		=> true,
+		'show_date'    		=> true,
+		'hide_empty_rss'	=> true,
 	);
 	$inputs         = wp_parse_args( $inputs, $default_inputs );
 
@@ -1568,9 +1570,10 @@ function wp_widget_rss_form( $args, $inputs = null ) {
 		$args['items'] = 10;
 	}
 
-	$args['show_summary'] = isset( $args['show_summary'] ) ? (int) $args['show_summary'] : (int) $inputs['show_summary'];
-	$args['show_author']  = isset( $args['show_author'] ) ? (int) $args['show_author'] : (int) $inputs['show_author'];
-	$args['show_date']    = isset( $args['show_date'] ) ? (int) $args['show_date'] : (int) $inputs['show_date'];
+	$args['show_summary']   = isset( $args['show_summary'] ) ? (int) $args['show_summary'] : (int) $inputs['show_summary'];
+	$args['show_author']    = isset( $args['show_author'] ) ? (int) $args['show_author'] : (int) $inputs['show_author'];
+	$args['show_date']      = isset( $args['show_date'] ) ? (int) $args['show_date'] : (int) $inputs['show_date'];
+	$args['hide_empty_rss'] = isset( $args['hide_empty_rss'] ) ? (int) $args['hide_empty_rss'] : (int) $inputs['hide_empty_rss'];
 
 	if ( ! empty( $args['error'] ) ) {
 		echo '<p class="widget-error"><strong>' . __( 'RSS Error:' ) . '</strong> ' . $args['error'] . '</p>';
@@ -1604,7 +1607,12 @@ function wp_widget_rss_form( $args, $inputs = null ) {
 	<label for="rss-show-date-<?php echo $esc_number; ?>"><?php _e( 'Display item date?' ); ?></label></p>
 	<?php
 	endif;
-foreach ( array_keys( $default_inputs ) as $input ) :
+	if ( $inputs['hide_empty_rss'] ) : ?>
+		<p><input id="rss-hide-empty-rss-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][hide_empty_rss]" type="checkbox" value="1" <?php checked( $args['hide_empty_rss'] ); ?>/>
+		<label for="rss-hide-empty-rss-<?php echo $esc_number; ?>"><?php _e( 'Hide widget to non-admin users if no RSS items are available?' ); ?></label></p>
+	<?php
+	endif;
+	foreach ( array_keys( $default_inputs ) as $input ) :
 	if ( 'hidden' === $inputs[ $input ] ) :
 		$id = str_replace( '_', '-', $input );
 		?>
@@ -1621,10 +1629,12 @@ foreach ( array_keys( $default_inputs ) as $input ) :
  * default, which is 10.
  *
  * The resulting array has the feed title, feed url, feed link (from channel),
- * feed items, error (if any), and whether to show summary, author, and date.
+ * feed items, error (if any), whether to show summary, author, and date,
+ * and whether to show the widget if there's no items from the feed.
  * All respectively in the order of the array elements.
  *
  * @since 2.5.0
+ * @since 5.3.0 Added `hide_empty_rss` field.
  *
  * @param array $widget_rss RSS widget feed data. Expects unescaped data.
  * @param bool $check_feed Optional, default is true. Whether to check feed for errors.
@@ -1635,11 +1645,12 @@ function wp_widget_rss_process( $widget_rss, $check_feed = true ) {
 	if ( $items < 1 || 20 < $items ) {
 		$items = 10;
 	}
-	$url          = esc_url_raw( strip_tags( $widget_rss['url'] ) );
-	$title        = isset( $widget_rss['title'] ) ? trim( strip_tags( $widget_rss['title'] ) ) : '';
-	$show_summary = isset( $widget_rss['show_summary'] ) ? (int) $widget_rss['show_summary'] : 0;
-	$show_author  = isset( $widget_rss['show_author'] ) ? (int) $widget_rss['show_author'] : 0;
-	$show_date    = isset( $widget_rss['show_date'] ) ? (int) $widget_rss['show_date'] : 0;
+	$url            = esc_url_raw( strip_tags( $widget_rss['url'] ) );
+	$title          = isset( $widget_rss['title'] ) ? trim( strip_tags( $widget_rss['title'] ) ) : '';
+	$show_summary   = isset( $widget_rss['show_summary'] ) ? (int) $widget_rss['show_summary'] : 0;
+	$show_author    = isset( $widget_rss['show_author'] ) ? (int) $widget_rss['show_author'] : 0;
+	$show_date      = isset( $widget_rss['show_date'] ) ? (int) $widget_rss['show_date'] : 0;
+	$hide_empty_rss = isset( $widget_rss['hide_empty_rss'] ) ? (int) $widget_rss['hide_empty_rss'] : 0;
 
 	if ( $check_feed ) {
 		$rss   = fetch_feed( $url );
@@ -1658,7 +1669,7 @@ function wp_widget_rss_process( $widget_rss, $check_feed = true ) {
 		}
 	}
 
-	return compact( 'title', 'url', 'link', 'items', 'error', 'show_summary', 'show_author', 'show_date' );
+	return compact( 'title', 'url', 'link', 'items', 'error', 'show_summary', 'show_author', 'show_date', 'hide_empty_rss' );
 }
 
 /**
diff --git src/wp-includes/widgets/class-wp-widget-rss.php src/wp-includes/widgets/class-wp-widget-rss.php
index 570e7bba43..efecf82fff 100644
--- src/wp-includes/widgets/class-wp-widget-rss.php
+++ src/wp-includes/widgets/class-wp-widget-rss.php
@@ -66,6 +66,26 @@ class WP_Widget_RSS extends WP_Widget {
 		$desc  = '';
 		$link  = '';
 
+		/**
+		 * Control if the widget is hidden for non-admin users if no RSS items are available.
+		 * 
+		 * @since 5.3.0 
+		 * 
+		 * @link https://core.trac.wordpress.org/ticket/32065
+		 */
+		if ( $rss instanceof SimplePie ) {
+			if ( ! $rss->get_item_quantity() ) {
+				$hide_widget_if_empty_rss = 1;
+				if ( isset( $instance['hide_empty_rss'] ) ) {
+					$hide_widget_if_empty_rss = intval( $instance['hide_empty_rss'] );
+				}
+
+				if ( $hide_widget_if_empty_rss && !current_user_can( 'edit_theme_options' ) ) {
+					return;
+				}
+			}
+		}
+
 		if ( ! is_wp_error( $rss ) ) {
 			$desc = esc_attr( strip_tags( html_entity_decode( $rss->get_description(), ENT_QUOTES, get_option( 'blog_charset' ) ) ) );
 			if ( empty( $title ) ) {
@@ -128,13 +148,14 @@ class WP_Widget_RSS extends WP_Widget {
 	public function form( $instance ) {
 		if ( empty( $instance ) ) {
 			$instance = array(
-				'title'        => '',
-				'url'          => '',
-				'items'        => 10,
-				'error'        => false,
-				'show_summary' => 0,
-				'show_author'  => 0,
-				'show_date'    => 0,
+				'title'          => '',
+				'url'            => '',
+				'items'          => 10,
+				'error'          => false,
+				'show_summary'   => 0,
+				'show_author'    => 0,
+				'show_date'      => 0,
+				'hide_empty_rss' => 1,
 			);
 		}
 		$instance['number'] = $this->number;
