3.1.28
diff --git a/bazel/emscripten_deps.bzl b/bazel/emscripten_deps.bzl
index 5068fe0..b1dae17 100644
--- a/bazel/emscripten_deps.bzl
+++ b/bazel/emscripten_deps.bzl
@@ -52,7 +52,6 @@
     name = "linker_files",
     srcs = [
         "bin/clang{bin_extension}",
-        "bin/llc{bin_extension}",
         "bin/llvm-ar{bin_extension}",
         "bin/llvm-nm{bin_extension}",
         "bin/llvm-objcopy{bin_extension}",
diff --git a/bazel/revisions.bzl b/bazel/revisions.bzl
index c67b63b..1fb1656 100644
--- a/bazel/revisions.bzl
+++ b/bazel/revisions.bzl
@@ -2,6 +2,13 @@
 # DO NOT MODIFY
 
 EMSCRIPTEN_TAGS = {
+    "3.1.28": struct(
+        hash = "30b9e46ddcea66e91530559379089002d8b692cf",
+        sha_linux = "c23426d8b6d94cea702542c39e3bcef9439425dd4bd03bcc172e291dbbe5ed0d",
+        sha_mac = "4cfb918fe3233a2b31e5734e85b2a365e634f4e8a83c4390e8595cb98ae6bd8c",
+        sha_mac_arm64 = "a47f1f09bc7bbd4952cf54445d4fbfae53623ecbfecee0506a637665c7b4ea4c",
+        sha_win = "4388d230871d5b1e15c2fd0db21a792ab2836f23d860475fe183c03c5db75c8c",
+    ),
     "3.1.27": struct(
         hash = "48ce0b44015d0182fc8c27aa9fbc0a4474b55982",
         sha_linux = "4dc872260c8f42a8e20c8612b2255adbd466fec54cfbe37b46eca4eb34a2b03f",
diff --git a/emscripten-releases-tags.json b/emscripten-releases-tags.json
index f970287..42cb0fb 100644
--- a/emscripten-releases-tags.json
+++ b/emscripten-releases-tags.json
@@ -1,6 +1,6 @@
 {
   "aliases": {
-    "latest": "3.1.27",
+    "latest": "3.1.28",
     "latest-sdk": "latest",
     "latest-arm64-linux": "3.1.21",
     "latest-64bit": "latest",
@@ -10,6 +10,8 @@
     "latest-releases-upstream": "latest"
   },
   "releases": {
+    "3.1.28": "30b9e46ddcea66e91530559379089002d8b692cf",
+    "3.1.28-asserts": "19871a9ea4914d63749b8d4d170e27a8854cb565",
     "3.1.27": "48ce0b44015d0182fc8c27aa9fbc0a4474b55982",
     "3.1.27-asserts": "630810e5a312f57d17efbe384ed7e4299f796bc1",
     "3.1.26": "4f68bb2a505c727bcf58195cf4da20592a6e92c8",