diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index f14ec03..be09a1f 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -5038,7 +5038,7 @@
 
   cm->allow_intrabc &= (cpi->oxcf.enable_intrabc);
 
-  if (cpi->oxcf.pass != 1 && av1_use_hash_me(cm) &&
+  if (cpi->oxcf.pass != 1 && av1_use_hash_me(cpi) &&
       !cpi->sf.use_nonrd_pick_mode) {
     // add to hash table
     const int pic_width = cpi->source->y_crop_width;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 6813da3..086887d 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -5532,8 +5532,6 @@
   aom_clear_system_state();
   // check use hash ME
   int k;
-  uint32_t hash_value_1;
-  uint32_t hash_value_2;
 
   const int block_size = FORCE_INT_MV_DECISION_BLOCK_SIZE;
   const double threshold_current = 0.8;
@@ -5596,14 +5594,15 @@
         S++;
         continue;
       }
-
-      av1_get_block_hash_value(
-          cur_picture->y_buffer + y_pos * stride_cur + x_pos, stride_cur,
-          block_size, &hash_value_1, &hash_value_2,
-          (cur_picture->flags & YV12_FLAG_HIGHBITDEPTH), &cpi->td.mb);
-      // Hashing does not work for highbitdepth currently.
-      // TODO(Roger): Make it work for highbitdepth.
-      if (av1_use_hash_me(&cpi->common)) {
+      if (av1_use_hash_me(cpi)) {
+        uint32_t hash_value_1;
+        uint32_t hash_value_2;
+        av1_get_block_hash_value(
+            cur_picture->y_buffer + y_pos * stride_cur + x_pos, stride_cur,
+            block_size, &hash_value_1, &hash_value_2,
+            (cur_picture->flags & YV12_FLAG_HIGHBITDEPTH), &cpi->td.mb);
+        // Hashing does not work for highbitdepth currently.
+        // TODO(Roger): Make it work for highbitdepth.
         if (av1_has_exact_match(last_hash_table, hash_value_1, hash_value_2)) {
           M++;
         }
@@ -6064,7 +6063,7 @@
   // Store encoded frame's hash table for in_integer_mv() next time.
   // Beware! If we don't update previous_hash_table here we will leak the
   // items stored in cur_frame's hash_table!
-  if (oxcf->pass != 1 && av1_use_hash_me(cm)) {
+  if (oxcf->pass != 1 && av1_use_hash_me(cpi)) {
     cpi->previous_hash_table = &cm->cur_frame->hash_table;
     cpi->need_to_clear_prev_hash_table = 1;
   }
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index b54e58d..95f7035 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -1263,8 +1263,8 @@
 }
 
 // TODO(huisu@google.com, youzhou@microsoft.com): enable hash-me for HBD.
-static INLINE int av1_use_hash_me(const AV1_COMMON *const cm) {
-  return cm->allow_screen_content_tools;
+static INLINE int av1_use_hash_me(const AV1_COMP *const cpi) {
+  return (cpi->common.allow_screen_content_tools && !cpi->sf.disable_hash_me);
 }
 
 static INLINE hash_table *av1_get_ref_frame_hash_map(
diff --git a/av1/encoder/mcomp.c b/av1/encoder/mcomp.c
index 921d52a..ee27d1d 100644
--- a/av1/encoder/mcomp.c
+++ b/av1/encoder/mcomp.c
@@ -2415,7 +2415,7 @@
 
   // Use hash-me for intrablock copy
   do {
-    if (!intra || !av1_use_hash_me(&cpi->common)) break;
+    if (!intra || !av1_use_hash_me(cpi)) break;
 
     // already single ME
     // get block size and original buffer of current block
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index c3b6ecb..f9404ef 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -282,6 +282,9 @@
 
   if (speed >= 1) {
     sf->selective_ref_frame = 2;
+    // TODO(any): Experiment with this speed feature for speed=0 and clean-up
+    // the code altogether.
+    sf->disable_hash_me = frame_is_intra_only(cm) ? 0 : 1;
 
     sf->prune_ref_frame_for_gm_search = boosted ? 0 : 1;
     sf->intra_tx_size_search_init_depth_rect = 1;
@@ -821,6 +824,7 @@
   sf->use_intra_txb_hash = 0;
   sf->use_inter_txb_hash = 1;
   sf->use_mb_rd_hash = 1;
+  sf->disable_hash_me = 0;
   sf->optimize_b_precheck = 0;
   sf->use_dist_wtd_comp_flag = DIST_WTD_COMP_ENABLED;
   sf->reuse_inter_intra_mode = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index bf6cd1e..96eaf5f 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -561,6 +561,10 @@
   // to avoid repeated search on the same residue signal.
   int use_mb_rd_hash;
 
+  // Use to control hash generation and use of the same
+  // Applicable only for screen contents
+  int disable_hash_me;
+
   // Calculate RD cost before doing optimize_b, and skip if the cost is large.
   int optimize_b_precheck;
 
