diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 537ff7a295..1355a7ab9f 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -305,6 +305,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
 #define DISABLE_Y false
 #define DISABLE_Z false
 #define DISABLE_E false // For all extruders
+#define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
 
 #define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp
index bfc71323fe..5b20f86f99 100644
--- a/Marlin/planner.cpp
+++ b/Marlin/planner.cpp
@@ -657,12 +657,24 @@ block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-positi
   if(block->steps_z != 0) enable_z();
 #endif
 
-  // Enable all
+  // Enable extruder(s)
   if(block->steps_e != 0)
   {
-    enable_e0();
-    enable_e1();
-    enable_e2(); 
+    if (DISABLE_INACTIVE_EXTRUDER) //enable only selected extruder
+    {
+      switch(extruder)
+      {
+        case 0: enable_e0(); disable_e1(); disable_e2(); break;
+        case 1: disable_e0(); enable_e1(); disable_e2(); break;
+        case 2: disable_e0(); disable_e1(); enable_e2(); break;
+      }
+    }
+    else //enable all
+    {
+      enable_e0();
+      enable_e1();
+      enable_e2(); 
+    }
   }
 
   if (block->steps_e == 0)