diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 1bd50e8bea7d2c52de974754882f419c480db51c..6e8f1f117a86c944527f03d7f5bbff3c7937af0d 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -365,8 +365,6 @@ void suicide() {
  ***************** GCode Handlers *****************
  **************************************************/
 
-#include "gcode/motion/G4.h"
-
 #if ENABLED(BEZIER_CURVE_SUPPORT)
   #include "gcode/motion/G5.h"
 #endif
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index a8c05c21419807c80461febc64ab024fbb995ec8..d0d9df282f1dbe22540f48e7891ff50b385064e5 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -112,7 +112,6 @@ void GcodeSuite::dwell(millis_t time) {
 //
 // Placeholders for non-migrated codes
 //
-extern void gcode_G4();
 extern void gcode_G5();
 extern void gcode_G12();
 extern void gcode_G17();
@@ -295,7 +294,7 @@ void GcodeSuite::process_next_command() {
 
       // G4 Dwell
       case 4:
-        gcode_G4();
+        G4();
         break;
 
       #if ENABLED(BEZIER_CURVE_SUPPORT)
diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h
index 68d8f1e50603d0ff5354655a2a3a662c2214dc68..eb77b7b5536145c1545679c3f89e091443920404 100644
--- a/Marlin/src/gcode/gcode.h
+++ b/Marlin/src/gcode/gcode.h
@@ -299,7 +299,7 @@ public:
     #define KEEPALIVE_STATE(n) NOOP
   #endif
 
-  void dwell(millis_t time);
+  static void dwell(millis_t time);
 
 private:
 
diff --git a/Marlin/src/gcode/motion/G4.h b/Marlin/src/gcode/motion/G4.cpp
similarity index 90%
rename from Marlin/src/gcode/motion/G4.h
rename to Marlin/src/gcode/motion/G4.cpp
index 8eb3f198dd666a327cfbf04297506ac1168960e5..1630cf0b449a495815c4452212c85a6023e52d92 100644
--- a/Marlin/src/gcode/motion/G4.h
+++ b/Marlin/src/gcode/motion/G4.cpp
@@ -20,10 +20,14 @@
  *
  */
 
+#include "../gcode.h"
+#include "../../module/stepper.h"
+#include "../../lcd/ultralcd.h"
+
 /**
  * G4: Dwell S<seconds> or P<milliseconds>
  */
-void gcode_G4() {
+void GcodeSuite::G4() {
   millis_t dwell_ms = 0;
 
   if (parser.seenval('P')) dwell_ms = parser.value_millis(); // milliseconds to wait
@@ -33,5 +37,5 @@ void gcode_G4() {
 
   if (!lcd_hasstatus()) LCD_MESSAGEPGM(MSG_DWELL);
 
-  gcode.dwell(dwell_ms);
+  dwell(dwell_ms);
 }