diff --git a/Marlin/Conditionals_post.h b/Marlin/Conditionals_post.h
index f30e8e8c3b09eb1d3b6538f9e5cd3a3db4fe7686..09c16f35226afcdf5b6647405349f279c42d05dd 100644
--- a/Marlin/Conditionals_post.h
+++ b/Marlin/Conditionals_post.h
@@ -718,15 +718,14 @@
   #endif
 
   /**
-   * Set ABL options based on the specific type of leveling
+   * Set granular options based on the specific type of leveling
    */
   #define ABL_PLANAR (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_3POINT))
   #define ABL_GRID   (ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR))
   #define HAS_ABL    (ABL_PLANAR || ABL_GRID || ENABLED(AUTO_BED_LEVELING_UBL))
-
-  #define PLANNER_LEVELING      (HAS_ABL || ENABLED(MESH_BED_LEVELING))
+  #define HAS_LEVELING          (HAS_ABL || ENABLED(MESH_BED_LEVELING))
+  #define PLANNER_LEVELING      (ABL_PLANAR || ABL_GRID || ENABLED(MESH_BED_LEVELING))
   #define HAS_PROBING_PROCEDURE (HAS_ABL || ENABLED(Z_MIN_PROBE_REPEATABILITY_TEST))
-
   #if HAS_PROBING_PROCEDURE
     #define PROBE_BED_WIDTH abs(RIGHT_PROBE_BED_POSITION - (LEFT_PROBE_BED_POSITION))
     #define PROBE_BED_HEIGHT abs(BACK_PROBE_BED_POSITION - (FRONT_PROBE_BED_POSITION))
diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index bc1d682cdea2865cdee2f9d0c147c8b29c02a10a..1754a627739b2e10440a90d4e91b647344f55837 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -324,7 +324,7 @@ float code_value_temp_diff();
   linear_fit* lsf_linear_fit(double x[], double y[], double z[], const int);
 #endif
 
