Check a G-code file before you run it

Got a program from Vectric, Fusion, Carbide Create, Easel, LightBurn or a LinuxCNC shop? Open it here. Hamrun reads it the way your controller will, finds the lines that would stop the machine or hurt the bit, explains them, and plays the file so you can watch it.

or drop it here · .nc .ngc .tap .gcode .cnc .gc .txt

Your file stays on this computer. The check runs in this page; nothing is uploaded.

What it checks

  • Commands your controller doesn't know (M6 on GRBL, drilling cycles, O-word subroutines), on the lines that use them, with the controller's own error message where it has one.
  • Rapid moves through the stock, cuts deeper than the stock, moves off the bed or below zero.
  • Cutting with the spindle off or no feed rate, missing units, arcs the controller would reject.
  • Laser power above full, plasma torch below the plate, a file that doesn't end cleanly or was cut off.

If the file looks written for a different controller, Hamrun says so and suggests which one fits, by counting what each controller would reject. You pick; it never switches on its own.

Controllers it knows

  • Routers: GRBL 1.1 router (.nc), grblHAL router (.nc), FluidNC router (.nc), Makera Carvera / Carvera Air / Z1 (auto tool change) (.cnc), Marlin router (.gcode), LinuxCNC (also PathPilot-style controls) (.ngc), Mach3 / Mach4 (.tap)
  • Lasers: GRBL 1.1 laser (.nc), Marlin laser (.gcode)
  • Plasma tables: Plasma table (.nc), Plasma table (.ngc)

The file's extension only pre-selects one. Change it to match your machine and the check runs again.

What it doesn't do

  1. It doesn't change your file. It reports; your CAM program or post-processor makes the fix.
  2. It doesn't follow LinuxCNC subroutine calls. It says so, and the moves inside them aren't checked or drawn.
  3. It can't see your clamps, your real stock or your machine's acceleration. Run an air pass first.

Machine stopped mid-job?

Paste the message into the alarm and error decoder. If you want Hamrun to make the file in the first place, open the editor: every file it writes goes through this same check.