diff --git a/Marlin/Conditionals_post.h b/Marlin/Conditionals_post.h
index 040885fc2f35910d5e085851686558ae1ce69c2f..4f7272f938f33721d0023387f214cd7a3447d8cb 100644
--- a/Marlin/Conditionals_post.h
+++ b/Marlin/Conditionals_post.h
@@ -653,6 +653,7 @@
     #undef PROBING_FANS_OFF
   #endif
   #define QUIET_PROBING (HAS_BED_PROBE && (ENABLED(PROBING_HEATERS_OFF) || ENABLED(PROBING_FANS_OFF)))
+  #define HEATER_IDLE_HANDLER (ENABLED(ADVANCED_PAUSE_FEATURE) || ENABLED(PROBING_HEATERS_OFF))
 
   /**
    * Servos and probes
diff --git a/Marlin/SanityCheck.h b/Marlin/SanityCheck.h
index 7260c0e5b25c38e9c708cbf574e177d387b243e3..f97573336191a10ab93afc0c7ec0a71c17c437b3 100644
--- a/Marlin/SanityCheck.h
+++ b/Marlin/SanityCheck.h
@@ -577,13 +577,6 @@ static_assert(1 >= 0
     #error "Probes need Z_CLEARANCE_BETWEEN_PROBES >= 0."
   #endif
 
-   /**
-    * Advanced Pause is required in order to turn the heaters off during probing
-    */
-   #if (ENABLED(PROBING_HEATERS_OFF) && DISABLED(ADVANCED_PAUSE_FEATURE))
-     #error "PROBING_HEATERS_OFF requires ADVANCED_PAUSE_FEATURE"
-   #endif
-
 #else
 
   /**
diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index f62e5a94db339f28740b771f64cf7e214a07734a..56be635da2cc48b55d491c4aab3cf5f35383d10c 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -203,7 +203,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS],
   bool Temperature::paused;
 #endif
 
-#if ENABLED(ADVANCED_PAUSE_FEATURE)
+#if HEATER_IDLE_HANDLER
   millis_t Temperature::heater_idle_timeout_ms[HOTENDS] = { 0 };
   bool Temperature::heater_idle_timeout_exceeded[HOTENDS] = { false };
   #if HAS_TEMP_BED
@@ -558,7 +558,7 @@ float Temperature::get_pid_output(int e) {
       pid_error[HOTEND_INDEX] = target_temperature[HOTEND_INDEX] - current_temperature[HOTEND_INDEX];
       dTerm[HOTEND_INDEX] = K2 * PID_PARAM(Kd, HOTEND_INDEX) * (current_temperature[HOTEND_INDEX] - temp_dState[HOTEND_INDEX]) + K1 * dTerm[HOTEND_INDEX];
       temp_dState[HOTEND_INDEX] = current_temperature[HOTEND_INDEX];
-      #if ENABLED(ADVANCED_PAUSE_FEATURE)
+      #if HEATER_IDLE_HANDLER
         if (heater_idle_timeout_exceeded[HOTEND_INDEX]) {
           pid_output = 0;
           pid_reset[HOTEND_INDEX] = true;
@@ -570,7 +570,7 @@ float Temperature::get_pid_output(int e) {
         pid_reset[HOTEND_INDEX] = true;
       }
       else if (pid_error[HOTEND_INDEX] < -(PID_FUNCTIONAL_RANGE) || target_temperature[HOTEND_INDEX] == 0
-        #if ENABLED(ADVANCED_PAUSE_FEATURE)
+        #if HEATER_IDLE_HANDLER
           || heater_idle_timeout_exceeded[HOTEND_INDEX]
         #endif
         ) {
@@ -633,7 +633,7 @@ float Temperature::get_pid_output(int e) {
     #endif // PID_DEBUG
 
   #else /* PID off */
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       if (heater_idle_timeout_exceeded[HOTEND_INDEX])
         pid_output = 0;
       else
