diff --git a/static/webui/index.html b/static/webui/index.html
index 5d037980..eb455a18 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -199,6 +199,12 @@
                                 
                             
                         
+                        
+                            
+                            
+                                
+                            
+                        
 
                     
                 
             
diff --git a/static/webui/script.js b/static/webui/script.js
index 68dd9db1..0c023d44 100644
--- a/static/webui/script.js
+++ b/static/webui/script.js
@@ -1077,6 +1077,50 @@ function doHelminthUnlockAll() {
     });
 }
 
+function doAddAllMods() {
+    let modsAll = new Set();
+    for (const child of document.getElementById("datalist-mods").children) {
+        modsAll.add(child.getAttribute("data-key"));
+    }
+
+    revalidateAuthz(() => {
+        const req = $.get("/api/inventory.php?" + window.authz + "&xpBasedLevelCapDisabled=1");
+        req.done(data => {
+            for (const modOwned of data.RawUpgrades) {
+                if (modOwned.ItemCount ?? 1 > 0) {
+                    modsAll.delete(modOwned.ItemType);
+                }
+            }
+
+            modsAll = Array.from(modsAll);
+            if (
+                modsAll.length != 0 &&
+                window.confirm("Are you sure you want to add " + modsAll.length + " mods to your account?")
+            ) {
+                // Batch to avoid PayloadTooLargeError
+                const batches = [];
+                for (let i = 0; i < modsAll.length; i += 1000) {
+                    batches.push(modsAll.slice(i, i + 1000));
+                }
+                batches.forEach(batch => {
+                    $.post({
+                        url: "/api/missionInventoryUpdate.php?" + window.authz,
+                        contentType: "text/plain",
+                        data: JSON.stringify({
+                            RawUpgrades: batch.map(mod => ({
+                                ItemType: mod,
+                                ItemCount: 21 // To fully upgrade certain arcanes
+                            }))
+                        })
+                    }).done(function () {
+                        updateInventory();
+                    });
+                });
+            }
+        });
+    });
+}
+
 // Powersuit Route
 
 single.getRoute("#powersuit-route").on("beforeload", function () {