diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 3e3cf76f1e396102b598563a1e7ca5df935d20bb..5e2a04124c31ac0abee09906e763df7219576c32 100644
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -233,7 +233,7 @@ public class Suggest {
         // the current settings. It may also be useful to know, when the setting is off, whether
         // the word *would* have been auto-corrected.
         if (!isCorrectionEnabled || !allowsToBeAutoCorrected || !wordComposer.isComposingWord()
-                || suggestionsSet.isEmpty()
+                || suggestionsSet.isEmpty() || wordComposer.hasDigits()
                 || wordComposer.isMostlyCaps() || wordComposer.isResumed()
                 || !hasMainDictionary()) {
             // If we don't have a main dictionary, we never want to auto-correct. The reason for
diff --git a/java/src/com/android/inputmethod/latin/WordComposer.java b/java/src/com/android/inputmethod/latin/WordComposer.java
index 6d346d1794750b8ee6e655013b3459ae7aa10857..5606a58e4f14308e954abef3be3104fc2c7976db 100644
--- a/java/src/com/android/inputmethod/latin/WordComposer.java
+++ b/java/src/com/android/inputmethod/latin/WordComposer.java
@@ -41,6 +41,7 @@ public class WordComposer {
 
     // Cache these values for performance
     private int mCapsCount;
+    private int mDigitsCount;
     private boolean mAutoCapitalized;
     private int mTrailingSingleQuotesCount;
     private int mCodePointSize;
@@ -65,6 +66,7 @@ public class WordComposer {
         mTypedWord = new StringBuilder(source.mTypedWord);
         mInputPointers.copy(source.mInputPointers);
         mCapsCount = source.mCapsCount;
+        mDigitsCount = source.mDigitsCount;
         mIsFirstCharCapitalized = source.mIsFirstCharCapitalized;
         mAutoCapitalized = source.mAutoCapitalized;
         mTrailingSingleQuotesCount = source.mTrailingSingleQuotesCount;
@@ -80,6 +82,7 @@ public class WordComposer {
         mTypedWord.setLength(0);
         mAutoCorrection = null;
         mCapsCount = 0;
+        mDigitsCount = 0;
         mIsFirstCharCapitalized = false;
         mTrailingSingleQuotesCount = 0;
         mIsResumed = false;
@@ -141,6 +144,7 @@ public class WordComposer {
         mIsFirstCharCapitalized = isFirstCharCapitalized(
                 newIndex, primaryCode, mIsFirstCharCapitalized);
         if (Character.isUpperCase(primaryCode)) mCapsCount++;
+        if (Character.isDigit(primaryCode)) mDigitsCount++;
         if (Keyboard.CODE_SINGLE_QUOTE == primaryCode) {
             ++mTrailingSingleQuotesCount;
         } else {
@@ -213,6 +217,7 @@ public class WordComposer {
                 mTypedWord.deleteCharAt(stringBuilderLength - 1);
             }
             if (Character.isUpperCase(lastChar)) mCapsCount--;
+            if (Character.isDigit(lastChar)) mDigitsCount--;
             refreshSize();
         }
         // We may have deleted the last one.
@@ -267,6 +272,13 @@ public class WordComposer {
         return mCapsCount > 1;
     }
 
+    /**
+     * Returns true if we have digits in the composing word.
+     */
+    public boolean hasDigits() {
+        return mDigitsCount > 0;
+    }
+
     /**
      * Saves the reason why the word is capitalized - whether it was automatic or
      * due to the user hitting shift in the middle of a sentence.
@@ -322,6 +334,7 @@ public class WordComposer {
             lastComposedWord.deactivate();
         }
         mCapsCount = 0;
+        mDigitsCount = 0;
         mIsBatchMode = false;
         mTypedWord.setLength(0);
         mTrailingSingleQuotesCount = 0;