diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index 3ca4aa623e61e0bcdcce1ea8521bdf3ba1244997..af1762dc32284df834b343076d9be6995d299a6d 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -327,8 +327,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
  * Progress Bar
  */
 #if ENABLED(LCD_PROGRESS_BAR)
-  #if DISABLED(SDSUPPORT)
-    #error "LCD_PROGRESS_BAR requires SDSUPPORT."
+  #if DISABLED(SDSUPPORT) && DISABLED(LCD_SET_PROGRESS_MANUALLY)
+    #error "LCD_PROGRESS_BAR requires SDSUPPORT or LCD_SET_PROGRESS_MANUALLY."
   #elif DISABLED(ULTRA_LCD)
     #error "LCD_PROGRESS_BAR requires a character LCD."
   #elif ENABLED(DOGLCD)
diff --git a/Marlin/src/lcd/ultralcd_impl_HD44780.h b/Marlin/src/lcd/ultralcd_impl_HD44780.h
index 0d011e30f8593d5d5b7f2b285f802bfdefac7f5c..70dc5294bed3e9f85c6d8ebf6266055bf3801f54 100644
--- a/Marlin/src/lcd/ultralcd_impl_HD44780.h
+++ b/Marlin/src/lcd/ultralcd_impl_HD44780.h
@@ -426,23 +426,21 @@ static void lcd_set_custom_characters(
           createChar_P(LCD_FEEDRATE_CHAR, feedrate);
           createChar_P(LCD_CLOCK_CHAR, clock);
 
-          #if ENABLED(SDSUPPORT)
-            #if ENABLED(LCD_PROGRESS_BAR)
-              if (screen_charset == CHARSET_INFO) { // 3 Progress bar characters for info screen
-                for (int16_t i = 3; i--;)
-                  createChar_P(LCD_STR_PROGRESS[i], progress[i]);
-              }
-              else
-            #endif
-              { // SD Card sub-menu special characters
-                createChar_P(LCD_UPLEVEL_CHAR, uplevel);
+          #if ENABLED(LCD_PROGRESS_BAR)
+            if (screen_charset == CHARSET_INFO) { // 3 Progress bar characters for info screen
+              for (int16_t i = 3; i--;)
+                createChar_P(LCD_STR_PROGRESS[i], progress[i]);
+            }
+            else
+          #endif
+            {
+              createChar_P(LCD_UPLEVEL_CHAR, uplevel);
+              #if ENABLED(SDSUPPORT)
+                // SD Card sub-menu special characters
                 createChar_P(LCD_STR_REFRESH[0], refresh);
                 createChar_P(LCD_STR_FOLDER[0], folder);
-              }
-          #else
-            // With no SD support, only need the uplevel character
-            createChar_P(LCD_UPLEVEL_CHAR, uplevel);
-          #endif
+              #endif
+            }
         }
   }
 }