CNC GCode not being obeyed

I have the gcode below to cut out a PCB via the CNC module. I can’t figure out why the machine is working at 3000mm/s - any thoughts? The GCode was generated by Flatcam 8.5 and I manually generated the header.

Thanks in advance for the help.

;Header Start
;header_type: cnc
;renderMethod: line
;file_total_lines: 114
;estimated_time(s): 30.36153183081994
;is_rotate: false
;diameter: 2.0
;max_x(mm): 130
;max_y(mm): 80
;max_z(mm): 0
;max_b(mm): 0
;min_x(mm): 0
;min_y(mm): 0
;min_b(mm): 0
;work_speed(mm/minute): 50
;jog_speed(mm/minute): 50
;power(%): 0
;thumbnail: data:image/png;base64,
;Header End

G21
G90
G94
F50.00
G00 Z5.0000
M03 S12000
G4 P1
G00 X14.9250Y-1.2270
G01 Z-0.4000
G01 X-1.2270Y-1.2270
G01 X-1.2270Y42.9250
G00 X-1.2270Y42.9250
G01 Z-0.8000
G01 X-1.2270Y-1.2270
G01 X14.9250Y-1.2270
G00 X14.9250Y-1.2270
G01 Z-1.2000
G01 X-1.2270Y-1.2270
G01 X-1.2270Y42.9250
G00 X-1.2270Y42.9250
G01 Z-1.6000
G01 X-1.2270Y-1.2270
G01 X14.9250Y-1.2270
G00 X14.9250Y-1.2270
G01 Z-2.0000
G01 X-1.2270Y-1.2270
G01 X-1.2270Y42.9250
G00 Z5.0000
G00 X-1.2270Y45.0750
G01 Z-0.4000
G01 X-1.2270Y89.2270
G01 X14.9250Y89.2270
G00 X14.9250Y89.2270
G01 Z-0.8000
G01 X-1.2270Y89.2270
G01 X-1.2270Y45.0750
G00 X-1.2270Y45.0750
G01 Z-1.2000
G01 X-1.2270Y89.2270
G01 X14.9250Y89.2270
G00 X14.9250Y89.2270
G01 Z-1.6000
G01 X-1.2270Y89.2270
G01 X-1.2270Y45.0750
G00 X-1.2270Y45.0750
G01 Z-2.0000
G01 X-1.2270Y89.2270
G01 X14.9250Y89.2270
G00 Z5.0000
G00 X17.0750Y89.2270
G01 Z-0.4000
G01 X33.2270Y89.2270
G01 X33.2270Y45.0750
G00 X33.2270Y45.0750
G01 Z-0.8000
G01 X33.2270Y89.2270
G01 X17.0750Y89.2270
G00 X17.0750Y89.2270
G01 Z-1.2000
G01 X33.2270Y89.2270
G01 X33.2270Y45.0750
G00 X33.2270Y45.0750
G01 Z-1.6000
G01 X33.2270Y89.2270
G01 X17.0750Y89.2270
G00 X17.0750Y89.2270
G01 Z-2.0000
G01 X33.2270Y89.2270
G01 X33.2270Y45.0750
G00 Z5.0000
G00 X33.2270Y42.9250
G01 Z-0.4000
G01 X33.2270Y-1.2270
G01 X17.0750Y-1.2270
G00 X17.0750Y-1.2270
G01 Z-0.8000
G01 X33.2270Y-1.2270
G01 X33.2270Y42.9250
G00 X33.2270Y42.9250
G01 Z-1.2000
G01 X33.2270Y-1.2270
G01 X17.0750Y-1.2270
G00 X17.0750Y-1.2270
G01 Z-1.6000
G01 X33.2270Y-1.2270
G01 X33.2270Y42.9250
G00 X33.2270Y42.9250
G01 Z-2.0000
G01 X33.2270Y-1.2270
G01 X17.0750Y-1.2270
G00 Z5.0000
G00 Z5.0000
G00 X0Y0
M05

F50 is not valid gcode. Refer to the documentation: Linear Move | Marlin Firmware

The header is not important, don’t bother making it unless you just like doing it.

The M03 command is also not correct, but in this case it is doing what you want by happy coincidence. It’s a percentage from 50 to 100%. 12000 is being interpreted as 12,000%, which is then being capped to the maximum value of 100%. This is only important if you ever plan to run at a slower speed.

G94 is not valid on this machine, and is ignored. It doesn’t affect the program, but just noting that FYI.

@brent113 - thanks for the input - I’ll make the changes… in the past I’ve had problems with gcode with no header, but I’ll give it another shot.

Thanks again.