diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml
index aae5b0b7020ea28ea04afbfa599ec93a4daa6c75..390f72bfaceef65fe2a39512af85a8fee5d0980e 100644
--- a/java/res/values/strings.xml
+++ b/java/res/values/strings.xml
@@ -493,6 +493,8 @@ mobile devices. [CHAR LIMIT=25] -->
     <string name="prefs_read_external_dictionary">Read external dictionary file</string>
     <!-- Title of the settings for using only personalization dictionary -->
     <string name="prefs_use_only_personalization_dictionary" translatable="false">Use only personalization dictionary</string>
+    <!-- Title of the settings for boosting personalization dictionary -->
+    <string name="prefs_boost_personalization_dictionary" translatable="false">Boost personalization dictionary</string>
     <!-- Message to show when there are no files to install as an external dictionary [CHAR LIMIT=100] -->
     <string name="read_external_dictionary_no_files_message">No dictionary files in the Downloads folder</string>
     <!-- Title of the dialog that selects a file to install as an external dictionary [CHAR LIMIT=50] -->
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index ee7478ca2b6f729217905e3a0b2d3ff36044a5d3..ae2221950649c7d9632cb618cfc145997d95c17a 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -95,6 +95,7 @@ import com.android.inputmethod.latin.utils.RecapitalizeStatus;
 import com.android.inputmethod.latin.utils.StaticInnerHandlerWrapper;
 import com.android.inputmethod.latin.utils.TargetPackageInfoGetterTask;
 import com.android.inputmethod.latin.utils.TextRange;
+import com.android.inputmethod.latin.utils.UserHistoryForgettingCurveUtils;
 import com.android.inputmethod.research.ResearchLogger;
 
 import java.io.FileDescriptor;
@@ -191,7 +192,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
     private boolean mExpectingUpdateSelection;
     private int mDeleteCount;
     private long mLastKeyTime;
-    private TreeSet<Long> mCurrentlyPressedHardwareKeys = CollectionUtils.newTreeSet();
+    private final TreeSet<Long> mCurrentlyPressedHardwareKeys = CollectionUtils.newTreeSet();
+    // Personalization debugging params
+    private boolean mUseOnlyPersonalizationDictionaryForDebug = false;
+    private boolean mBoostPersonalizationDictionaryForDebug = false;
 
     // Member variables for remembering the current device orientation.
     private int mDisplayOrientation;
@@ -874,9 +878,35 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
         // be replaced when the user dictionary reports back with the actual word, which ends
         // up calling #onWordAddedToUserDictionary() in this class.
 
+        initPersonalizationDebugSettings(currentSettingsValues);
+
         if (TRACE) Debug.startMethodTracing("/data/trace/latinime");
     }
 
+    // Initialization of personalization debug settings. This must be called inside
+    // onStartInputView.
+    private void initPersonalizationDebugSettings(SettingsValues currentSettingsValues) {
+        if (mUseOnlyPersonalizationDictionaryForDebug
+                != currentSettingsValues.mUseOnlyPersonalizationDictionaryForDebug) {
+            // Only for debug
+            initSuggest();
+            mUseOnlyPersonalizationDictionaryForDebug =
+                    currentSettingsValues.mUseOnlyPersonalizationDictionaryForDebug;
+        }
+
+        if (mBoostPersonalizationDictionaryForDebug !=
+                currentSettingsValues.mBoostPersonalizationDictionaryForDebug) {
+            // Only for debug
+            mBoostPersonalizationDictionaryForDebug =
+                    currentSettingsValues.mBoostPersonalizationDictionaryForDebug;
+            if (mBoostPersonalizationDictionaryForDebug) {
+                UserHistoryForgettingCurveUtils.boostMaxFreqForDebug();
+            } else {
+                UserHistoryForgettingCurveUtils.resetMaxFreqForDebug();
+            }
+        }
+    }
+
     // Callback for the TargetPackageInfoGetterTask
     @Override
     public void onTargetPackageInfoKnown(final PackageInfo info) {
diff --git a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
index b1cd887297d5f5f25b3794e88ce2673ed0a2872a..1b592b56521a09546254b8591a47c54a77e4f3f0 100644
--- a/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
+++ b/java/src/com/android/inputmethod/latin/settings/DebugSettings.java
@@ -39,6 +39,8 @@ public final class DebugSettings extends PreferenceFragment
     public static final String PREF_STATISTICS_LOGGING = "enable_logging";
     public static final String PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG =
             "use_only_personalization_dictionary_for_debug";
+    public static final String PREF_BOOST_PERSONALIZATION_DICTIONARY_FOR_DEBUG =
+            "boost_personalization_dictionary_for_debug";
     private static final String PREF_READ_EXTERNAL_DICTIONARY = "read_external_dictionary";
     private static final boolean SHOW_STATISTICS_LOGGING = false;
 
diff --git a/java/src/com/android/inputmethod/latin/settings/Settings.java b/java/src/com/android/inputmethod/latin/settings/Settings.java
index 20b6752578a034f4a5262916889a33fcc0c056cb..fd83865ba3ae580d251bf053f69bc3d2bca12367 100644
--- a/java/src/com/android/inputmethod/latin/settings/Settings.java
+++ b/java/src/com/android/inputmethod/latin/settings/Settings.java
@@ -346,6 +346,12 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang
                 DebugSettings.PREF_USE_ONLY_PERSONALIZATION_DICTIONARY_FOR_DEBUG, false);
     }
 
