diff --git a/src/polymesh/impl/impl_low_level_api_mutable.hh b/src/polymesh/impl/impl_low_level_api_mutable.hh
index 1325e531a012a5556fb56123a0f60336a9cebb2a..d7f7b50959372d436053e1a7c1374fbf0e889045 100644
--- a/src/polymesh/impl/impl_low_level_api_mutable.hh
+++ b/src/polymesh/impl/impl_low_level_api_mutable.hh
@@ -289,7 +289,7 @@ inline void low_level_api_mutable::remove_edge(edge_index e_idx) const
     auto f1 = face_of(h_out);
 
     // remove adjacent faces
-    if (f0.is_valid())
+    if (f0.is_valid() && f0 != f1)
         remove_face(f0);
     if (f1.is_valid())
         remove_face(f1);