Index: wp-includes/js/media-views.js
===================================================================
--- wp-includes/js/media-views.js	(revision 22893)
+++ wp-includes/js/media-views.js	(working copy)
@@ -2574,12 +2574,24 @@
 		},
 
 		updateSetting: function( event ) {
-			var $setting = $( event.target ).closest('[data-setting]');
+			var target = $( event.target ),
+				$setting = target.closest('[data-setting]'),
+				el = $('.' + target.attr('class')),
+				spinner = el.parent().find('.spinner');
 
 			if ( ! $setting.length )
 				return;
+			
+			if ( !spinner.length )
+				spinner = el.before('<span class="spinner"></span>').parent().find('.spinner');
 
-			this.model.save( $setting.data('setting'), event.target.value );
+			spinner.show();
+
+			this.model.save( $setting.data('setting'), event.target.value ).done(
+				setTimeout( function(){
+					spinner.hide();
+				}, 500 )
+			);
 		},
 
 		updateAll: function() {
@@ -3652,4 +3664,4 @@
 			this.$('img').attr( 'src', this.model.get('url') );
 		}
 	});
-}(jQuery));
\ No newline at end of file
+}(jQuery));
Index: wp-includes/media.php
===================================================================
--- wp-includes/media.php	(revision 22893)
+++ wp-includes/media.php	(working copy)
@@ -1253,7 +1253,7 @@
 		'multipart'           => true,
 		'urlstream_upload'    => true,
 	);
-
+	
 	// Multi-file uploading doesn't currently work in iOS Safari,
 	// single-file allows the built-in camera to be used as source for images
 	if ( wp_is_mobile() )
@@ -1678,22 +1678,22 @@
 		<# if ( 'image' === data.type ) { #>
 			<label class="setting" data-setting="title">
 				<span><?php _e('Title'); ?></span>
-				<input type="text" value="{{ data.title }}" />
+				<input class="setting-image-title" type="text" value="{{ data.title }}" />
 			</label>
 			<label class="setting" data-setting="caption">
 				<span><?php _e('Caption'); ?></span>
-				<textarea
+				<textarea class="setting-image-caption"
 					placeholder="<?php esc_attr_e('Describe this image&hellip;'); ?>"
 					>{{ data.caption }}</textarea>
 			</label>
 			<label class="setting" data-setting="alt">
 				<span><?php _e('Alt Text'); ?></span>
-				<input type="text" value="{{ data.alt }}" />
+				<input class="setting-image-alt" type="text" value="{{ data.alt }}" />
 			</label>
 		<# } else { #>
 			<label class="setting" data-setting="title">
 				<span><?php _e('Title'); ?></span>
-				<input type="text" value="{{ data.title }}"
+				<input class="setting-media-title" type="text" value="{{ data.title }}"
 				<# if ( 'video' === data.type ) { #>
 					placeholder="<?php esc_attr_e('Describe this video&hellip;'); ?>"
 				<# } else if ( 'audio' === data.type ) { #>
Index: wp-includes/css/media-views.css
===================================================================
--- wp-includes/css/media-views.css	(revision 22893)
+++ wp-includes/css/media-views.css	(working copy)
@@ -260,8 +260,18 @@
 	float: left;
 	width: 100%;
 	margin: 1px 0;
+	position: relative;
 }
 
+.media-sidebar .setting .spinner {
+	float: none;
+	left: 0;
+	min-height: 0;
+	position: absolute;
+	top: 2px;
+	width: auto;
+}
+
 .media-sidebar .setting span {
 	min-width: 30%;
 	margin-right: 4%;
