diff --git a/Marlin/language_ca.h b/Marlin/language_ca.h
index ba5d37127f910b653d95e4c4f7d4a6644f645067..db0e8021afc0e8d2fee3b066f8c9ce8ea5a525e3 100644
--- a/Marlin/language_ca.h
+++ b/Marlin/language_ca.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Accel"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_de.h b/Marlin/language_de.h
index e442448af6a98a3b415eceaa8766aa83c65683bc..a019290dca74925e83cbcdd1faec77048a1a8cd4 100644
--- a/Marlin/language_de.h
+++ b/Marlin/language_de.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Acc"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_en.h b/Marlin/language_en.h
index 014b42e51e032d1e523f77f67822ea92d2341452..ecf87fc1d4b1900586d3acf95f4903c3277651cc 100644
--- a/Marlin/language_en.h
+++ b/Marlin/language_en.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Accel"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_es.h b/Marlin/language_es.h
index 064c770604fcff29d9805b516f104b6438783fdc..8f5fb73d3443d812400d6ef080aabddd6f758374 100644
--- a/Marlin/language_es.h
+++ b/Marlin/language_es.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Acel"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_eu.h b/Marlin/language_eu.h
index 7e65ca59d16549750db8065a8b3d8d75488d0b38..66962543cfece3129c21431dad0c2474a4669b92 100644
--- a/Marlin/language_eu.h
+++ b/Marlin/language_eu.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Azelerazioa"
 #define MSG_VXY_JERK                        "Vxy-astindua"
 #define MSG_VZ_JERK                         "Vz-astindua"
diff --git a/Marlin/language_fi.h b/Marlin/language_fi.h
index 0b1ac9cad93b927982750163c6f1b56eac542516..c04637dc8b70c2cc05e5a90f928b5aba26bc6d6b 100644
--- a/Marlin/language_fi.h
+++ b/Marlin/language_fi.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Kiihtyv"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_fr.h b/Marlin/language_fr.h
index 59066b1268076d7bbb6b655986e0fe7da004a410..29922c32703e9ee3602a4d4e61cc918ae6f69300 100644
--- a/Marlin/language_fr.h
+++ b/Marlin/language_fr.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Accel"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_it.h b/Marlin/language_it.h
index cb7dc466ae5cd804b389821d2324b70cb64f2340..d7abee458f0830356e975ec9a60b7c5739ab1a7f 100644
--- a/Marlin/language_it.h
+++ b/Marlin/language_it.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Accel."
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_nl.h b/Marlin/language_nl.h
index e9dc380605b06e31676490acf128ffe61620981e..77e256e589c709b096e3afa89d3ba10cc9b1e28b 100644
--- a/Marlin/language_nl.h
+++ b/Marlin/language_nl.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Versn"
 #define MSG_VXY_JERK                        "Vxy-jerk"
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_pl.h b/Marlin/language_pl.h
index 55ec20ee36c5a0803616b0f6f95f8cba59ddc645..8992097286af986ad731cf0918b88c0a611eba49 100644
--- a/Marlin/language_pl.h
+++ b/Marlin/language_pl.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I"
 #define MSG_PID_D                           "PID-D"
 #define MSG_PID_C                           "PID-C"
+#define MSG_PID_P1                          "PID-P E2"
+#define MSG_PID_I1                          "PID-I E2"
+#define MSG_PID_D1                          "PID-D E2"
+#define MSG_PID_C1                          "PID-C E2"
+#define MSG_PID_P2                          "PID-P E3"
+#define MSG_PID_I2                          "PID-I E3"
+#define MSG_PID_D2                          "PID-D E3"
+#define MSG_PID_C2                          "PID-C E3"
 #define MSG_ACC                             "Przyspieszenie"
 #define MSG_VXY_JERK                        "Zryw Vxy"
 #define MSG_VZ_JERK                         "Zryw Vz"
diff --git a/Marlin/language_pt.h b/Marlin/language_pt.h
index 09e346748f46b1b698598bbc5d0761dd4adde84a..473bed3e961279bf6bbf0565574eff582a1ddd11 100644
--- a/Marlin/language_pt.h
+++ b/Marlin/language_pt.h
@@ -67,6 +67,14 @@
 #define MSG_PID_I                           "PID-I: "
 #define MSG_PID_D                           "PID-D: "
 #define MSG_PID_C                           "PID-C: "
+#define MSG_PID_P1                          "PID-P E2: "
+#define MSG_PID_I1                          "PID-I E2: "
+#define MSG_PID_D1                          "PID-D E2: "
+#define MSG_PID_C1                          "PID-C E2: "
+#define MSG_PID_P2                          "PID-P E3: "
+#define MSG_PID_I2                          "PID-I E3: "
+#define MSG_PID_D2                          "PID-D E3: "
+#define MSG_PID_C2                          "PID-C E3: "
 #define MSG_ACC                             "Acc:"
 #define MSG_VXY_JERK                        "Vxy-jerk: "
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/language_ru.h b/Marlin/language_ru.h
index ec666f186b9330efea72779e4786f2e79bc73fea..87c5b1db73bd0f0c1517111e38841575b7963fad 100644
--- a/Marlin/language_ru.h
+++ b/Marlin/language_ru.h
@@ -69,6 +69,14 @@
 #define MSG_PID_I                           "PID-I: "
 #define MSG_PID_D                           "PID-D: "
 #define MSG_PID_C                           "PID-C: "
