diff --git a/NEWS b/NEWS
index 8b0029784..2ca870de9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,7 @@
 ver 0.20.22 (not yet released)
 * protocol
   - add tag fallbacks for AlbumArtistSort, ArtistSort
+  - fix empty string filter on fallback tags
   - "count group ..." can print an empty group
   - fix broken command "list ... group"
 * storage
diff --git a/src/SongFilter.cxx b/src/SongFilter.cxx
index faf5deb2a..8f6d3c67f 100644
--- a/src/SongFilter.cxx
+++ b/src/SongFilter.cxx
@@ -110,15 +110,6 @@ SongFilter::Item::Match(const Tag &_tag) const noexcept
 	}
 
 	if (tag < TAG_NUM_OF_ITEM_TYPES && !visited_types[tag]) {
-		/* If the search critieron was not visited during the
-		   sweep through the song's tag, it means this field
-		   is absent from the tag or empty. Thus, if the
-		   searched string is also empty
-		   then it's a match as well and we should return
-		   true. */
-		if (value.empty())
-			return true;
-
 		bool result = false;
 		if (ApplyTagFallback(TagType(tag),
 				     [&](TagType tag2) {
@@ -136,6 +127,15 @@ SongFilter::Item::Match(const Tag &_tag) const noexcept
 			     return true;
 		     }))
 			return result;
+
+		/* If the search critieron was not visited during the
+		   sweep through the song's tag, it means this field
+		   is absent from the tag or empty. Thus, if the
+		   searched string is also empty
+		   then it's a match as well and we should return
+		   true. */
+		if (value.empty())
+			return true;
 	}
 
 	return false;