diff --git a/Marlin/src/gcode/queue.cpp b/Marlin/src/gcode/queue.cpp
index 7dbe3259e1fe1636fd32cf9b00f8a0906b725f89..dbf966fb0b6e474086125d5c871104781745ac25 100644
--- a/Marlin/src/gcode/queue.cpp
+++ b/Marlin/src/gcode/queue.cpp
@@ -204,7 +204,7 @@ void GCodeQueue::enqueue_now_P(PGM_P const pgcode) {
   PGM_P p = pgcode;
   for (;;) {
     char c;
-    while ((c = p[i]) && c != '\n') i++;
+    while ((c = pgm_read_byte(&p[i])) && c != '\n') i++;
     char cmd[i + 1];
     memcpy_P(cmd, p, i);
     cmd[i] = '\0';