diff --git a/SSD1306.cpp b/SSD1306.cpp
index 08ff125bc26bf1162e8c50a394855de2b45edf61..b103f7612e426b554a4e193faf25abc7b546e829 100644
--- a/SSD1306.cpp
+++ b/SSD1306.cpp
@@ -355,12 +355,20 @@ void SSD1306::drawStringMaxWidth(int16_t xMove, int16_t yMove, uint16_t maxLineW
 }
 
 uint16_t SSD1306::getStringWidth(const char* text, uint16_t length) {
-  uint16_t stringWidth = 0;
   uint16_t firstChar        = pgm_read_byte(fontData + FIRST_CHAR_POS);
+
+  uint16_t stringWidth = 0;
+  uint16_t maxWidth = 0;
+
   while (length--) {
     stringWidth += pgm_read_byte(fontData + JUMPTABLE_START + (text[length] - firstChar) * JUMPTABLE_BYTES + JUMPTABLE_WIDTH);
+    if (text[length] == 10) {
+      maxWidth = max(maxWidth, stringWidth);
+      stringWidth = 0;
+    }
   }
-  return stringWidth;
+
+  return max(maxWidth, stringWidth);
 }
 
 void SSD1306::setTextAlignment(SSD1306_TEXT_ALIGNMENT textAlignment) {