-#if PLANNER_LEVELING
+#if HAS_LEVELING
   void reset_bed_level();
 #endif
 
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 626ac6fc4d50423e382936647b73b8a2cf5c162f..cfc5ea40bd7b77a8c88c0a4b95ba2749b232f29c 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -2403,7 +2403,7 @@ static void clean_up_after_endstop_or_probe_move() {
 
 #endif // HAS_BED_PROBE
 
-#if PLANNER_LEVELING
+#if HAS_LEVELING
   /**
    * Turn bed leveling on or off, fixing the current
    * position as-needed.
@@ -2511,7 +2511,7 @@ static void clean_up_after_endstop_or_probe_move() {
     #endif
   }
 
-#endif // PLANNER_LEVELING
+#endif // HAS_LEVELING
 
 #if ENABLED(AUTO_BED_LEVELING_BILINEAR) || ENABLED(MESH_BED_LEVELING)
 
@@ -3747,7 +3747,7 @@ inline void gcode_G28() {
   #endif
 
   // Disable the leveling matrix before homing
-  #if PLANNER_LEVELING
+  #if HAS_LEVELING
     #if ENABLED(AUTO_BED_LEVELING_UBL)
       const bool bed_leveling_state_at_entry = ubl.state.active;
     #endif
@@ -4368,7 +4368,7 @@ void home_all_axes() { gcode_G28(); }
 
       #endif
 
-      #if PLANNER_LEVELING
+      #if HAS_LEVELING
 
         // Jettison bed leveling data
         if (code_seen('J')) {
@@ -5034,7 +5034,7 @@ void home_all_axes() { gcode_G28(); }
     if (!position_is_reachable(pos, true)) return;
 
     // Disable leveling so the planner won't mess with us
-    #if PLANNER_LEVELING
+    #if HAS_LEVELING
       set_bed_leveling_enabled(false);
     #endif
 
@@ -5091,7 +5091,7 @@ void home_all_axes() { gcode_G28(); }
 
       stepper.synchronize();
 
-      #if PLANNER_LEVELING
+      #if HAS_LEVELING
         set_bed_leveling_enabled(false);
       #endif
 
@@ -7294,7 +7294,7 @@ inline void gcode_M115() {
     #endif
 
     // MESH_REPORT (M420 V)
-    #if PLANNER_LEVELING
+    #if HAS_LEVELING
       SERIAL_PROTOCOLLNPGM("Cap:LEVELING_DATA:1");
     #else
       SERIAL_PROTOCOLLNPGM("Cap:LEVELING_DATA:0");
@@ -8336,7 +8336,7 @@ void quickstop_stepper() {
   SYNC_PLAN_POSITION_KINEMATIC();
 }
 
-#if PLANNER_LEVELING
+#if HAS_LEVELING
   /**
    * M420: Enable/Disable Bed Leveling and/or set the Z fade height.
    *
@@ -9857,12 +9857,12 @@ void process_next_command() {
         gcode_G28();
         break;
 
-      #if PLANNER_LEVELING || ENABLED(AUTO_BED_LEVELING_UBL)
+      #if HAS_LEVELING
         case 29: // G29 Detailed Z probe, probes the bed at 3 or more points,
                  // or provides access to the UBL System if enabled.
           gcode_G29();
           break;
-      #endif // PLANNER_LEVELING
+      #endif // HAS_LEVELING
 
       #if HAS_BED_PROBE
 
@@ -10363,7 +10363,7 @@ void process_next_command() {
           break;
       #endif // FILAMENT_WIDTH_SENSOR
 
-      #if PLANNER_LEVELING
+      #if HAS_LEVELING
         case 420: // M420: Enable/Disable Bed Leveling
           gcode_M420();
           break;
@@ -10917,7 +10917,7 @@ void get_cartesian_from_steppers() {
  */
 void set_current_from_steppers_for_axis(const AxisEnum axis) {
   get_cartesian_from_steppers();
-  #if PLANNER_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL)
+  #if PLANNER_LEVELING
     planner.unapply_leveling(cartes);
   #endif
   if (axis == ALL_AXES)
diff --git a/Marlin/configuration_store.cpp b/Marlin/configuration_store.cpp
index 681c01a9a1e6e6b57ee64bb5657466782f7f12f9..2427d2a043523602472b5db036408311b7d032c0 100644
--- a/Marlin/configuration_store.cpp
+++ b/Marlin/configuration_store.cpp
@@ -1071,7 +1071,7 @@ void MarlinSettings::reset() {
   #endif
 
   // Applies to all MBL and ABL
-  #if PLANNER_LEVELING
+  #if HAS_LEVELING
     reset_bed_level();
   #endif
 
diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp
index 2fb9996d43dc75daaaf359a405b5dcbe734f003a..07e7833cf2fe76b8594424140dee90d84f2cea44 100644
--- a/Marlin/planner.cpp
+++ b/Marlin/planner.cpp
@@ -530,7 +530,7 @@ void Planner::check_axes_activity() {
   #endif
 }
 
-#if PLANNER_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL)
+#if PLANNER_LEVELING
   /**
    * lx, ly, lz - logical (cartesian, not delta) positions in mm
    */
@@ -634,7 +634,7 @@ void Planner::check_axes_activity() {
     #endif
   }
 
-#endif // PLANNER_LEVELING && !AUTO_BED_LEVELING_UBL
+#endif // PLANNER_LEVELING
 
 /**
  * Planner::_buffer_line
@@ -1434,7 +1434,7 @@ void Planner::_set_position_mm(const float &a, const float &b, const float &c, c
 }
 
 void Planner::set_position_mm_kinematic(const float position[NUM_AXIS]) {
-  #if PLANNER_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL)
+  #if PLANNER_LEVELING
     float lpos[XYZ] = { position[X_AXIS], position[Y_AXIS], position[Z_AXIS] };
     apply_leveling(lpos);
   #else
diff --git a/Marlin/planner.h b/Marlin/planner.h
index 6018ecfab11a0bbb6aece72d759855b156323cad..ca23979fab45eba6286ff10cf06026a80aad1b84 100644
--- a/Marlin/planner.h
+++ b/Marlin/planner.h
@@ -246,7 +246,7 @@ class Planner {
 
     static bool is_full() { return (block_buffer_tail == BLOCK_MOD(block_buffer_head + 1)); }
 
-    #if PLANNER_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL)
+    #if PLANNER_LEVELING
 
       #define ARG_X float lx
       #define ARG_Y float ly
@@ -296,7 +296,7 @@ class Planner {
      *  extruder     - target extruder
      */
     static FORCE_INLINE void buffer_line(ARG_X, ARG_Y, ARG_Z, const float &e, const float &fr_mm_s, const uint8_t extruder) {
-      #if PLANNER_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL) && IS_CARTESIAN
+      #if PLANNER_LEVELING && IS_CARTESIAN
         apply_leveling(lx, ly, lz);
       #endif
       _buffer_line(lx, ly, lz, e, fr_mm_s, extruder);
@@ -312,7 +312,7 @@ class Planner {
      *  extruder - target extruder
      */
     static FORCE_INLINE void buffer_line_kinematic(const float ltarget[XYZE], const float &fr_mm_s, const uint8_t extruder) {
-      #if PLANNER_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL)
+      #if PLANNER_LEVELING
         float lpos[XYZ] = { ltarget[X_AXIS], ltarget[Y_AXIS], ltarget[Z_AXIS] };
         apply_leveling(lpos);
       #else
@@ -336,7 +336,7 @@ class Planner {
      * Clears previous speed values.
      */
     static FORCE_INLINE void set_position_mm(ARG_X, ARG_Y, ARG_Z, const float &e) {
-      #if PLANNER_LEVELING && DISABLED(AUTO_BED_LEVELING_UBL) && IS_CARTESIAN
+      #if PLANNER_LEVELING && IS_CARTESIAN
         apply_leveling(lx, ly, lz);
       #endif
       _set_position_mm(lx, ly, lz, e);