diff --git a/aom/aomcx.h b/aom/aomcx.h
index 4ba4248..80b0926 100644
--- a/aom/aomcx.h
+++ b/aom/aomcx.h
@@ -1207,6 +1207,13 @@
    * 0 : off, 1 : on
    */
   AV1E_SET_DISABLE_ML_PARTITION_SPEED_FEATURES = 157,
+
+  /*!\brief Codec control function to disable ML based transform search speed
+   * features.
+   *
+   * 0 : off, 1 : on
+   */
+  AV1E_SET_DISABLE_ML_TX_SPEED_FEATURES = 158,
 };
 
 /*!\brief aom 1-D scaling mode
@@ -1415,6 +1422,9 @@
 AOM_CTRL_USE_TYPE(AV1E_SET_DISABLE_ML_PARTITION_SPEED_FEATURES, int)
 #define AOM_CTRL_AV1E_SET_DISABLE_ML_PARTITION_SPEED_FEATURES
 
+AOM_CTRL_USE_TYPE(AV1E_SET_DISABLE_ML_TX_SPEED_FEATURES, int)
+#define AOM_CTRL_AV1E_SET_DISABLE_ML_TX_SPEED_FEATURES
+
 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RECT_PARTITIONS, int)
 #define AOM_CTRL_AV1E_SET_ENABLE_RECT_PARTITIONS
 
diff --git a/apps/aomenc.c b/apps/aomenc.c
index 4b295f4..beeb6e6 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -447,6 +447,10 @@
     ARG_DEF(NULL, "disable-ml-partition-speed-features", 1,
             "Disable ML partition speed features "
             "(0: false (default), 1: true)");
+static const arg_def_t disable_ml_tx_speed_features =
+    ARG_DEF(NULL, "disable-ml-tx-speed-features", 1,
+            "Disable ML transform speed features "
+            "(0: false (default), 1: true)");
 static const arg_def_t enable_rect_partitions =
     ARG_DEF(NULL, "enable-rect-partitions", 1,
             "Enable rectangular partitions "
@@ -850,6 +854,7 @@
                                        &lossless,
                                        &enable_cdef,
                                        &enable_restoration,
+                                       &disable_ml_tx_speed_features,
                                        &disable_ml_partition_speed_features,
                                        &enable_rect_partitions,
                                        &enable_ab_partitions,
@@ -962,6 +967,7 @@
   AV1E_SET_LOSSLESS,
   AV1E_SET_ENABLE_CDEF,
   AV1E_SET_ENABLE_RESTORATION,
+  AV1E_SET_DISABLE_ML_TX_SPEED_FEATURES,
   AV1E_SET_DISABLE_ML_PARTITION_SPEED_FEATURES,
   AV1E_SET_ENABLE_RECT_PARTITIONS,
   AV1E_SET_ENABLE_AB_PARTITIONS,
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 983b49e..21169f5 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -95,6 +95,7 @@
   const char *film_grain_table_filename;
   unsigned int motion_vector_unit_test;
   unsigned int cdf_update_mode;
+  int disable_ml_tx_speed_features;
   int disable_ml_partition_speed_features;
   int enable_rect_partitions;  // enable rectangular partitions for sequence
   int enable_ab_partitions;    // enable AB partitions for sequence
@@ -222,6 +223,7 @@
   0,                            // film_grain_table_filename
   0,                            // motion_vector_unit_test
   1,                            // CDF update mode
+  0,                            // disable ML based transform speed up features
   0,                            // disable ML based partition speed up features
   1,                            // enable rectangular partitions
   1,                            // enable ab shape partitions
@@ -947,6 +949,7 @@
   oxcf->monochrome = cfg->monochrome;
   oxcf->full_still_picture_hdr = cfg->full_still_picture_hdr;
   oxcf->enable_dual_filter = extra_cfg->enable_dual_filter;
+  oxcf->disable_ml_tx_speed_features = extra_cfg->disable_ml_tx_speed_features;
   oxcf->disable_ml_partition_speed_features =
 #if CONFIG_EXT_RECUR_PARTITIONS
       1;
@@ -1394,6 +1397,14 @@
   return update_extra_cfg(ctx, &extra_cfg);
 }
 
+static aom_codec_err_t ctrl_set_disable_ml_tx_speed_features(
+    aom_codec_alg_priv_t *ctx, va_list args) {
+  struct av1_extracfg extra_cfg = ctx->extra_cfg;
+  extra_cfg.disable_ml_tx_speed_features =
+      CAST(AV1E_SET_DISABLE_ML_TX_SPEED_FEATURES, args);
+  return update_extra_cfg(ctx, &extra_cfg);
+}
+
 static aom_codec_err_t ctrl_set_disable_ml_partition_speed_features(
     aom_codec_alg_priv_t *ctx, va_list args) {
   struct av1_extracfg extra_cfg = ctx->extra_cfg;
@@ -2674,6 +2685,8 @@
   { AV1E_SET_FRAME_PARALLEL_DECODING, ctrl_set_frame_parallel_decoding_mode },
   { AV1E_SET_ERROR_RESILIENT_MODE, ctrl_set_error_resilient_mode },
   { AV1E_SET_S_FRAME_MODE, ctrl_set_s_frame_mode },
+  { AV1E_SET_DISABLE_ML_TX_SPEED_FEATURES,
+    ctrl_set_disable_ml_tx_speed_features },
   { AV1E_SET_DISABLE_ML_PARTITION_SPEED_FEATURES,
     ctrl_set_disable_ml_partition_speed_features },
   { AV1E_SET_ENABLE_RECT_PARTITIONS, ctrl_set_enable_rect_partitions },
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 19bdf0a..19174ee 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -368,6 +368,7 @@
   int enable_dual_filter;
   unsigned int motion_vector_unit_test;
   unsigned int sb_multipass_unit_test;
+  int disable_ml_tx_speed_features;
   int disable_ml_partition_speed_features;
   int enable_rect_partitions;
   int enable_ab_partitions;
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index d304532..0077a0f 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -711,6 +711,11 @@
   }
 }
 
+static void av1_disable_ml_based_tx_sf(SPEED_FEATURES *const sf) {
+  sf->tx_type_search.prune_mode = NO_PRUNE;
+  sf->tx_type_search.ml_tx_split_thresh = -1;
+}
+
 static void av1_disable_ml_based_partition_sf(SPEED_FEATURES *const sf) {
   sf->ml_prune_4_partition = 0;
   sf->ml_prune_ab_partition = 0;
@@ -743,6 +748,7 @@
 
   if (oxcf->disable_ml_partition_speed_features)
     av1_disable_ml_based_partition_sf(sf);
+  if (oxcf->disable_ml_tx_speed_features) av1_disable_ml_based_tx_sf(sf);
 }
 
 void av1_set_speed_features_framesize_independent(AV1_COMP *cpi, int speed) {
