diff --git a/fuzzers/BUILD.gn b/fuzzers/BUILD.gn
index 890507a..e42be8a 100644
--- a/fuzzers/BUILD.gn
+++ b/fuzzers/BUILD.gn
@@ -106,6 +106,11 @@
   }
 
   if (tint_build_wgsl_reader && tint_build_msl_writer) {
+    fuzzer_test("tint_msl_transform_fuzzer") {
+      sources = [ "tint_msl_transform_fuzzer.cc" ]
+      deps = [ ":tint_fuzzer_common" ]
+    }
+
     fuzzer_test("tint_wgsl_reader_msl_writer_fuzzer") {
       sources = [ "tint_wgsl_reader_msl_writer_fuzzer.cc" ]
       deps = [ ":tint_fuzzer_common" ]
@@ -183,7 +188,10 @@
       ]
     }
     if (tint_build_wgsl_reader && tint_build_msl_writer) {
-      deps += [ ":tint_wgsl_reader_msl_writer_fuzzer" ]
+      deps += [
+        ":tint_msl_transform_fuzzer",
+        ":tint_wgsl_reader_msl_writer_fuzzer",
+      ]
     }
     if (tint_build_spv_reader) {
       deps += [ ":tint_spv_reader_fuzzer" ]
diff --git a/fuzzers/CMakeLists.txt b/fuzzers/CMakeLists.txt
index 08086e0..78958de 100644
--- a/fuzzers/CMakeLists.txt
+++ b/fuzzers/CMakeLists.txt
@@ -46,6 +46,7 @@
 
 if (${TINT_BUILD_WGSL_READER} AND ${TINT_BUILD_MSL_WRITER})
   add_tint_fuzzer(tint_wgsl_reader_msl_writer_fuzzer)
+  add_tint_fuzzer(tint_msl_transform_fuzzer)
 endif()
 
 if (${TINT_BUILD_SPV_READER})
diff --git a/fuzzers/tint_all_transforms_fuzzer.cc b/fuzzers/tint_all_transforms_fuzzer.cc
index 5efe17b..d524610 100644
--- a/fuzzers/tint_all_transforms_fuzzer.cc
+++ b/fuzzers/tint_all_transforms_fuzzer.cc
@@ -80,6 +80,25 @@
   }
 #endif  // TINT_BUILD_HLSL_WRITER
 
+#if TINT_BUILD_MSL_WRITER
+  {
+    Config config;
+    config.data = data;
+    config.size = size;
+
+    if (!AddPlatformIndependentPasses(&config)) {
+      return 0;
+    }
+
+    config.manager.Add<transform::Msl>();
+
+    fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kMSL);
+    fuzzer.SetTransformManager(&config.manager, std::move(config.inputs));
+
+    fuzzer.Run(config.data, config.size);
+  }
+#endif  // TINT_BUILD_MSL_WRITER
+
   return 0;
 }
 
diff --git a/fuzzers/tint_msl_transform_fuzzer.cc b/fuzzers/tint_msl_transform_fuzzer.cc
new file mode 100644
index 0000000..250dfbe
--- /dev/null
+++ b/fuzzers/tint_msl_transform_fuzzer.cc
@@ -0,0 +1,31 @@
+// Copyright 2021 The Tint Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "fuzzers/tint_common_fuzzer.h"
+
+namespace tint {
+namespace fuzzers {
+
+extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+  transform::Manager transform_manager;
+  transform_manager.Add<transform::Msl>();
+
+  fuzzers::CommonFuzzer fuzzer(InputFormat::kWGSL, OutputFormat::kMSL);
+  fuzzer.SetTransformManager(&transform_manager, {});
+
+  return fuzzer.Run(data, size);
+}
+
+}  // namespace fuzzers
+}  // namespace tint
