diff --git a/src/tests/fixtures/wide-chars-delete-middle b/src/tests/fixtures/wide-chars-delete-middle
new file mode 100755
index 000000000..f2e3fb7ee
--- /dev/null
+++ b/src/tests/fixtures/wide-chars-delete-middle
@@ -0,0 +1 @@
+[?2004h[aram@green zellij]$ 
[K[aram@green zellij]$ [7m🏠[27m🏠 abc5~[K[Kdabceabcfabc abc[1@x[1P
\ No newline at end of file
diff --git a/src/tests/fixtures/wide-chars-delete-middle-after-multi b/src/tests/fixtures/wide-chars-delete-middle-after-multi
new file mode 100755
index 000000000..2e96ecad3
--- /dev/null
+++ b/src/tests/fixtures/wide-chars-delete-middle-after-multi
@@ -0,0 +1 @@
+[?2004h[aram@green zellij]$ 
[K[aram@green zellij]$ [7m🏠[27m🏠[7m🏠[27m🏠[7m🏠[27m🏠a🏠[1P🏠
\ No newline at end of file
diff --git a/zellij-server/src/panes/grid.rs b/zellij-server/src/panes/grid.rs
index 4bda27e0a..77e2bb39c 100644
--- a/zellij-server/src/panes/grid.rs
+++ b/zellij-server/src/panes/grid.rs
@@ -2249,8 +2249,7 @@ impl Row {
         }
     }
     pub fn insert_character_at(&mut self, terminal_character: TerminalCharacter, x: usize) {
-        let width_offset = self.excess_width_until(x);
-        let insert_position = x.saturating_sub(width_offset);
+        let insert_position = self.absolute_character_index(x);
         match self.columns.len().cmp(&insert_position) {
             Ordering::Equal => self.columns.push_back(terminal_character),
             Ordering::Less => {
@@ -2368,8 +2367,9 @@ impl Row {
         self.columns.is_empty()
     }
     pub fn delete_and_return_character(&mut self, x: usize) -> Option<TerminalCharacter> {
-        if x < self.columns.len() {
-            Some(self.columns.remove(x).unwrap()) // TODO: just return the remove part?
+        let erase_position = self.absolute_character_index(x);
+        if erase_position < self.columns.len() {
+            Some(self.columns.remove(erase_position).unwrap()) // TODO: just return the remove part?
         } else {
             None
         }
diff --git a/zellij-server/src/panes/unit/grid_tests.rs b/zellij-server/src/panes/unit/grid_tests.rs
index 3fd0f958b..c85700212 100644
--- a/zellij-server/src/panes/unit/grid_tests.rs
+++ b/zellij-server/src/panes/unit/grid_tests.rs
@@ -432,6 +432,30 @@ fn insert_character_in_line_with_wide_character() {
     assert_snapshot!(format!("{:?}", grid));
 }
 
+#[test]
+fn delete_char_in_middle_of_line_with_widechar() {
+    let mut vte_parser = vte::Parser::new();
+    let mut grid = Grid::new(21, 104, Palette::default());
+    let fixture_name = "wide-chars-delete-middle";
+    let content = read_fixture(fixture_name);
+    for byte in content {
+        vte_parser.advance(&mut grid, byte);
+    }
+    assert_snapshot!(format!("{:?}", grid));
+}
+
+#[test]
+fn delete_char_in_middle_of_line_with_multiple_widechars() {
+    let mut vte_parser = vte::Parser::new();
+    let mut grid = Grid::new(21, 104, Palette::default());
+    let fixture_name = "wide-chars-delete-middle-after-multi";
+    let content = read_fixture(fixture_name);
+    for byte in content {
+        vte_parser.advance(&mut grid, byte);
+    }
+    assert_snapshot!(format!("{:?}", grid));
+}
+
 #[test]
 fn fish_wide_characters_override_clock() {
     let mut vte_parser = vte::Parser::new();
diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_multiple_widechars.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_multiple_widechars.snap
new file mode 100644
index 000000000..75c8a772c
--- /dev/null
+++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_multiple_widechars.snap
@@ -0,0 +1,7 @@
+---
+source: zellij-server/src/panes/./unit/grid_tests.rs
+expression: "format!(\"{:?}\", grid)"
+
+---
+00 (C): [aram@green zellij]$ 🏠🏠🏠                                                                            
+
diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_widechar.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_widechar.snap
new file mode 100644
index 000000000..6a442b696
--- /dev/null
+++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_widechar.snap
@@ -0,0 +1,7 @@
+---
+source: zellij-server/src/panes/./unit/grid_tests.rs
+expression: "format!(\"{:?}\", grid)"
+
+---
+00 (C): [aram@green zellij]$ 🏠 def abc                                                                        
+
