diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 61434530e806064296479f599bf88de3a64d3514..8c1daf11b4f4c98a2e2b9185059e81b2b12eb900 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -1127,7 +1127,7 @@ inline uint16_t code_value_ushort() { return (uint16_t)strtoul(seen_pointer + 1,
inline uint8_t code_value_byte() { return (uint8_t)(constrain(strtol(seen_pointer + 1, NULL, 10), 0, 255)); }
-inline bool code_value_bool() { return code_value_byte() > 0; }
+inline bool code_value_bool() { return !code_has_value() || code_value_byte() > 0; }
#if ENABLED(INCH_MODE_SUPPORT)
inline void set_input_linear_units(LinearUnit units) {
@@ -5939,7 +5939,7 @@ void quickstop_stepper() {
/**
* M420: Enable/Disable Mesh Bed Leveling
*/
- inline void gcode_M420() { if (code_seen('S') && code_has_value()) mbl.set_has_mesh(code_value_bool()); }
+ inline void gcode_M420() { if (code_seen('S')) mbl.set_has_mesh(code_value_bool()); }
/**
* M421: Set a single Mesh Bed Leveling Z coordinate