diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt
index 810b1db..7ef8899 100644
--- a/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt
+++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/editor/lens/LensRenderer.kt
@@ -44,7 +44,7 @@ class LensRenderer(private var info: HighlightInfo, private val settings: LensSe
 	
 	fun setPropertiesFrom(info: HighlightInfo) {
 		this.info = info
-		val description = getValidDescriptionText(info.description)
+		val description = getValidDescriptionText(info.description, settings.maxDescriptionLength)
 		
 		text = description
 		attributes = LensSeverity.from(info.severity).textAttributes
@@ -155,15 +155,13 @@ class LensRenderer(private var info: HighlightInfo, private val settings: LensSe
 		private const val HOVER_HORIZONTAL_PADDING = TEXT_HORIZONTAL_PADDING - 2
 		private const val UNDERLINE_WIDTH_REDUCTION = (TEXT_HORIZONTAL_PADDING * 2) - 1
 		
-		private const val MAX_DESCRIPTION_LENGTH = 120
-		
 		/**
 		 * Kotlin compiler inspections have an `[UPPERCASE_TAG]` at the beginning.
 		 */
 		private val UPPERCASE_TAG_REGEX = Pattern.compile("^\\[[A-Z_]+] ")
 		
-		private fun getValidDescriptionText(text: String?): String {
-			return if (text.isNullOrBlank()) " " else addEllipsisOrMissingPeriod(unescapeHtmlEntities(stripUppercaseTag(text)))
+		private fun getValidDescriptionText(text: String?, maxLength: Int): String {
+			return if (text.isNullOrBlank()) " " else addEllipsisOrMissingPeriod(unescapeHtmlEntities(stripUppercaseTag(text)), maxLength)
 		}
 		
 		private fun stripUppercaseTag(text: String): String {
@@ -181,11 +179,11 @@ class LensRenderer(private var info: HighlightInfo, private val settings: LensSe
 			return if (text.contains('&')) StringUtil.unescapeXmlEntities(text) else text
 		}
 		
-		private fun addEllipsisOrMissingPeriod(text: String): String {
+		private fun addEllipsisOrMissingPeriod(text: String, maxLength: Int): String {
 			return when {
-				text.length > MAX_DESCRIPTION_LENGTH -> text.take(MAX_DESCRIPTION_LENGTH).trimEnd { it.isWhitespace() || it == '.' } + "…"
-				!text.endsWith('.')                  -> "$text."
-				else                                 -> text
+				text.length > maxLength -> text.take(maxLength).trimEnd { it.isWhitespace() || it == '.' } + "…"
+				!text.endsWith('.')     -> "$text."
+				else                    -> text
 			}
 		}
 		
diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt
index 2e67bc8..f13afd8 100644
--- a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt
+++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensApplicationConfigurable.kt
@@ -20,6 +20,7 @@ import com.intellij.ui.dsl.builder.Cell
 import com.intellij.ui.dsl.builder.RightGap
 import com.intellij.ui.dsl.builder.Row
 import com.intellij.ui.dsl.builder.RowLayout
+import com.intellij.ui.dsl.builder.bindIntText
 import com.intellij.ui.dsl.builder.bindItem
 import com.intellij.ui.dsl.builder.bindSelected
 import com.intellij.ui.dsl.builder.panel
@@ -83,6 +84,9 @@ class LensApplicationConfigurable : BoundConfigurable("Inspection Lens"), Config
 				row {
 					checkBox("Use editor font").bindSelected(settings::useEditorFont)
 				}
+				row("Max description length:") {
+					intTextField(LensSettingsState.MAX_DESCRIPTION_LENGTH_RANGE, keyboardStep = 10).bindIntText(settings::maxDescriptionLength)
+				}
 			}
 			
 			group("Behavior") {
diff --git a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt
index 315d37c..a97f69c 100644
--- a/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt
+++ b/src/main/kotlin/com/chylex/intellij/inspectionlens/settings/LensSettingsState.kt
@@ -21,9 +21,14 @@ class LensSettingsState : SimplePersistentStateComponent<LensSettingsState.State
 		
 		var showUnknownSeverities by property(true)
 		var useEditorFont by property(true)
+		var maxDescriptionLength by property(120)
 		var lensHoverMode by enum(LensHoverMode.DEFAULT)
 	}
 	
+	companion object {
+		val MAX_DESCRIPTION_LENGTH_RANGE = 20..1000
+	}
+	
 	@get:Synchronized
 	@set:Synchronized
 	var severityFilter = createSeverityFilter()
@@ -32,11 +37,15 @@ class LensSettingsState : SimplePersistentStateComponent<LensSettingsState.State
 	val useEditorFont
 		get() = state.useEditorFont
 	
+	val maxDescriptionLength
+		get() = state.maxDescriptionLength
+	
 	val lensHoverMode
 		get() = state.lensHoverMode
 	
 	override fun loadState(state: State) {
 		super.loadState(state)
+		state.maxDescriptionLength = state.maxDescriptionLength.coerceIn(MAX_DESCRIPTION_LENGTH_RANGE)
 		update()
 	}
 	
@@ -46,6 +55,7 @@ class LensSettingsState : SimplePersistentStateComponent<LensSettingsState.State
 		state.hiddenSeverities.apply { clear(); putAll(default.hiddenSeverities) }
 		state.showUnknownSeverities = default.showUnknownSeverities
 		state.useEditorFont = default.useEditorFont
+		state.maxDescriptionLength = default.maxDescriptionLength
 		state.lensHoverMode = default.lensHoverMode
 		
 		update()