diff --git a/thunar/thunar-standard-view.c b/thunar/thunar-standard-view.c
index d6ef4a2ba2ba143ab99302146943d126636c5f49..a9034b44b4085d5a29ee55d2aafbdddfb8b65a84 100644
--- a/thunar/thunar-standard-view.c
+++ b/thunar/thunar-standard-view.c
@@ -362,8 +362,9 @@ struct _ThunarStandardViewPrivate
   guint                   thumbnail_source_id;
   gboolean                thumbnailing_scheduled;
 
-  /* file insert signal */
+  /* row insert and delete signal IDs, for blocking/unblocking */
   gulong                  row_changed_id;
+  gulong                  row_deleted_id;
 
   /* current sort column ID and it's fallback
    * the default is only relevant for directory specific settings */
@@ -821,7 +822,7 @@ thunar_standard_view_init (ThunarStandardView *standard_view)
 
   /* setup the list model */
   standard_view->model = thunar_list_model_new ();
-  g_signal_connect_after (G_OBJECT (standard_view->model), "row-deleted", G_CALLBACK (thunar_standard_view_select_after_row_deleted), standard_view);
+  standard_view->priv->row_deleted_id = g_signal_connect_after (G_OBJECT (standard_view->model), "row-deleted", G_CALLBACK (thunar_standard_view_select_after_row_deleted), standard_view);
   standard_view->priv->row_changed_id = g_signal_connect (G_OBJECT (standard_view->model), "row-changed", G_CALLBACK (thunar_standard_view_row_changed), standard_view);
   g_signal_connect (G_OBJECT (standard_view->model), "rows-reordered", G_CALLBACK (thunar_standard_view_rows_reordered), standard_view);
   g_signal_connect (G_OBJECT (standard_view->model), "error", G_CALLBACK (thunar_standard_view_error), standard_view);
@@ -4494,9 +4495,13 @@ thunar_standard_view_set_searching (ThunarStandardView *standard_view,
   standard_view->priv->search_query = g_strdup (search_query);
 
   /* initiate the search */
+  /* set_folder() can emit a large number of row-deleted signals for large folders,
+   * to the extent it degrades performance: https://gitlab.xfce.org/xfce/thunar/-/issues/914 */
+  g_signal_handler_block (standard_view->model, standard_view->priv->row_deleted_id);
   g_object_ref (G_OBJECT (thunar_list_model_get_folder (standard_view->model))); /* temporarily hold a reference so the folder doesn't get deleted */
   thunar_list_model_set_folder (standard_view->model, thunar_list_model_get_folder (standard_view->model), search_query);
   g_object_unref (G_OBJECT (thunar_list_model_get_folder (standard_view->model))); /* reference no longer needed */
+  g_signal_handler_unblock (standard_view->model, standard_view->priv->row_deleted_id);
 
   /* change the display name in the tab */
   g_object_notify_by_pspec (G_OBJECT (standard_view), standard_view_props[PROP_DISPLAY_NAME]);