Chris Collins

Tools · fabrication

Post-processor G-code checker

Paste or open a CNC program posted from Fusion and check it against the controller it will run on — GRBL, grblHAL, Marlin, LinuxCNC or a Haas/Fanuc-style mill: unsupported codes, arcs it will reject, modal state the program relies on, feeds of zero, cutting with the spindle off, fast plunges, low rapids, moves past the machine's travel, and a run-time estimate.

Added

Works with

How to use it

The usual way to find out a program was posted for the wrong controller is error:20 halfway through a job, or a router that drills nothing because Marlin silently skipped the drilling cycle. This page reads the program the way the controller will, line by line, and tells you first. Everything runs in your browser.

How to use it

  1. Paste the program or Open file (.nc, .gcode, .tap, .ngc …). Two samples show the idea: the same bracket posted for a Haas-style mill (try it against GRBL) and posted for GRBL.

  2. Choose the controller, or leave it on detect: the page guesses from what is in the file — O program numbers and G187 look like Haas, E words and M104 like a printer, o100 sub and #<_name> like LinuxCNC — and tells you why.

  3. Set up the machine: its travel, where work zero sits in it (the distance from the X and Y minimum and down from the top of Z), rapid speed, maximum feed, acceleration, the stock top, a safe height for sideways rapids, a plunge limit and how long a tool change takes. A few presets are there to start from; the values are approximate, so put in your own.

  4. Read the findings, problems first. Click one to see its lines in the listing and in red on the top view.

What it checks:

  • Codes the controller doesn’t run. GRBL has no cutter compensation (G41/G42 — set Fusion’s compensation to In computer), no tool table (G43 H), no drilling cycles (G81–G89), and stops at M6. Marlin skips anything it doesn’t know without stopping. LinuxCNC doesn’t know Haas codes (G187, G103, M97). Haas has no G38 probing or G90.1. Words the controller doesn’t accept (D, H, Q, O on GRBL), lines longer than its buffer (80 characters on GRBL), % lines, o-words and expressions.

  • Arcs. An R arc whose radius is less than half the distance between its ends, a full circle written with R, a half circle with R (unstable), and I/J/K arcs whose end is not on the circle — GRBL and LinuxCNC reject a difference of more than 0.005 mm and 0.1 % of the radius (error:33). An arc straight after G41/G42.

  • Modal state. Units, absolute mode, plane, work offset and feed mode that the program uses but never sets. GRBL keeps these from the last job or jog until it is reset, so a program without a safe-start line can run in inches or incremental mode by accident.

  • Moves. Feed moves with no feed (or F0), cutting below the stock top with the spindle off or at S0, plunges faster than your limit, rapids sideways below the safe height or inside the stock, rapids down into the stock, a first sideways move before any Z is set, G28 with no intermediate point, G92 offsets, and the extent of the program against the machine’s reach (soft limits).

  • Run time: distance over feed (capped at the machine’s maximum feed) for cuts and rapids, an allowance for accelerating at each sharp change of direction, dwells and tool changes. Drilling cycles are expanded. Treat it as an estimate: a program of many tiny segments runs slower than this on a real planner.

Open in G-code viewer sends the program to the G-code viewer for a 3-D look and a line-by-line simulation. To run it, the G-code sender streams it to a GRBL machine. For feeds that suit the bit, see router feeds and speeds; to make the DXF the program came from cut cleanly, the DXF checker.

Limits

The controller notes come from their documentation (GRBL 1.1’s G-code parser, grblHAL, Marlin’s G-code index, the LinuxCNC G-code reference, Haas’s mill manual) and cover what Fusion’s posts actually write; they are not a full emulation. Optional build features (Marlin’s spindle and coordinate systems, GRBL’s M7) are reported as notes, not errors. Machine coordinates (G53) are not checked against the travel.

Browser support

Any current browser. Files up to about 40 MB.

Privacy

The program stays in your browser (it is kept in this browser’s storage so it is still there next time). Open in G-code viewer hands it over the same way. Nothing is downloaded from elsewhere.

Runs entirely in your browser; nothing you type leaves this page.