diff --git src/js/media/models/attachments.js src/js/media/models/attachments.js
index 42b05d7546..8c9ec72922 100644
--- src/js/media/models/attachments.js
+++ src/js/media/models/attachments.js
@@ -212,6 +212,8 @@ var Attachments = Backbone.Collection.extend(/** @lends wp.media.model.Attachmen
 		this.observers.push( attachments );
 
 		attachments.on( 'add change remove', this._validateHandler, this );
+		attachments.on( 'add', this._addToTotalAttachments, this );
+		attachments.on( 'remove', this._removeFromTotalAttachments, this );
 		attachments.on( 'reset', this._validateAllHandler, this );
 		this.validateAll( attachments );
 		return this;
@@ -236,6 +238,42 @@ var Attachments = Backbone.Collection.extend(/** @lends wp.media.model.Attachmen
 
 		return this;
 	},
+	/**
+	 * Update total attachment count when items are added to a collection.
+	 *
+	 * @access private
+	 *
+	 * @since 5.8.0
+	 *
+	 * @param {wp.media.model.Attachments} attachment
+	 * @param {wp.media.model.Attachments} attachments
+	 * @param {Object} options
+	 *
+	 * @return {wp.media.model.Attachments} Returns itself to allow chaining.
+	 */
+	_removeFromTotalAttachments: function( attachment, attachments, options ) {
+		if ( this.mirroring ) {
+			this.mirroring.totalAttachments = this.mirroring.totalAttachments - 1;
+		}
+	},
+	/**
+	 * Update total attachment count when items are added to a collection.
+	 *
+	 * @access private
+	 *
+	 * @since 5.8.0
+	 *
+	 * @param {wp.media.model.Attachments} attachment
+	 * @param {wp.media.model.Attachments} attachments
+	 * @param {Object} options
+	 *
+	 * @return {wp.media.model.Attachments} Returns itself to allow chaining.
+	 */
+	_addToTotalAttachments: function( attachment, attachments, options ) {
+		if ( this.mirroring ) {
+			this.mirroring.totalAttachments = this.mirroring.totalAttachments + 1;
+		}
+	},
 	/**
 	 * @access private
 	 *
