Join as a member and login to download the latest Autoleveller and AutolevellerAE:

Member Downloads

Try the free versions from the standard downloads section first:

Regular Downloads

A CNC Isolation milled PCB creation (circuit) without using the AutoLeveller
Figure 1: A CNC Isolation milled circuit without using the AutoLeveller
A CNC Isolation milled PCB creation (circuit) using the AutoLeveller
Figure 2: A CNC Isolation milled circuit after using the AutoLeveller

A problem exists when attempting to create finely etched products with a CNC machine where the work-piece material is not at the same height uniformly (and this is almost always the case). Even minute variations in height can cause the etching tip to be too high in some places and too low in others across the work-piece, causing varying degrees of disastrous effects.

To tackle this problem I created a software tool to adapt a GCode script and make use of the more advanced language features such as the parameters and mathematical expressions so that the script will first probe the board to be engraved then use the values gathered during probing to continuously adjust the height in the milling stage.

AutoLeveller can be used to transform almost any GCode script but was originally designed for the CNC PCB DIY enthusiast, and in these cases there are 2 possibilities when creating a homemade PCB. There is the popular chemical etching method which involves taking a blank copper board and etching your PCB design onto the board using a variety of chemicals. This, as its name might suggest can be a messy and hazardous affair but is a real alternative to the lengthy and expensive wait for a board house to manufacture your latest masterpiece.

The other method involves a CNC machine which can be used to engrave traces and pads etc. directly onto a copper board. No chemicals involved, but it can require a lot of skill, practice and experience. You can use the same machine to accurately and quickly drill the required holes for your IC’s and connection pins etc. as well, so this an arguably more convenient method of PCB creation. This also has some drawbacks however, the biggest of which is the inconsistency in height across the copper board. It might look perfectly flat but it almost certainly isn’t. This results in “air cuts”, as figure 1 shows.

The above images show the results of an early test of the AutoLeveller software. Figure 1. shows a circuit which has been etched without the aid of AutoLeveller. Figure 2. shows the same circuit etched with AutoLeveller. In both cases a 30degree 0.1mm V-shaped cutter was used and a depth of -0.1mm was set as the etching depth.

The AutoLeveller software is not a tool for PCB creation per se (for that I can recommend PCB-Gcode which is an add-on utility that essentially creates GCode files from your Eagle PCB designs) but is aimed at tackling this “unlevelled” issue by modifying the basic GCode script describing your circuit / design so that the problem can be corrected (autolevelled). Since it worked for me then it should be of use to others so I added a GUI interface for convenience and made it available for you to download and try as you will. Whats more, because the software is a stand-alone product, i.e. not attached to any CAD program or other tool and because AutoLeveller reads any Gcode file, you are not restricted to PCB’s and it can be used to autolevel other products too, as long as the surface has a conductive surface that is “probe-able”. This is shown in video 2.

I personally use the software for etching my PCB creations with V-shaped tools, and in fact I couldn’t get a good result without AutoLeveller. If I find it useful, then other CNC users should also benefit, therefore I have made it available to download and try.

The inconsistency in height could be caused by an uneven or unlevel table bed. Or there could be some flex in the board itself. There are several methods round this, including….

Bolt a sacrificial piece of wood to your table then use your CNC machine to mill out a pocket of about 1mm depth. The pocket should now be level in relation to your tool bit.
To remove board flex, you could use a vacuum table to ‘suck the board’ to the surface.

With or without these steps it makes sense to use the sensitive equipment in front of you and programmatically adjust the Z height depending on the current X Y coordinates and keep the tool at the desired height relative to the material. 

Video 1: A single side of a PCB is etched using the AutoLeveller to produce the necessary GCode file.

Video 2: 2-stage levelling is shown here with AutolevellerAE v0.7.6 and the use of the RPF file.

Video 3: Another user of AutoLeveller etches a design on a black anodized extruded aluminium half-case.


  1. AutoLeveller is easy to use. Just input a GCode file, change a few probing settings and output another GCode file.
  2. AutoLeveller is written in Java which means its platform independent and can be used in any OS. Linux, Windows, MacOS.
  3. AutoLeveller is not tied to any particular CNC control software. Currently, either LinuxCNC or Mach3 can be used.
  4. AutoLeveller is not tied to any particular Isolation or CAM software. AutoLeveller reads from a GCode file and it does not matter where that file is created.
  5. AutoLeveller stops your tool from going too deep. If a V-bit is used then going too deep will mean the traces are narrower than you intend as a V-bit is wider at the base. The tool may also struggle to cut at depth ruining the tool quicker.
  6. AutoLeveller stops ‘air cuts’ where the tool tip is higher than the surface and therefore no etching takes place.
  7. You can mill / etch at a much shallower depth when levelling. In the video, I am etching at -0.1mm whereas in the past I have tried -0.2mm which still produced ‘air cuts’.
  8. Ultimately this reduces waste as less boards are binned. In a way, AutoLeveller helps the planet. 🙂

The height adjusting CNC software