diff --git a/overcooked_simulator/gui_2d_vis/overcooked_gui.py b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
index 4f20e235b9cadec6765e52b280be5b0a899363ea..b6a62b5b5f693675560b02fb283e3e7d616277da 100644
--- a/overcooked_simulator/gui_2d_vis/overcooked_gui.py
+++ b/overcooked_simulator/gui_2d_vis/overcooked_gui.py
@@ -605,20 +605,22 @@ class PyGameGUI:
         self.update_score_label(state)
 
         if state["info_msg"]:
-            text_surface = self.comic_sans.render(
-                state["info_msg"][0][0],
-                antialias=True,
-                color=(0, 0, 0)
-                if state["info_msg"][0][1] == "Normal"
-                else (
-                    (255, 0, 0) if state["info_msg"][0][1] == "Warning" else (0, 255, 0)
-                ),
-                # bgcolor=(255, 255, 255),
-            )
-            self.main_window.blit(
-                text_surface,
-                (self.window_width / 4, self.window_height - self.screen_margin + 5),
-            )
+            for idx, msg in enumerate(reversed(state["info_msg"])):
+                text_surface = self.comic_sans.render(
+                    msg[0],
+                    antialias=True,
+                    color=(0, 0, 0)
+                    if msg[1] == "Normal"
+                    else ((255, 0, 0) if msg[1] == "Warning" else (0, 255, 0)),
+                    # bgcolor=(255, 255, 255),
+                )
+                self.main_window.blit(
+                    text_surface,
+                    (
+                        self.window_width / 4,
+                        self.window_height - self.screen_margin + 5 + (20 * idx),
+                    ),
+                )
 
     def set_window_size(self):
         self.game_screen = pygame.Surface(
diff --git a/overcooked_simulator/info_msg.py b/overcooked_simulator/info_msg.py
index 9f88f5ff250dc0e4fb6774c93be4f84f53000d5d..f65385b8aeb765c6b02102d4052dc43f2ca71ecb 100644
--- a/overcooked_simulator/info_msg.py
+++ b/overcooked_simulator/info_msg.py
@@ -26,3 +26,14 @@ class InfoMsgManager:
                     "level": self.level,
                 }
             )
+        self.remove_old_msgs(env)
+
+    @staticmethod
+    def remove_old_msgs(env: Environment):
+        for player_id, msgs in env.info_msgs_per_player.items():
+            delete_msgs = []
+            for idx, msg in enumerate(msgs):
+                if msg["end_time"] < env.env_time:
+                    delete_msgs.append(idx)
+            for idx in reversed(delete_msgs):
+                msgs.pop(idx)