+    public static boolean readBoostPersonalizationDictionaryForDebug(
+            final SharedPreferences prefs) {
+        return prefs.getBoolean(
+                DebugSettings.PREF_BOOST_PERSONALIZATION_DICTIONARY_FOR_DEBUG, false);
+    }
+
     public void writeLastUsedPersonalizationToken(byte[] token) {
         final String tokenStr = StringUtils.byteArrayToHexString(token);
         mPrefs.edit().putString(PREF_LAST_USED_PERSONALIZATION_TOKEN, tokenStr).apply();
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
index a0b744dd24e2533d03d140771029aa9e2c256f35..674933019d4257f3a8dc7c4349eb94758deaf9e4 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsValues.java
@@ -92,6 +92,8 @@ public final class SettingsValues {
     public final int mSuggestionVisibility;
     private final boolean mVoiceKeyEnabled;
     private final boolean mVoiceKeyOnMain;
+    public final boolean mBoostPersonalizationDictionaryForDebug;
+    public final boolean mUseOnlyPersonalizationDictionaryForDebug;
 
     // Setting values for additional features
     public final int[] mAdditionalFeaturesSettingValues =
@@ -171,6 +173,10 @@ public final class SettingsValues {
         AdditionalFeaturesSettingUtils.readAdditionalFeaturesPreferencesIntoArray(
                 prefs, mAdditionalFeaturesSettingValues);
         mIsInternal = Settings.isInternal(prefs);
+        mBoostPersonalizationDictionaryForDebug =
+                Settings.readBoostPersonalizationDictionaryForDebug(prefs);
+        mUseOnlyPersonalizationDictionaryForDebug =
+                Settings.readUseOnlyPersonalizationDictionaryForDebug(prefs);
     }
 
     // Only for tests
@@ -216,6 +222,8 @@ public final class SettingsValues {
         mCorrectionEnabled = mAutoCorrectEnabled && !mInputAttributes.mInputTypeNoAutoCorrect;
         mSuggestionVisibility = 0;
         mIsInternal = false;
+        mBoostPersonalizationDictionaryForDebug = false;
+        mUseOnlyPersonalizationDictionaryForDebug = false;
     }
 
     @UsedForTesting
diff --git a/java/src/com/android/inputmethod/latin/utils/UserHistoryForgettingCurveUtils.java b/java/src/com/android/inputmethod/latin/utils/UserHistoryForgettingCurveUtils.java
index 713a45bda1cfe553ac7845b102a7de6e35cc348d..1992b2f5d171754405f1e6bf5b97069fb509d930 100644
--- a/java/src/com/android/inputmethod/latin/utils/UserHistoryForgettingCurveUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/UserHistoryForgettingCurveUtils.java
@@ -23,7 +23,9 @@ import java.util.concurrent.TimeUnit;
 public final class UserHistoryForgettingCurveUtils {
     private static final String TAG = UserHistoryForgettingCurveUtils.class.getSimpleName();
     private static final boolean DEBUG = false;
-    private static final int FC_FREQ_MAX = 127;
+    private static final int DEFAULT_FC_FREQ = 127;
+    private static final int BOOSTED_FC_FREQ = 200;
+    private static int FC_FREQ_MAX = DEFAULT_FC_FREQ;
     /* package */ static final int COUNT_MAX = 3;
     private static final int FC_LEVEL_MAX = 3;
     /* package */ static final int ELAPSED_TIME_MAX = 15;
@@ -33,6 +35,14 @@ public final class UserHistoryForgettingCurveUtils {
     private static final int HALF_LIFE_HOURS = 48;
     private static final int MAX_PUSH_ELAPSED = (FC_LEVEL_MAX + 1) * (ELAPSED_TIME_MAX + 1);
 
+    public static void boostMaxFreqForDebug() {
+        FC_FREQ_MAX = BOOSTED_FC_FREQ;
+    }
+
+    public static void resetMaxFreqForDebug() {
+        FC_FREQ_MAX = DEFAULT_FC_FREQ;
+    }
+
     private UserHistoryForgettingCurveUtils() {
         // This utility class is not publicly instantiable.
     }