@@ -719,13 +719,13 @@ void Temperature::manage_heater() {
     if (current_temperature[0] < max(HEATER_0_MINTEMP, MAX6675_TMIN + .01)) min_temp_error(0);
   #endif
 
-  #if WATCH_HOTENDS || WATCH_THE_BED || DISABLED(PIDTEMPBED) || HAS_AUTO_FAN || ENABLED(ADVANCED_PAUSE_FEATURE)
+  #if WATCH_HOTENDS || WATCH_THE_BED || DISABLED(PIDTEMPBED) || HAS_AUTO_FAN || HEATER_IDLE_HANDLER
     millis_t ms = millis();
   #endif
 
   HOTEND_LOOP() {
 
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       if (!heater_idle_timeout_exceeded[e] && heater_idle_timeout_ms[e] && ELAPSED(ms, heater_idle_timeout_ms[e]))
         heater_idle_timeout_exceeded[e] = true;
     #endif
@@ -793,7 +793,7 @@ void Temperature::manage_heater() {
 
   #if HAS_TEMP_BED
 
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       if (!bed_idle_timeout_exceeded && bed_idle_timeout_ms && ELAPSED(ms, bed_idle_timeout_ms))
         bed_idle_timeout_exceeded = true;
     #endif
@@ -802,7 +802,7 @@ void Temperature::manage_heater() {
       thermal_runaway_protection(&thermal_runaway_bed_state_machine, &thermal_runaway_bed_timer, current_temperature_bed, target_temperature_bed, -1, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS);
     #endif
 
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       if (bed_idle_timeout_exceeded)
       {
         soft_pwm_amount_bed = 0;
@@ -1294,7 +1294,7 @@ void Temperature::init() {
 
     int heater_index = heater_id >= 0 ? heater_id : HOTENDS;
 
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       // If the heater idle timeout expires, restart
       if (heater_id >= 0 && heater_idle_timeout_exceeded[heater_id]) {
         *state = TRInactive;
diff --git a/Marlin/temperature.h b/Marlin/temperature.h
index 18717dea21de855d93f1a5733f56198c924f0ae6..2eff176198aee46ab8c517e2f9647cc8c6f4a4e5 100644
--- a/Marlin/temperature.h
+++ b/Marlin/temperature.h
@@ -262,7 +262,7 @@ class Temperature {
       static bool paused;
     #endif
 
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       static millis_t heater_idle_timeout_ms[HOTENDS];
       static bool heater_idle_timeout_exceeded[HOTENDS];
       #if HAS_TEMP_BED
@@ -476,7 +476,7 @@ class Temperature {
       static bool is_paused() { return paused; }
     #endif
 
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       static void start_heater_idle_timer(uint8_t e, millis_t timeout_ms) {
         #if HOTENDS == 1
           UNUSED(e);
diff --git a/Marlin/ultralcd_impl_DOGM.h b/Marlin/ultralcd_impl_DOGM.h
index bfd103a7d35cf5065359b9c897cfd2271a7d81e8..29445262c3d79d6d2334b39e5bb63b22bc815bcd 100644
--- a/Marlin/ultralcd_impl_DOGM.h
+++ b/Marlin/ultralcd_impl_DOGM.h
@@ -357,7 +357,7 @@ FORCE_INLINE void _draw_heater_status(const uint8_t x, const int8_t heater, cons
   #endif
 
   if (PAGE_UNDER(7)) {
-    #if ENABLED(ADVANCED_PAUSE_FEATURE)
+    #if HEATER_IDLE_HANDLER
       const bool is_idle = (!isBed ? thermalManager.is_heater_idle(heater) :
       #if HAS_TEMP_BED
         thermalManager.is_bed_idle()
diff --git a/Marlin/ultralcd_impl_HD44780.h b/Marlin/ultralcd_impl_HD44780.h
index ef5301b7f2809fb3d81b17a86737788132e47c6e..7bc901854e0b45186c55714ebc68d20fe1c847de 100644
--- a/Marlin/ultralcd_impl_HD44780.h
+++ b/Marlin/ultralcd_impl_HD44780.h
@@ -600,7 +600,7 @@ FORCE_INLINE void _draw_heater_status(const int8_t heater, const char prefix, co
   lcd.print(itostr3(t1 + 0.5));
   lcd.print('/');
 
-  #if ENABLED(ADVANCED_PAUSE_FEATURE)
+  #if HEATER_IDLE_HANDLER
     const bool is_idle = (!isBed ? thermalManager.is_heater_idle(heater) :
       #if HAS_TEMP_BED
         thermalManager.is_bed_idle()