+#define MSG_PID_P1                          "PID-P E2: "
+#define MSG_PID_I1                          "PID-I E2: "
+#define MSG_PID_D1                          "PID-D E2: "
+#define MSG_PID_C1                          "PID-C E2: "
+#define MSG_PID_P2                          "PID-P E3: "
+#define MSG_PID_I2                          "PID-I E3: "
+#define MSG_PID_D2                          "PID-D E3: "
+#define MSG_PID_C2                          "PID-C E3: "
 #define MSG_ACC                             "Acc:"
 #define MSG_VXY_JERK                        "Vxy-jerk: "
 #define MSG_VZ_JERK                         "Vz-jerk"
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index d790266d92f99ee785f140702a0b2084f9d6c274..f380d45ccc0e6420472d0b266bb18c3efd0e0c9c 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -185,8 +185,9 @@ void* editValue;
 int32_t minEditValue, maxEditValue;
 menuFunc_t callbackFunc;
 
-// place-holders for Ki and Kd edits
+// place-holders for Ki and Kd edits, and the extruder # being edited
 float raw_Ki, raw_Kd;
+int pid_current_extruder;
 
 static void lcd_goto_menu(menuFunc_t menu, const uint32_t encoder=0, const bool feedback=true) {
   if (currentMenu != menu) {
@@ -764,12 +765,6 @@ static void lcd_control_menu()
 
 static void lcd_control_temperature_menu()
 {
-#ifdef PIDTEMP
-    // set up temp variables - undo the default scaling
-    raw_Ki = unscalePID_i(Ki);
-    raw_Kd = unscalePID_d(Kd);
-#endif
-
     START_MENU();
     MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
 #if TEMP_SENSOR_0 != 0
@@ -792,13 +787,43 @@ static void lcd_control_temperature_menu()
     MENU_ITEM_EDIT(float32, MSG_FACTOR, &autotemp_factor, 0.0, 1.0);
 #endif
 #ifdef PIDTEMP
-    MENU_ITEM_EDIT(float52, MSG_PID_P, &Kp, 1, 9990);
-    // i is typically a small value so allows values below 1
-    MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I, &raw_Ki, 0.01, 9990, copy_and_scalePID_i);
-    MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D, &raw_Kd, 1, 9990, copy_and_scalePID_d);
+	// set up temp variables - undo the default scaling
+	pid_current_extruder = 0;
+	raw_Ki = unscalePID_i(Ki[0]);
+	raw_Kd = unscalePID_d(Kd[0]);
+	MENU_ITEM_EDIT(float52, MSG_PID_P, &Kp[0], 1, 9990);
+	// i is typically a small value so allows values below 1
+	MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I, &raw_Ki, 0.01, 9990, copy_and_scalePID_i);
+	MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D, &raw_Kd, 1, 9990, copy_and_scalePID_d);
 # ifdef PID_ADD_EXTRUSION_RATE
-    MENU_ITEM_EDIT(float3, MSG_PID_C, &Kc, 1, 9990);
+	MENU_ITEM_EDIT(float3, MSG_PID_C, &Kc[0], 1, 9990);
 # endif//PID_ADD_EXTRUSION_RATE
+#if EXTRUDERS > 1
+	// set up temp variables - undo the default scaling
+	pid_current_extruder = 1;
+	raw_Ki = unscalePID_i(Ki[1]);
+	raw_Kd = unscalePID_d(Kd[1]);
+	MENU_ITEM_EDIT(float52, MSG_PID_P1, &Kp[1], 1, 9990);
+	// i is typically a small value so allows values below 1
+	MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I1, &raw_Ki, 0.01, 9990, copy_and_scalePID_i);
+	MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D1, &raw_Kd, 1, 9990, copy_and_scalePID_d);
+# ifdef PID_ADD_EXTRUSION_RATE
+	MENU_ITEM_EDIT(float3, MSG_PID_C1, &Kc[1], 1, 9990);
+# endif//PID_ADD_EXTRUSION_RATE	
+#endif//EXTRUDERS > 1
+#if EXTRUDERS > 2
+	// set up temp variables - undo the default scaling
+	pid_current_extruder = 2;
+	raw_Ki = unscalePID_i(Ki[2]);
+	raw_Kd = unscalePID_d(Kd[2]);
+	MENU_ITEM_EDIT(float52, MSG_PID_P2, &Kp[2], 1, 9990);
+	// i is typically a small value so allows values below 1
+	MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I2, &raw_Ki, 0.01, 9990, copy_and_scalePID_i);
+	MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D2, &raw_Kd, 1, 9990, copy_and_scalePID_d);
+# ifdef PID_ADD_EXTRUSION_RATE
+	MENU_ITEM_EDIT(float3, MSG_PID_C2, &Kc[2], 1, 9990);
+# endif//PID_ADD_EXTRUSION_RATE	
+#endif//EXTRUDERS > 2
 #endif//PIDTEMP
     MENU_ITEM(submenu, MSG_PREHEAT_PLA_SETTINGS, lcd_control_temperature_preheat_pla_settings_menu);
     MENU_ITEM(submenu, MSG_PREHEAT_ABS_SETTINGS, lcd_control_temperature_preheat_abs_settings_menu);
@@ -1705,7 +1730,7 @@ char *ftostr52(const float &x)
 void copy_and_scalePID_i()
 {
 #ifdef PIDTEMP
-  Ki = scalePID_i(raw_Ki);
+  Ki[pid_current_extruder] = scalePID_i(raw_Ki);
   updatePID();
 #endif
 }
@@ -1715,7 +1740,7 @@ void copy_and_scalePID_i()
 void copy_and_scalePID_d()
 {
 #ifdef PIDTEMP
-  Kd = scalePID_d(raw_Kd);
+  Kd[pid_current_extruder] = scalePID_d(raw_Kd);
   updatePID();
 #endif
 }