diff --git a/app/app.py b/app/app.py
index 0e53a8883753cca15c51d40681cf1259dca47200..f39ec7687eb3d74a3d32092917fcd8c9ba72d1af 100644
--- a/app/app.py
+++ b/app/app.py
@@ -14,13 +14,23 @@ from translatehtml import translate_html
 from werkzeug.utils import secure_filename
 
 from app import flood
+from app import remove_translated_files
 from app.language import detect_languages, transliterate
 from .api_keys import Database
 from .suggestions import Database as SuggestionsDatabase
 
 
 def get_upload_dir():
-    return os.path.join(tempfile.gettempdir(), "libretranslate-files-translate")
+    upload_dir = os.path.join(tempfile.gettempdir(), "libretranslate-files-translate")
+
+    if not os.path.isdir(upload_dir):
+        os.mkdir(upload_dir)
+
+    return upload_dir
+
+
+remove_translated_files.setup(get_upload_dir())
+
 
 def get_json_dict(request):
     d = request.get_json()
@@ -610,7 +620,7 @@ def create_app(args):
             return_data.write(fo.read())
         return_data.seek(0)
 
-        os.remove(filepath)
+        print(filename)
 
         return send_file(return_data, attachment_filename=filename)
 
diff --git a/app/remove_translated_files.py b/app/remove_translated_files.py
new file mode 100644
index 0000000000000000000000000000000000000000..c354b1aba4dd7bf470c2df7be0372e7e17cfca5e
--- /dev/null
+++ b/app/remove_translated_files.py
@@ -0,0 +1,26 @@
+import atexit
+import os
+import time
+from datetime import datetime
+
+from apscheduler.schedulers.background import BackgroundScheduler
+
+
+def remove_translated_files(upload_dir: str):
+    now = time.mktime(datetime.now().timetuple())
+
+    for f in os.listdir(upload_dir):
+        f = os.path.join(upload_dir, f)
+        if os.path.isfile(f):
+            f_time = os.path.getmtime(f)
+            if (now - f_time) > 1800:  # 30 minutes
+                os.remove(f)
+
+
+def setup(upload_dir):
+    scheduler = BackgroundScheduler(daemon=True)
+    scheduler.add_job(remove_translated_files, "interval", minutes=30, kwargs={'upload_dir': upload_dir})
+    scheduler.start()
+
+    # Shut down the scheduler when exiting the app
+    atexit.register(lambda: scheduler.shutdown())