diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowUpdateNotifyActivity.kt b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowUpdateNotifyActivity.kt
index df4120d..6e7f218 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowUpdateNotifyActivity.kt
+++ b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/RainbowUpdateNotifyActivity.kt
@@ -39,7 +39,7 @@ class RainbowUpdateNotifyActivity : StartupActivity {
     }
 
     companion object {
-        private const val pluginId = "izhangzhihao.rainbow.brackets"
+        const val pluginId = "izhangzhihao.rainbow.brackets"
 
 
         private val updateContent: String by lazy {
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt
index b7e6562..eaf1645 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt
+++ b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowConfigurable.kt
@@ -41,6 +41,7 @@ class RainbowConfigurable : Configurable {
         settings.useColorGenerator = settingsForm?.useColorGenerator() ?: false
         settings.rainbowifyTagNameInXML = settingsForm?.rainbowifyTagNameInXML() ?: false
         settings.doNOTRainbowifyTemplateString = settingsForm?.doNOTRainbowifyTemplateString() ?: false
+        settings.doNOTRainbowifyBigFiles = settingsForm?.doNOTRainbowifyBigFiles() ?: true
     }
 
     override fun reset() {
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt
index 7b4fc15..08563b1 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt
+++ b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/RainbowSettings.kt
@@ -38,6 +38,7 @@ class RainbowSettings : PersistentStateComponent<RainbowSettings> {
     var showNotificationOnUpdate = true
     var rainbowifyTagNameInXML = false
     var doNOTRainbowifyTemplateString = false
+    var doNOTRainbowifyBigFiles = true
 
     @Suppress("MemberVisibilityCanBePrivate")
     var languageBlacklist: Array<String> = arrayOf()
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form
index 9c9f455..faf8e50 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form
+++ b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.form
@@ -8,7 +8,7 @@
     <properties/>
     <border type="none"/>
     <children>
-      <grid id="fd26e" binding="appearancePanel" layout-manager="GridLayoutManager" row-count="16" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
+      <grid id="fd26e" binding="appearancePanel" layout-manager="GridLayoutManager" row-count="17" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
         <margin top="0" left="0" bottom="0" right="0"/>
         <constraints>
           <grid row="0" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
@@ -99,7 +99,7 @@
           </component>
           <component id="9d54" class="javax.swing.JLabel">
             <constraints>
-              <grid row="15" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+              <grid row="16" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
             </constraints>
             <properties>
               <text value="Number of colors "/>
@@ -107,7 +107,7 @@
           </component>
           <component id="b2481" class="javax.swing.JTextField" binding="numberOfColors">
             <constraints>
-              <grid row="15" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
+              <grid row="16" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
                 <preferred-size width="150" height="-1"/>
               </grid>
             </constraints>
@@ -156,6 +156,14 @@
               <text value="Do NOT rainbowify template string"/>
             </properties>
           </component>
+          <component id="454cb" class="javax.swing.JCheckBox" binding="doNOTRainbowifyBigFiles">
+            <constraints>
+              <grid row="15" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
+            </constraints>
+            <properties>
+              <text value="Do NOT rainbowify big files"/>
+            </properties>
+          </component>
         </children>
       </grid>
       <vspacer id="9e387">
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt
index 8713b30..dadc159 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt
+++ b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/settings/form/RainbowSettingsForm.kt
@@ -31,6 +31,8 @@ class RainbowSettingsForm {
 
     private var doNOTRainbowifyTemplateString: JCheckBox? = null
 
+    private var doNOTRainbowifyBigFiles: JCheckBox? = null
+
     private val settings: RainbowSettings = RainbowSettings.instance
 
     fun component(): JComponent? = panel
@@ -67,6 +69,8 @@ class RainbowSettingsForm {
 
     fun doNOTRainbowifyTemplateString() = doNOTRainbowifyTemplateString?.isSelected
 
+    fun doNOTRainbowifyBigFiles() = doNOTRainbowifyBigFiles?.isSelected
+
     val isModified: Boolean
         get() = (isRainbowEnabled() != settings.isRainbowEnabled
                 || isRainbowAngleBracketsEnabled() != settings.isEnableRainbowAngleBrackets
@@ -84,6 +88,7 @@ class RainbowSettingsForm {
                 || useColorGenerator() != settings.useColorGenerator
                 || rainbowifyTagNameInXML() != settings.rainbowifyTagNameInXML
                 || doNOTRainbowifyTemplateString() != settings.doNOTRainbowifyTemplateString
+                || doNOTRainbowifyBigFiles() != settings.doNOTRainbowifyBigFiles
                 )
 
     init {
@@ -107,5 +112,6 @@ class RainbowSettingsForm {
         useColorGenerator?.isSelected = settings.useColorGenerator
         rainbowifyTagNameInXML?.isSelected = settings.rainbowifyTagNameInXML
         doNOTRainbowifyTemplateString?.isSelected = settings.doNOTRainbowifyTemplateString
+        doNOTRainbowifyBigFiles?.isSelected = settings.doNOTRainbowifyBigFiles
     }
 }
diff --git a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt
index 2278d5a..39d574e 100644
--- a/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt
+++ b/src/main/kotlin/com/github/izhangzhihao/rainbow/brackets/visitor/RainbowHighlightVisitor.kt
@@ -2,15 +2,20 @@ package com.github.izhangzhihao.rainbow.brackets.visitor
 
 import com.github.izhangzhihao.rainbow.brackets.RainbowHighlighter.getHighlightInfo
 import com.github.izhangzhihao.rainbow.brackets.RainbowInfo
+import com.github.izhangzhihao.rainbow.brackets.RainbowUpdateNotifyActivity.Companion.pluginId
 import com.github.izhangzhihao.rainbow.brackets.settings.RainbowSettings
 import com.github.izhangzhihao.rainbow.brackets.util.memoizedFileExtension
 import com.intellij.codeInsight.daemon.impl.HighlightVisitor
 import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder
 import com.intellij.ide.plugins.PluginManagerCore
+import com.intellij.notification.NotificationDisplayType
+import com.intellij.notification.NotificationGroup
+import com.intellij.notification.NotificationType
 import com.intellij.openapi.editor.colors.EditorColorsManager
 import com.intellij.openapi.extensions.PluginId
 import com.intellij.psi.PsiElement
 import com.intellij.psi.PsiFile
+import org.jetbrains.kotlin.idea.core.util.getLineCount
 import java.awt.Color
 
 
@@ -20,11 +25,33 @@ abstract class RainbowHighlightVisitor : HighlightVisitor {
 
     override fun suitableForFile(file: PsiFile): Boolean {
         return RainbowSettings.instance.isRainbowEnabled &&
+                checkForBigFile(file) &&
                 !RainbowSettings.instance.getLanguageBlacklist.contains(file.fileType.name) &&
                 !RainbowSettings.instance.getLanguageBlacklist.contains(memoizedFileExtension(file.name)) &&
                 fileIsNotHaskellOrIntelliJHaskellPluginNotEnabled(file.fileType.name)
     }
 
+    private fun checkForBigFile(file: PsiFile): Boolean {
+        if (RainbowSettings.instance.doNOTRainbowifyBigFiles && file.getLineCount() > 1000) {
+            val group = NotificationGroup(
+                pluginId,
+                NotificationDisplayType.BALLOON,
+                true
+            )
+
+            val notification = group.createNotification(
+                "Rainbowify big files is disabled by default",
+                "File with line count > 1000 will not rainbowify be default. If you still want to rainbowify it, please config it in <b>Settings > Other Settings > Rainbow Brackets > Do NOT rainbowify big files</b>",
+                NotificationType.INFORMATION
+            )
+
+            notification.notify(file.project)
+
+            return false
+        }
+        return true
+    }
+
     private fun fileIsNotHaskellOrIntelliJHaskellPluginNotEnabled(fileType: String) =
             fileType != "Haskell" || !isIntelliJHaskellEnabled