diff --git a/package.json b/package.json
index a4ae3cfd..f73c457b 100644
--- a/package.json
+++ b/package.json
@@ -44,8 +44,7 @@
         "eslint-plugin-simple-import-sort": "^8.0.0",
         "standalone-electron-types": "^1.0.0",
         "type-fest": "^3.1.0",
-        "typescript": "^4.8.4",
-        "yazl": "^2.5.1"
+        "typescript": "^4.8.4"
     },
     "packageManager": "pnpm@7.13.4"
 }
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5f181c3e..8a1483b6 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -15,7 +15,6 @@ specifiers:
   standalone-electron-types: ^1.0.0
   type-fest: ^3.1.0
   typescript: ^4.8.4
-  yazl: ^2.5.1
 
 dependencies:
   console-menu: 0.1.0
@@ -34,7 +33,6 @@ devDependencies:
   standalone-electron-types: 1.0.0
   type-fest: 3.1.0
   typescript: 4.8.4
-  yazl: 2.5.1
 
 packages:
 
@@ -270,10 +268,6 @@ packages:
       fill-range: 7.0.1
     dev: true
 
-  /buffer-crc32/0.2.13:
-    resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
-    dev: true
-
   /callsites/3.1.0:
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     engines: {node: '>=6'}
@@ -1182,12 +1176,6 @@ packages:
     resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
     dev: true
 
-  /yazl/2.5.1:
-    resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==}
-    dependencies:
-      buffer-crc32: 0.2.13
-    dev: true
-
   /yocto-queue/0.1.0:
     resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
     engines: {node: '>=10'}
diff --git a/scripts/build/buildWeb.mjs b/scripts/build/buildWeb.mjs
index 286aad3b..4d6cf3dc 100755
--- a/scripts/build/buildWeb.mjs
+++ b/scripts/build/buildWeb.mjs
@@ -18,9 +18,12 @@
 */
 
 
-import { createWriteStream, readFileSync } from "fs";
-import yazl from "yazl";
 import esbuild from "esbuild";
+import { zip } from "fflate";
+import { readFileSync, writeFileSync } from "fs";
+import { readFile } from "fs/promises";
+import { join } from "path";
+
 // wtf is this assert syntax
 import PackageJSON from "../../package.json" assert { type: "json" };
 import { commonOpts, fileIncludePlugin, gitHashPlugin, globPlugins } from "./common.mjs";
@@ -66,13 +69,20 @@ await Promise.all(
     ]
 );
 
-const zip = new yazl.ZipFile();
-zip.outputStream.pipe(createWriteStream("dist/extension.zip")).on("close", () => {
-    console.info("Extension written to dist/extension.zip");
+zip({
+    dist: {
+        "Vencord.js": readFileSync("dist/browser.js", "binary")
+    },
+    ...Object.fromEntries(await Promise.all(["background.js", "content.js", "manifest.json"].map(async f => [
+        f,
+        await readFile(join("browser", f), "binary")
+    ]))),
+}, {}, (err, data) => {
+    if (err) {
+        console.error(err);
+        process.exitCode = 1;
+    } else {
+        writeFileSync("dist/extension.zip", data);
+        console.info("Extension written to dist/extension.zip");
+    }
 });
-
-zip.addFile("dist/browser.js", "dist/Vencord.js");
-["background.js", "content.js", "manifest.json"].forEach(f => {
-    zip.addFile(`browser/${f}`, `${f}`);
-});
-zip.end();