Skip to content
Simple utilities to manipulate and fix G-CODE files
Shell C
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This is a collection of simple tools used to fix and manipulate G-CODE files. They are aimed for use with laser engravers and were not even tested with anything else. I am using them to significantly improve raster images in the laser mode provided with GRBL 1.1 on my EleksMaker A3 Pro, but also to fixup some PCB-GCODE output to render correctly when facing dimension issues.

Functions like scaling in/out, mirroring, applying offsets, measuring the work size, scaling the beam intensity (spindle rate), applying a gamma correction, or optimizing the stream for laser mode so as to never stop are implemented.

There is no dependency beyond GNU awk which is present in any even minimalistic Linux distribution and should be portable enough to other awk implementations. It doesn't seem to contain any bashism though it that were the case they should be trivial to fix, hence bash is not considered as a dependency.

Raster mode is way faster because adjacent segments are merged with no modal state change so that the spindle speed only changes on the G1 commands. Thus the beam scans from left to right and right to left only adjusting its intensity. It can become very fast and the resolution is most only limited by the PWM frequency, the laser power and the material being engraved. Engraving at 2000 mm/min on wood with a 20W laser does works but at 1kHz pwm some dots start to appear.

An example of use with screen captures is described here :

You can’t perform that action at this time.