diff --git src/wp-admin/includes/ajax-actions.php src/wp-admin/includes/ajax-actions.php
index 799ef1e..cee3c67 100644
--- src/wp-admin/includes/ajax-actions.php
+++ src/wp-admin/includes/ajax-actions.php
@@ -146,6 +146,18 @@ function wp_ajax_ajax_tag_search() {
 
 	$results = get_terms( $taxonomy, array( 'name__like' => $s, 'fields' => 'names', 'hide_empty' => false ) );
 
+	/**
+	 * Filter the already added tags to a post/page.
+	 * @since 4.0.0
+	 */
+	if ( isset( $_GET['addedTags'] ) ) {
+		foreach ( $results as $key => $value ) {
+			if ( in_array( $value, $_GET['addedTags'] ) ) {
+				unset( $results[$key] );
+			}
+		}
+	}
+
 	echo join( $results, "\n" );
 	wp_die();
 }
diff --git src/wp-includes/js/jquery/suggest.js src/wp-includes/js/jquery/suggest.js
index 87f3012..910bfbe 100644
--- src/wp-includes/js/jquery/suggest.js
+++ src/wp-includes/js/jquery/suggest.js
@@ -118,14 +118,27 @@
 
 				} else {
 
-					$.get(options.source, {q: q}, function(txt) {
+					if ( $('.tagchecklist span').length !== 0 ) {
+
+						var addedTags = [];
+
+						$('.tagchecklist span').each( function(span){
+							var spanContent = $(this).html();
+
+							spanContent = spanContent.split( '&nbsp;' ).pop();
+
+							addedTags.push( spanContent );
+
+						});
+					}
+
+					$.get(options.source, {q: q, addedTags: addedTags}, function(txt) {
 
 						$results.hide();
 
 						items = parseTxt(txt, q);
 
 						displayItems(items);
-						addToCache(q, items, txt.length);
 
 					});
 
