diff --git a/python_payload/apps/fil3s/reader.py b/python_payload/apps/fil3s/reader.py
index 1949722b5c8923729862ac6c582f645cc8ac6ea2..f7866168cd55a1471f73530d78bd62d0b7c66a79 100644
--- a/python_payload/apps/fil3s/reader.py
+++ b/python_payload/apps/fil3s/reader.py
@@ -1,4 +1,5 @@
 import os
+import gc
 import media
 
 from ctx import Context
@@ -21,6 +22,7 @@ class Reader(ActionView):
     has_error: bool = False
     is_media: bool = False
     content: str
+    error_message: str
     viewport_offset = (0.0, 0.0)
     zoom_enabled = False
 
@@ -34,6 +36,7 @@ class Reader(ActionView):
         update_path: Callable[[str], None],
     ) -> None:
         super().__init__()
+        gc.collect()
 
         self.scroll_x = CapScrollController()
         self.scroll_y = CapScrollController()
@@ -158,9 +161,9 @@ class Reader(ActionView):
         ctx.move_to(0, -10)
         ctx.text("Can't read file")
 
-        if not self.is_media:
+        if not self.is_media and self.error_message:
             ctx.move_to(0, 20)
-            ctx.text("(Not UTF-8?)")
+            ctx.text(self.error_message)
 
         ctx.restore()
 
@@ -175,7 +178,7 @@ class Reader(ActionView):
         else:
             ctx.font_size = 16
         ctx.move_to(self.viewport_offset[0], self.viewport_offset[1])
-        ctx.text(f"{self.content}")
+        ctx.text(self.content)
         ctx.restore()
 
     def _draw_media(self, ctx: Context) -> None:
@@ -196,16 +199,22 @@ class Reader(ActionView):
         try:
             with open(self.path, "r", encoding="utf-8") as f:
                 self.content = f.read()
-        except:
+        except Exception:
             self.has_error = True
 
     def _check_file(self) -> bool:
+        # Disallow files above 10KiB to avoid crashes
+        if os.stat(self.path)[6] > 10 * 1024:
+            self.error_message = "(Too big, >10KiB)"
+            return False
+
         # Dumb way to check if file is UTF-8 only
         try:
             with open(self.path, "r", encoding="utf-8") as f:
                 f.read(100)
             return True
         except UnicodeError:
+            self.error_message = "(Not UTF-8?)"
             return False
 
     def _is_media(self) -> bool:
@@ -215,5 +224,6 @@ class Reader(ActionView):
         return False
 
     def on_exit(self):
+        gc.collect()
         if self.is_media:
             media.stop()