diff --git a/lib/menu.c b/lib/menu.c
index 42bb3b6d99fb11327c38975a32bf02f6212518c9..67f3cc63dc6ea7218a676e4f1422c90dec9aa778 100644
--- a/lib/menu.c
+++ b/lib/menu.c
@@ -710,8 +710,11 @@ bm_menu_run_with_key(struct bm_menu *menu, enum bm_key key, uint32_t unicode)
             break;
 
         case BM_KEY_DELETE:
-            if (menu->filter)
-                bm_utf8_rune_remove(menu->filter, menu->cursor + 1, NULL);
+            if (menu->filter) {
+                size_t width = bm_utf8_rune_next(menu->filter, menu->cursor);
+                if (width)
+                    bm_utf8_rune_remove(menu->filter, menu->cursor + width, NULL);
+            }
             break;
 
         case BM_KEY_LINE_DELETE_LEFT: