diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 9e40335c04b91f0b11f5b20d6dcb8d6f6c59afd4..f3ccbbe260ee03d8ef9d406b5359f144abfe85a4 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -4362,6 +4362,10 @@ inline void gcode_M104() {
if (get_target_extruder_from_command(104)) return;
if (DEBUGGING(DRYRUN)) return;
+ #if ENABLED(SINGLENOZZLE)
+ if (target_extruder != active_extruder) return;
+ #endif
+
if (code_seen('S')) {
float temp = code_value();
thermalManager.setTargetHotend(temp, target_extruder);
@@ -4516,6 +4520,10 @@ inline void gcode_M109() {
if (get_target_extruder_from_command(109)) return;
if (DEBUGGING(DRYRUN)) return;
+ #if ENABLED(SINGLENOZZLE)
+ if (target_extruder != active_extruder) return;
+ #endif
+
bool no_wait_for_cooling = code_seen('S');
if (no_wait_for_cooling || code_seen('R')) {
float temp = code_value();