diff --git src/wp-admin/css/customize-nav-menus.css src/wp-admin/css/customize-nav-menus.css
index 77a839c..0d11b2d 100644
--- src/wp-admin/css/customize-nav-menus.css
+++ src/wp-admin/css/customize-nav-menus.css
@@ -619,7 +619,28 @@
 	background: #eee;
 }
 
-#available-menu-items .open .accordion-section-title:after {
+/* rework the arrow indicator implementation for NVDA bug see #32715 */
+#available-menu-items .accordion-section-title:after {
+	content: none !important;
+}
+
+#available-menu-items .accordion-section-title .toggle-indicator {
+	display: inline-block;
+	font-size: 20px;
+	line-height: 1;
+}
+
+#available-menu-items .accordion-section-title .toggle-indicator:after {
+	content: '\f140';
+	font: normal 20px/1 'dashicons';
+	vertical-align: top;
+	speak: none;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+	text-decoration: none !important;
+}
+
+#available-menu-items .open .accordion-section-title .toggle-indicator:after {
 	content: '\f142';
 }
 
@@ -644,10 +665,11 @@ button.not-a-button {
 #available-menu-items .accordion-section-title button {
 	display: block;
 	width: 28px;
-	height: 32px;
+	height: 35px;
 	position: absolute;
 	top: 5px;
 	right: 5px;
+	cursor: pointer;
 }
 
 #available-menu-items .accordion-section-title button:focus {
@@ -656,7 +678,8 @@ button.not-a-button {
 }
 
 #available-menu-items .accordion-section-title .no-items,
-#available-menu-items .cannot-expand .accordion-section-title .spinner {
+#available-menu-items .cannot-expand .accordion-section-title .spinner,
+#available-menu-items .cannot-expand .accordion-section-title > button {
 	display: none;
 }
 
diff --git src/wp-admin/js/accordion.js src/wp-admin/js/accordion.js
index 1769d27..bdd21ba 100644
--- src/wp-admin/js/accordion.js
+++ src/wp-admin/js/accordion.js
@@ -53,7 +53,9 @@
 	 */
 	function accordionSwitch ( el ) {
 		var section = el.closest( '.accordion-section' ),
+			sectionToggleControl = section.find( '[aria-expanded]' ).eq( 0 ),
 			siblings = section.closest( '.accordion-container' ).find( '.open' ),
+			siblingsToggleControl = siblings.find( '[aria-expanded]' ).eq( 0 ),
 			content = section.find( '.accordion-section-content' );
 
 		// This section has no content and cannot be expanded.
@@ -65,11 +67,17 @@
 			section.toggleClass( 'open' );
 			content.toggle( true ).slideToggle( 150 );
 		} else {
+			siblingsToggleControl.attr( 'aria-expanded', 'false' );
 			siblings.removeClass( 'open' );
 			siblings.find( '.accordion-section-content' ).show().slideUp( 150 );
 			content.toggle( false ).slideToggle( 150 );
 			section.toggleClass( 'open' );
 		}
+
+		// If there's an element with an aria-expanded attribute, assume it's a toggle control and toggle the aria-expanded value.
+		if ( sectionToggleControl ) {
+			sectionToggleControl.attr( 'aria-expanded', sectionToggleControl.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
+		}
 	}
 
 })(jQuery);
diff --git src/wp-admin/js/customize-nav-menus.js src/wp-admin/js/customize-nav-menus.js
index 7b8fbf5..d14b700 100644
--- src/wp-admin/js/customize-nav-menus.js
+++ src/wp-admin/js/customize-nav-menus.js
@@ -173,18 +173,22 @@
 
 		// Search input change handler.
 		search: function( event ) {
+			var $searchSection = $( '#available-menu-items-search' ),
+				$openSections = $( '#available-menu-items .accordion-section.open' );
+
 			if ( ! event ) {
 				return;
 			}
 			// Manual accordion-opening behavior.
-			if ( this.searchTerm && ! $( '#available-menu-items-search' ).hasClass( 'open' ) ) {
-				$( '#available-menu-items .accordion-section-content' ).slideUp( 'fast' );
-				$( '#available-menu-items-search .accordion-section-content' ).slideDown( 'fast' );
-				$( '#available-menu-items .accordion-section.open' ).removeClass( 'open' );
-				$( '#available-menu-items-search' ).addClass( 'open' );
+			if ( this.searchTerm && ! $searchSection.hasClass( 'open' ) ) {
+				$openSections.find( '.accordion-section-content' ).slideUp( 'fast' );
+				$searchSection.find( '.accordion-section-content' ).slideDown( 'fast' );
+				$openSections.find( '[aria-expanded]' ).eq( 0 ).attr( 'aria-expanded', 'false' );
+				$openSections.removeClass( 'open' );
+				$searchSection.addClass( 'open' );
 			}
 			if ( '' === event.target.value ) {
-				$( '#available-menu-items-search' ).removeClass( 'open' );
+				$searchSection.removeClass( 'open' );
 			}
 			if ( this.searchTerm === event.target.value ) {
 				return;
diff --git src/wp-includes/class-wp-customize-nav-menus.php src/wp-includes/class-wp-customize-nav-menus.php
index ce1a9be..4432659 100644
--- src/wp-includes/class-wp-customize-nav-menus.php
+++ src/wp-includes/class-wp-customize-nav-menus.php
@@ -721,7 +721,7 @@ final class WP_Customize_Nav_Menus {
 				<ul class="accordion-section-content" data-type="search"></ul>
 			</div>
 			<div id="new-custom-menu-item" class="accordion-section">
-				<h4 class="accordion-section-title"><?php _e( 'Custom Links' ); ?><button type="button" class="not-a-button"><span class="screen-reader-text"><?php _e( 'Toggle' ); ?></span></button></h4>
+				<h4 class="accordion-section-title" role="presentation"><?php _e( 'Custom Links' ); ?> <button type="button" class="not-a-button" aria-expanded="false"><span class="screen-reader-text"><?php _e( 'Toggle section: Custom Links' ); ?></span><span class="toggle-indicator" aria-hidden="true"></span></button></h4>
 				<div class="accordion-section-content">
 					<input type="hidden" value="custom" id="custom-menu-item-type" name="menu-item[-1][menu-item-type]" />
 					<p id="menu-item-url-wrap">
@@ -750,7 +750,7 @@ final class WP_Customize_Nav_Menus {
 				$id = sprintf( 'available-menu-items-%s-%s', $available_item_type['type'], $available_item_type['object'] );
 				?>
 				<div id="<?php echo esc_attr( $id ); ?>" class="accordion-section">
-					<h4 class="accordion-section-title"><?php echo esc_html( $available_item_type['title'] ); ?> <span class="no-items"><?php _e( 'No items' ); ?></span><span class="spinner"></span> <button type="button" class="not-a-button"><span class="screen-reader-text"><?php _e( 'Toggle' ); ?></span></button></h4>
+					<h4 class="accordion-section-title" role="presentation"><?php echo esc_html( $available_item_type['title'] ); ?> <span class="spinner"></span> <span class="no-items"><?php _e( 'No items' ); ?></span> <button type="button" class="not-a-button" aria-expanded="false"><span class="screen-reader-text"><?php printf( 'Toggle section: %s', esc_html( $tax->label ) ); ?></span><span class="toggle-indicator" aria-hidden="true"></span></button></h4>
 					<ul class="accordion-section-content" data-type="<?php echo esc_attr( $available_item_type['type'] ); ?>" data-object="<?php echo esc_attr( $available_item_type['object'] ); ?>"></ul>
 				</div>
 				<?php
